A chrome eszi meg a ramot?
„A chrome-nak semennyi ram nem elég!” „Régen bezzeg a brózer is gyorsabb volt!” „Ezek a mai programozók nagyon trehány munkát végeznek!” „Miért nem csinál valaki egy jobb böngészőt, mint ez a fostalicska?” „Én Operát használok, bicsiz!”
Ismerős mondatok a fentiek? Ki ne hallotta (urambocsá: mondotta) már ezeket az unalomig ismételve? És ki az, aki nem bólogatott rá elismerően, aztán felpattintottátok a sört/starbucks kávét, és elégedetten hátradőltetek? Nos, magadra ismertél? Ha igen, akkor gyorsan kezdjük egy fontos üzenettel: TE HÜJE FASZ!!!
Nos, először is szögezzük le, hogy egy mai modern browser mondhatni a legkomplexebb software széles-e világon. Komplexebb, mint az OS (szigorúan a kernelt nézve), komplexebb, mint a GTA V, és komplexebb, mint egy Oracle vagy akár egy WolframAlpha. Gyakorlatilag egy OS az OS-ben. Saját virtual machine-ja(i), azaz virtuális gépei, azaz egy sohalenemgyártott hardware-t…áááá… ez már túl bonyi kezd lenni hirtelen, nem? De! Szóval maradjunk annyiban, hogy ma egy böngésző az egyben a multifunkciós multimédiás központ, videokat nézhetünk vele, játékokat futtathatunk benne, 3d-t is támogat már jópár éve, sőt: egy komplett pécét is emulálhatunk vele. Lássuk be, hogy ez 15+ éve még elképzelhetetlen volt, mindenre külön-külön programot használtunk. A browser valójában csak az információk olvasására és közlésére szorítkozott, komplex feladatokat nem bíztunk rá. Ezen változtatott radikálisan a google v8 motorja. Első nagy demonstrációjuk a quake javascript-re való portolása volt (ioquake3d), ami megmutatta, hogy a browser már olyan önálló használható platformmá nőtte ki magát, mint a Windows, Linux, MacOS vagy az Android. Lehet fejleszteni komplex software-eket ebben a komplex software-ben. (Haladóbbak kedvéért: ez egy Turing-machine.)

Adja magát a kérdés a fenti kép láttán: vajon a Quake3-nak kell memória, vagy anno 0 byte kellett neki? Vagy 100kb-ban is elfért? Emléxik még valaki vagy legalább sejtések vannak? Igen, mindenki tudja: a quake3-nak kell ram. A leírás szerint 64MB, azaz 64 MegaByte, azaz 64,000,000 byte. Minimum ugye, de inkább több. Nos, ez miért lenne kevesebb akkor, ha brózerben futtatjuk? Sőt: egy virtuális javascript gépen! Nem, hát a 64-nél semmiképpen sem lehet kevesebb, inkább több lesz az. Viszont szemfüles poweruser-ek rögtön a feladatkezelő után nyúlnak, ahol fehéren-feketén látszik, hogy márpedig a chrome foglalta le a ramot! Tehát a Chrome szar, mert a Quake3 futtatásához legalább megeszik 100megát, de ugye inkább többet, mert még saját maga is ott van. Kész, rejtély megoldva: valóban a Chrome eszi meg a ramot, ennyire hátulgombolósok programozták. Ennyi…vagy mégse? Poweruser 2.0-ánk már inkább Shift+Escape-et nyom, amire bejön a Chrome saját feladatkezelője, erőltetetten vicceskedve: a táskamenedzsere.

