2011. május 5., csütörtök

Memória upgrade 8GB-ra

Kivételesen egy rövid történetet osztok meg, leginkább azért, hogy a megörökítsem ennek a történelmi lépésnek az okait, megoldását és eredményét. Ha olvastad az elmúlt hónapok bejegyzéseit, akkor nagyjából képben vagy, hogy erősen használom a Virtualbox virtualizációs megoldását. Az okok egyszerűek
  • így egymástól elszeparáltan tudom tartani az egymáshoz nem illő fejlesztői és support környezeteket
  • sandbox-nak és tesztelési környezetek ki vannak alakítva (több oprendszeren)
  • könnyen, gyorsan menthető, átadható másnak
  • stb.
Mindezt teszem egy HP Compaq 8510w notebook-on, amin Win7 Pro 64bit fut és 4 GB RAM-mal áldotta meg a gyártósor. A problémák itt jelentkeztek az elmúlt hetekben. A gépben egy Core 2 Duo processzor fűti a szobát 2.4GHz-en, és azt kell, hogy mondjam, hogy gond nélkül kezel akár 2 futó virtuális gépet is párhuzamosan. Ami kevésnek bizonyul ilyenkor, az a memória. Gyorsan be is vágom ide az erre vonatkozó resource monitor által mutatott állást - amit a Win7 produkál - mindenféle extra futó alkalmazás nélkül:


Az ábrában található értékek több hete futó (csak sleep-elni szoktam) gép memóriahasználatát mutatják. Mint látszik vezet a svchost és nyomban mögötte ballag a skype. (itt azért erős leszek: bzmg, 150MB egy taskbarra lehúzott nyugalmi állapotban levő, éppen különösen semmit nem csináló alkalmazás memóriafoglalása??? He?) Ami érdekes a képen az a legalsó sor, ami így néz ki némi magyarázattal:
  • Installed: 4096 MB - ez rendben van, tényleg ennyi az ennyi
  • Hardware reserved: 65MB - mondhatnám na bumm, ha ennyi kell neki, hát ennyi kell neki
  • In use: 2121 MB - na ezt egy kicsit túlzásnak érzem, de mint mondtam, ez alapvetően egy fejlesztő gép, mindenféle adatbázis és webszerverrel, kommunikációs progival, vírusirtóval, meg egy igen nagy és gyors operációs rendszerrel.
  • Modified: 59MB - ez olyan memória, amit először diszkre kell írni, és csak utána lehet felszabadítani - nem sok, sosem volt sok.
  • Cached/Standby: na itt a dolog rákfenéje. Ez olyan lefoglalt, használt memória, ahova a Win7 betárolja azokat az állományokat, kódrészleteket, amiket a felhasználó és a processek gyakran töltenek ki-be, de éppen nincsenek használatban. Ez egy ritka hasznos találmány, ettől lesz gyors a rendszer, ettől indulnak a gyakran használt alkalmazások pikk-pakk. A mérete viszont nem kicsi. Mint a lenti sorban látszik ezt a memóriát a Win7, mint available - tehát, mint elérhető memóriát aposztrofálja, hiszen ha bármilyen processznek memóriára van szüksége és az nagyobb, mint a Free-vel jelzett terület, úgy ebből a részből ad neki, úgy, hogy felszabadít annyi helyet, amennyi csak szükséges.
A fenti memória eloszlából adódóan, ha elindítunk egy virtuális gépet, amelyhez hozzárendeltünk 1024 MB memóriát a következők fognak történni:
  • Virtuális gép elindul, memória lefoglal (itt tegyük hozzá, hogy a virtuális gép annyi memóriát foglal csak le a fizikai memóriából, amit valóban használ, tehát nyugodtan deklarálhatunk akár 2GB memóriát is neki, ha az csak 400MB-t eszik, akkor annyi is lesz lefoglalva). Ha WinXP-t futtatok, az nem szokott megállni 600MB alatt, ezért tud akár két virtuális gép egymás mellett dolgozni, hiszen a fenti ábrából jól látszik, hogy kb. 1.8GB elérhető memóriával tudok gazdálkodni.
  • Mivel nincs elegendő free memória, a Windows eldobálja a cache tartalmát, a futó processek nem aktív memóriáját kitolja a host gép virtuális memóriájába, tehát diszkre.
  • Minden megy, mint a karikacsapás. És valóban, a gépek gyorsak, működnek.
  • És itt jön, az, ami az őrületbe kergetett. Amikor bezárom a virtuális gépet, a Windows észreveszi, hogy felszabadult egy rakás memória, ezért elkezdi visszatölteni a cache-elendő állományokat. Ez természetesen intenzív diszkművelettel jár, ami mint tudjuk az egyik legszűkebb keresztmetszet egy gép működésében. Ez a művelet azt okozta, hogy bár a virtuális gépem szaladt, a host rendszer a kilépés után legalább 1-2 percig használhatatlanság közelébe lassult, hiszen egyszerre cache-lt, egyszerre szedte elő a virtuális memóriába tárolt adatokat és egyszerre próbált valamilyen alkamazást betölteni, aminek egy darabkája sem volt már a cache-ben. Mindhárom eljárás diszket használt, eredmény: hátra- és/vagy kardbadőlés.
