Als je swapfile al niet meer dan 5% van je RAM hoeft te zijn, dan hoeft je swap partitie ook geen 2 x RAM te zijn.
Waar 2x RAM vandaan komt weet ik niet maar 1x RAM moet minimaal wel, of er moet wel iets heel geks zijn gebeurt.
Wat Unix type systemen normaal gesproken doen is pages uit RAM naar disk swappen. Als dan later de page weer nodig is dan wordt hij van swap weer naar RAM gehaald. Echter hier is wat slims, de page blijft ook op swap staan. Moet de page nu weer van RAM naar swap maar is de page niet veranderd dan is er totaal geen disk I/O nodig, immers de page staat al op swap en is nog in orde.
Wat het effect hiervan is, is dat na verloop van tijd al je RAM pagina's ook op swap staan, dus dat je swap minstens zo groot is als je RAM. Maak je swap kleiner dan moet je na verloop van tijd pagina's van swap wissen en heb je kans op nog veel slechtere performance.
Als je swap net zo groot is als je RAM heb je echter nog niets, de bedoeling is dat je virtuele geheugen groter is dan je fysieke geheugen. Dus als je swap 1.5 * RAM is heb je opeens 50% meer geheugen. Het kan ook nog met weinig performance verlies, sommige pages is RAM worden nooit gebruikt, die eindigen op swap maar worden nooit meer teruggehaald als ze niet worden gebruikt, en het vrijkomende RAM wordt voor pages gebruikt die wel actief zijn.
Als je zegt dat tegenwoordig swap kleiner kan zijn dan RAM dan betekend dat het bovenstaande mechanisme niet meer werkt. En dat dientengevolge swappen een stuk meer I/O en performance zal kosten omdat je pages van swap zal moeten wissen en dus later ook weer moet terugschrijven, ook al zijn ze onveranderd. Het enige waar me dit zinvol lijkt is als het systeem zoveel RAM heeft dat er nooit pages naar de swap hoeven, dus als je eigenlijk helemaal geen groter virutueel geheugen nodig hebt dan je fysiek al hebt.
Wat wel een optimalisatie is om code van programma's nooit naar swap te schrijven, die programma's staan al op disk dus kun je net zo goed van hun oorspronkelijke locatie halen. Dus feitelijk hoef je alleen data naar swap te schrijven. Maar dan nog heb je na een tijd alle fysieke pages op swap, pages die nog bij actieve programma's horen van swap gooien lijkt me zonde. Zelfs as de page in RAM is gewijzigd is het handig dat de page in swap al gereserveerd is en je geen moeilijke wissel toeren hoeft uit te halen om eerst ruimte te maken.
Wordt er tegenwoordig soms data compressie gedaan op swap data? Dan kan de swap file wel kleiner maar dan wissel je ruimte in tegen CPU tijd. Maar dan zal het ook afhangen hoe goed de data te comprimeren is. Je pages hebben dan ook geen vaste lengte meer dus allocatie beheren van vrije ruimte op swap wordt dan ook een stuk ingewikkelder.
De enige oplossing die ik zie voor een kleine swap file is zoveel RAM hebben dat je helemaal geen swap nodig hebt.