Nos, brózerünknek saját task manager-e van, saját memóriakezelése van, saját cache-e van, tehát tényleg egy OS. Ez annyira nem analógia, hanem a vérvörös valóság, hogy jópár éve már a ChromeOS létezik, mint önálló operációs rendszer, és a Google ezzel adja a ChromeBook-jait. (A rutinos olvasók maguktól is kitalálhatták, hogy a ChromeOS “csak” a ChromiumOS forkja valójában.)
Remélem, most már kezd derengeni valami; és most fejtegessük kicsit bölcsészesen, hogy hogyan is jutottunk ide. Az Internetre hirtelen rászabadult többmilliárd ember, akiknek jelentős részének a fejében az van, hogy az Internet=Browser. Ez talán még szélesebb körben elterjedt hiedelem, mint a chromeszimegaramot. Annyira egysíkúak, hogy leragadtak a facebook-youtube-gmail szentháromságnál, így külön levelezőre, videoplayer-re, de ma már szövegszerkesztőre, táblázatkezelőre, vagy bármi egyébre sincs szükségük. Mindig van egy link, amire klikkelnek, és nekik ez kényelmes. Átnevelni nem lehetett őket, úgyhogy ki kellett őket szolgálni. Ebben volt üttörő szerepe a v8 motornak, és mára oda jutottunk, hogy sok embertársunknak a számítógép sem jelent mára többet, mint egy fullscreen browsert – mindent megtalál ott, amire igénye van.
Ááá, de minek bölcsészkedni, inkább folytatom a cikket, azaz mondom a 2. okot, amiért… CACHE! Érted? Cache! Tudod, mi az a cache? Buffer? Gyorsítótár? (vanilyenszó? sosenemhallottam, de wikipédia megmondta) Szóval hogy működik a számítógép? Van a processzor és a memória. Ezek nagyon jó barátok. Ennyi az alapkövetelmény – ennyivel egy Turing-gép már elketyeg. Van disk-cache, azaz háttértár-gyorsítótár – egyre szebb szavak, mi? Szóval ha kell a habtestednek a tavalyi fotó a nyaralásról, amit valami hülye ok folytán a Downloads folderben (bocs: mappában!) tárolsz, akkor először a vinyóról a képet tartalmazó bitek bekocognak a memóriába, onnan kiolvassa a cpu, és trükkös módszerekkel a videokártyád memoriájába zavarja őket, hogy lássál is valamit. De közben a központi memóriában is bentmaradnak, mert ha mégegyszer meg szeretnéd nézni a sörhasadat, akkor ne túráztassuk már feleslegesen a hdd-t/ssd-t/háttértárat/blockdevice-t. Ez a cache. Az egyorrú user ezt nem tudja, nekik készült a https://www.linuxatemyram.com/ weboldal, ami elmagyarázza, mint apa hülye fiának, hogy az nem baj, hogy az OS minden szabad ramot disk cache-re használ fel, hiszen ezt ő magában available-ként, azaz elérhetőként címkézi fel, amit bármikor felszabadít, ha valami proggi enne még a ramból egy harapásnyit. Szóval nem kell fosni, user szinten ezt nyugodtan számolhatjuk szabad ramnak, mert bármikor (nanoszekundumok alatt) szabaddá válhat igény esetén. Don’t fos!
És mint említettem volt, a browser egy önálló OS-nek (oprendszer, tudod) felfogható, így neki is van cache-e – szemfüles olvasók már az előző screenshot-on (bocs, eztmárhaddnemagyarul!) kiszúrhatták. A brózer úgy gondolkodik, hogy ha már lejött az internetről egy kép a ramba, és onnan a videokártyába és onnan a monitorba, akkor a ramban benthagyja, amíg senkit nem zavar. Like disk cache – pont, mint a háttértár-gyorsítár ← magyarosoknak. De nem csak képekkel csinálja, hanem – na, ki találja ki? -, hanem a már binárisra fordított javascriptekkel is. Ha egyszer lefordítottuk, és megkapjuk tökugyanazt, akkor ugyancsak ne kelljen ezzel a cpu-nak szöszölnie. Szóval minden frankó, minden ki van találva, nincs itt semmi probléma. Csak annyi, hogy ez OS szinten foglalt ramnak látszik, de brózer szinten nem. A Chrome van annyira intelligens (AI, mesterséges intelligencia!!!), hogy ha látja, hogy kevés szabad ram van az OS-nek, akkor eldobálja a saját cache-ét, és visszaadja az OS-nek. (Valójában ez 3-4 sor, de hívjuk AI-nak, mert manapság már a kilincs is mechanikus AI, ami lenyomásra automatikusan ki tudja nyitni az ajtót.) Még sőtebb: visszamenőleg tárolja az előzőleg megnyitott oldalakat (tabokat), hogy ha egy visszagombot nyomsz vagy egy reopent, akkor ne kelljen újra renderelnie, csak előhozza a cache-ből. Ezt lehet állítgatni is, meg azt is, hogy az os-nek mindig mennyit adjon ( –mem-pressure-system-reserved-kb=1000000 vagy –aggressive-cache-discard ), de én aszondom, hogy inkább ne buzeráld!
Csináltam erről egy táblázatot is; remélem, értékelitek a fáradozást!

Ami zöld, azt vehetjük itt nyugodtan szabadnak. Pont ugyanolyan kedvvel használja újra a brózer vagy a kernel (kernel=OS), mintha szabad lenne. Tehátakkorösszefoglalva: Ha a Doom2 DOS alatt 2 megán nem indul el, 4mega ramot meg felhasznál bármikor, akkor MEGETTE A DOS A RAMOT??? Ha a GTA V becuppant 5giga ramot induláskor, akkor A WINDOWS MEGETTE A RAMOT?!?!? Ha a facebook és díszes javascriptjei 1giga ramot kérnek a brózertől, akkor A BRÓZER ETTE MEG A RAMOT??? IGEN??? MONDD MÉGEGYSZER, TE FASZ!!!