Elhatároztam, hogy véget vetek ennek az áldatlan állapotnak, és mivel a 8510w a HP egyik csúcs business gépének számított megjelenésekor, így támogatja, hogy mindkét bankban 4-4 GB SODIMM memória foglaljon helyet. (azt megemlíteném, hogy a leírás szerint nincs így, és a HP azóta sem javította - viszont a 8710w, ami ugyanez a hardware csak 17-es monitorral, ott már jól szerepelt és ez is volt a valószínű, valamint a fórumokban is ezt írták). Első kudarc: Magyarországon beszerezni egy 2 éves PC2-5300 200-PIN DDR2 667MHz memóriát, mint kiderült lehetetlen. Egyetlen helyen találtam, darabját kb. 40 ezer forintért, de ott sem volt raktáron. Megoldás: google: "Memory upgrade 8GB HP 8510w". Természetesen találtam az USA-ban, kis levelezés árán hajlandók voltak el is küldeni balkániába, miután elutaltam nekik az összeget, elküdltem a hitelkártya fotóját és kitöltöttem valami marhára szükséges dokumentumot kézzel és szkennelve elküldtem nekik. Lényegében megértem, balkánia az balkánia. Az ára a 2db 4GB modulnak szállítással együtt 31 ezer kemény magyar forint. 3 napon belül meg is érkezett, vám persze elkapta (mondjuk én is elkaptam volna, ha a cucc egy PRO MEMORY UPGRADE feliratú piros dobozban jön..) + 9 rugó kifizet, doboz feltép és meglepődés. A várt 667-es memória helyett 2 db 4GB-s 800-as memória érkezett. Nagylevegő, felkészülés a BIOS 3 csipogására, win7 boot failure-re, kékhalálra, lakástűzre. De nem. Notebook egyet csippan, Windows bootol (egy hangyányit sem gyorsabban, mint eddig), login, hurrá. Persze még ekkor is volt némi bizonytalanság, hogyha megnyitom a System abalkot, mit fogok találni, 4GB vagy 8GB? 8GB. Resource monitor képe alant:


Ez a restart utáni állapot, mint látható szinte minden megegyezik az előzőekkel, annyi különbséggel, hogy a free memória az 4GB felett van. Tapasztalatok:
  • a rendszer fikarcnyit sem gyorsabb, mint volt
  • a winyó viszont szinte már sohasem villog munka közben, hozzáteszem jelen pillanatban a cache-lt cuccok mérete 2.2GB, viszont nem nő.
  • a virtuális memóriát visszavettem az ajánlott 12GB!-ról 4GB-ra, hiszen most van hely a fizikai memóriában, használja azt
  • ami még várható: állítólag a standby time csökken, hiszen ezek a memóriák többet zabálnak - de ezt nem hiszem, valamint nem is szempont egy ilyen desktop jellemzőjű gépnél
Mára ennyi, lehet irigykedni :)

Update: Pár napos használat után a memória térkép a következőképpen néz ki:


A cached memória már 3.4 GB felé kanyarodik, kíváncsi vagyok, mikor éri el azt a szintet, amikor már nem nő tovább. Az általános tapasztalat viszont egyértelműen az, hogy a windows lényegesen kevesebbszer nyúl a merevlemezhez, napközben, nyitott alkalmazásokkal szinte sohasem villog a led. Végső konklúzióként: 8GB RAM az a memóriaméret, ahol a Windows "jól érzi magát" és ami egy általánosan zsúfolt fejlesztői gépbe napjainkban szükséges. Sajnos.

Update2:
Egy screenshot 3 egyidőben futó virtuális gépről: 2 winxp (az egyikben egy futó Borland Delphi, míg a másik egy support környezet) + 1 redhat ES. A processzor stabilan 25% környékén, az üres fizikai memória elhasználva, de a cache-lt memória még közel érintetlen. (azért a térképen látszik, hogy a Windows addig tölti a memóriát, amíg csak lehet, így egy hét után a cache-re foglalt memória több, mint 4GB!)



2 megjegyzés: