To s tim, ze swap ma mit min. dvojnasobek velikosti RAM, to ma i vazne nejaky rozumny duvod, nebo to vsichni tvrdi jen proto, ze to vsichni ostatni tvrdi ? Prece jestli ma nekdo rekneme 128MB RAM a spocita si, ze pres 192MB nepreleze ani nahodou, tak snad nema smysl si delat 256MB swap, kdyz bude stacit 64MB. Nebo ne ?
Jadra rady 2.4 jsou pomerne znacne narocna na swap. To je oficialni stanovisko vyvojaru kernelu. Presny odkaz vam tady nenapisu, ale prohledavanim kt.linuxcare.com nebo archivu mailinglistu linux-kernel to najdete. Takze je rozhodne doporuceno ten swap 2xRAM mit. Pokud ovsem nepouzijete nejake specialne opatchovane jadro.
Ten dvojnasobek je spis orinetacni. Hodne zalezi na disku. U tech novejsich (nad 10G) uz moc na tom kolik swap zabere na disku nezalezi a tak bych doporucil delat swap s ohledem na to, ze uz se disk nebude nikdy prepartisnovavat, tedy 256M minimalne, ja mam doma 512, sice jsem to nikdy nevyuzil, ale zase muzu klidne spat:-)
Moje osobni zkusenost je takova, ze na pocitaci s 80MB pameti s KDE 2.1, mozillou apod. neni swap takrka nikdy pouzivan a pokud ano tak do nejakych 20MB.
Pokud tedy mate dost pameti tak se muzete klidne spokojit s 1x velikosti pameti (obzvlast pokud je to v kombinaci s malym diskem). Vic ale nemuze nijak skodit.
Jestli se muzu taky pridat, u swapu neni ani tak podstatne kolik tam toho umistite, ale jak rychle to tam umistite.
Reknete-li si, ze mate 80 MB pameti a budete potrebovat celkem tak 120 MB (tedy dalsich 40 MB) - "no tak teda udelame 40 MB swap" ... tak docela presne to neni.
Swap funguje tak, ze kdyz potrebuju dostat do pameti neco dalsiho, co uz by se tam treba nemuselo vejit, tak nejaky jiny proces (ktery to chudak ani netusi protoze prave spi) vezmu a hopnu s nim na swap.
Cim driv najdu dostatecne velky misto tim lip (usetrim cas na hledani). Cim min to bude fragmentovany, tim taky lip (disk cte docela rychle vkuse, ale radove pomalejsi je prenastavovani hlavicek).
Empiricky je jednonasobek pameti minimum (pripad kdy proces nebo vicero procesu ktere by se normalne vesly do pameti vsechny potrebujeme vysypat na swap, abychom tam dostali neco jinyho) naopak trojnasobek uz je zbytecne moc, protoze dalsim zvysovanim swapu se uz hledani volneho mista neurychli(uz je ho tam az az). Ten dvojnasobek je proste neco mezi.
Osobne si myslim, ze ten vypocet spravny velikosti swapu je jeste trusku slozitejsi. Pokud mate malo pameti (8 - 16 MB) je velka pravdepodobnost, ze ji zaplnite i dvakrat, takze bych doporucoval jit s velikosti swapu az na trinasobek. Pokud mate vic nez 32 MB, tak pro beznou praci (beznou praci samozrejme nemam na mysli vytizeny server), tak vam bude dvojnasobek rameti bohate stacit. Dokonce si myslim, ze swap vetsi nez 256 MB nevyuzijete. Jinak tomu muze byt u pocitace, na kterem bezi stovky procesu.
To je ale otazka, jestli radsi velmi zatizenemu serveru neprikoupit pamet, nez mu delat vetsi swap. On totiz bude spis zatizen kvuli tomu, ze musi porad swapovat, nez kvuli tomu, ze po nem furt nekdo chce nejaka data.
Ja mam na serveru 256MB RAM a na swapu je prumerne obsazeno tak 20MB i kdyz celkem ma velikost nejakych 400MB. Kupodivu tech 20MB bylo i kdyz bezel jen se 128MB RAM. Je to webovy server, kde prakticky bezi pouze 100x httpd a 100x mysqld. Tohle vsechno zvlada AMD K6-2/400 naprosto v pohode.
S tim swapem nemas docela pravdu. To, cemu rikame swapovani, jsou ve skutecnosti dve ruzne operace.
1) swapovani: ulozeni celeho procesu do odkladaciho prostoru -- swapu.
2) strankovani: ulozeni v posledni dobe nepouzivanych stranek do odkladaciho prostoru a nahrazeni temi, ktere jsou prave potreba. (De facto se "odswapuje" kus procesu)
Castejsi je v podstate ad 2).
A program muze klidne pracovat s vetsi pameti, nez ma system fyzicke RAM, akorat disk zacne rachtat a neda se skoro pracovat :)
IMO:
strankovani = organizace fyzicke i virtualni pameti, kde je pamet rozdelena na konstantni kusy (4K na IA32)
swap = obsah jedne fyzicke stranky se ulozi do swapu a nahraje se jina (ta co je potreba)
jinymi slovy se do fyzicke stranky nahraje jina virtualni stranka, nez tam byla
nezajimal se nekdo nahodou ve zdrojakach, jak je osetreny swapovani, jestli je treba optimalizovany i pro pripad, ze mam 3 swap partisny na jednom fyzickym disku.
jestli treba linux pocita i s fyzickou geometrii disku?
jako treba jedna partisna vyjde na vnitrni dalsi na stredni a posledni na vnejsi stopy? jestli pak hlavicky litaj jak si jadrou blbe nebo dobre poruci z jedny strany na druhou? pripadne jak by to pak bylo s rozhodovanim pri fragmentovanym swapovacim prostoru?