( gsimon | 2007. 07. 27., p – 15:36 )

Úgy látszik, egy apróbbság már a régmúlt idők ködébe veszett:
A programok a _memóriában_ futnak, a swap csak egy patkó, hogy ha valakinek mégis kevés a ram, akkor ha jóval lassabban is, de menjen valahogy a gépe tovább.
Elviekben a gép konfigurációját a feladathoz kellene megválasztani, azaz annyi ramot tenni bele, amennyire várhatóan szükség lesz a vele végzett munkához. Csak hát kezdetben drága volt a ram, ezért valaki írt egy swap mechanizmust, az emberek meg megszokták, hogy ramból végtelen van, így aztán tele van a világ olyan programokkal, amiknek nincs olyan, hogy elég sok memória.
Volt egy hasonló dolog anno: a lemezek röptömörítése, lást stacker és társai :). Az a kicsi vinyóból 'csinált' többet, a sebesség rovására. Nomármost azóta a vinyók kapacitása gyorsabban nőtt, mint a programozók trehánysága, így az összes ilyen szutyvadék szépen, illendően kikopott a köztudatból.
Nomármost, hogy véleményeznétek egy ilyen "vitát":
- a dblspace jobb, mert kétszer akkorának mutatja a lemezt, így ha egy program ránéz, nem adja fel azzal, hogy neki
úgysem lesz elég hely
- de nem, mert a stacker a jobb, mert az azt mutatja, ami garantáltan ráfér, aztán ha mégsem tudja az írásokat
tömöríteni, akkor sem a közepén áll fejre a gép a betelt lemez miatt
- de az én adataim igenis tömörödnek 2x-es szorzóval
- de az enyémek meg nem
stb. ?
A swap-et illetőleg: én egy reakciós vén kövület vagyok, aki nem végez nagy memóriaigényű feladatokat, így aztán abszolute semmi swap-ot nem használok, aztán ami nekem kell, az elfut, ami meg eszi a memóriát, az egy rakás virtuális trágya, amit zúzok is le azonnal. Ja, egyszer én is beadtam a derekam: amikor egy szépet esett a ram ára, beraktam még egy 256-os modult a gépembe.

Az válogatós OOM killert meg hadd ne minősítsem. Ha van egy köteg programom, ami rendesen fut (stabil), illetőleg van egy, ami épp kifutott a memóriából (átmenet állapot), akkor jöjjön valami, ami a stabilakat kezdi lebunkózni? Na neee! Ez semmi egyéb, mint az egész gép működésének a megbízhatatlanná tétele, én legalábbis jobban veszem, ha pl. egy apache szép rendesen fejreáll, mint ha a fejreállása előtt agyonvágná pl. az sshd-t is, mondván hátha elég lesz neki az a 3-4 MB, ami azzal felszabadul, ami aztán persze mégsem lesz elég, én meg még be sem tudok lépni, hogy átkonfiguráljak valamit, vagy egyáltalán újraindítsam.

Azt meg már csak mellékesen jegyezném meg, hogy megbízható rendszerek tervezésénél az első szabály, hogy stabil állapotot csak akkor hagy el az ember, ha előre le tudott fogni minden erőforrást, ami egy másik stabil állapot eléréséhez szükséges. Nincs swap, nincs "optimista malloc", nincs garbage collector, nincs dinamikus memóriakiosztás, memóriát menet közben csak visszaadni lehet, ha valamiről csak menet közben derül ki, hogy mennyi kell hozzá, akkor az vagy külön alfolyamat lesz, vagy kap egy előre ismert hard limitet.