Compcache

Adott egy MacBook Pro, amin Arch Linux-ot futtatok (3.0.1-es kernellel), 4 GB memóriával, de mindössze egy visszafogott teljesítményű HDD-vel.

A probléma eddig az volt, hogy a rendszer sokat swappel, leginkább akkor mikor hosszabb ideig hagyok futtni memóriaigényes alkalmazásokat a háttérben.

Próbálkoztam többek között a swappiness alacsony értékre állításával, sikertelenül, de most rátaláltam a compcache-re, ami bevált, a reszponzivitás nagyságrendekkel jobb.

A compcache lényegét tekintve egy zram eszközön tárolja a swappet (azaz tömöríti azt és a memóriába másolja).

Mivel elegendő memória áll rendelkezésre akár ramdisken is tárolhatnám a swappet (bár a megoldás a swappelés elkerülése lenne), ugyanakkor virtuális gépek futtatása során a zram eszköz megfelelőbb választásnak bizonyult, lévén visszafogja a memóriahasználatot, eddig a fallbackre sem volt szükség (azaz a HDD-re swappelésre).

Eleinte workaroundnak szántam a memóriába swappelést, elvégre a megoldás a swappelés elkerülése lenne, de a compcache alkalmazásával több memória áll rendelkezésemre, azaz lényegében a swappelés során a kevésbé használt, memóriában tárolt adatok továbbra is a memóriában tárolódnak, de kevesebb memóriát foglalnak. A processzorhasználat (Intel Core 2 Duo P8400) nem nőtt jelentősen.

Hozzászólások

> Adott egy MacBook Pro, amin Arch Linux-ot futtatok
szentségtörés :)

Nemigen, nem ütköztem bele semmilyen problémába.

A Quartz infrastruktúrát amúgy nem nagyon használnám ki, a Linux alatt futtatott Xorg alatt nem használok compositing ablakkezelőt, de még az antialiast sem fontok rendereléséhez, ahogy Firefox alatt a hardveres gyorsítást sem (bár a layers acceleration lehetséges, hogy alapértelmezetten engedélyezett, talán az XRender-t használja, bár nem vagyok biztos benne), a hardveres videógyorsítást sem (az overlay, azaz az XVideo kimenet megfelel, az energiafogyasztás valamiért alacsonyabb ezzel, mint VDPAU-val).

RAM-ba swappelés = infinite memory
----------------------------------------------------------
relaxen und watchen das blinkenlichten

Adott egy MacBook Pro, amin Arch Linux-ot futtatok
/o\

--
This is madness! Madness...? This is Sambaaaa!

Szerintem megérte, három dolog kellett, legyen strapabíró, legyen kompromisszumos OpenGL teljesítménye (integrált Nvidia-val ez alacsony energiafogyasztás mellett teljesül) és ha szükség van rá, mind OS X, mind Windows 7 és Linux futtatható legyen rajta.

Az már csak a bónusz, hogy ezek mellett teljesen zajtalan is, a trackpad a szokottnál nagyobb és kényelmesebb, a kijelző kontrasztaránya a szokottnál magasabb és van billentyűzet háttérvilágítás.

A W520-hoz alapkiépítésben is 380 ezer Ft-ért tudnék csak hozzájutni.

Az árcímkét leszámítva egyébként tökéletes.

"a bill hattervilagitas meg... minek ra egyaltalan barmilyen felirat"

A gyerekek szórakoztatónak találják a sötétben világító billentyűzetet, más érvet most nem tudnék mondani mellette.

Ez nyilvánvaló, de használtan a 3 éves MacBook Pro viszont mindössze 160 volt, szerintem megérte (többet nem adtam volna érte), korábban sem a Dell Latitude E6500, sem a Thinkpad T400 nem váltak be, azokért 130-at és 120-at adtam.

180-nál többet nem tudok (és akarok) erre költeni (legfeljebb kiterjesztett garanciákra), főleg, hogy ez a teljesítmény teljességgel elegendő.

Ez már ekkor* is hülyén hangzott. Az ötlet egy érdekes kérdést vet fel: az adat ki és betömörítéséhez cpu időt használunk fel. Ugyanez hagyományos esetben nem áll fenn, mert a dma kihasználásával a cpu csinálhat mást. Az igaz, hogy ha a háttértár nagyon lassú, az swapra kipakolt adatot így valószínűleg hamarabb érjük el (azaz látszólag reszponzívabb lesz a rendszer, hiszen a felhasználó alapvetően mindig csak egy taskra koncentrál), de abban egészen biztos vagyok, hogy a cpu hasznos munkával eltöltött ideje csökken (onnantól kezdve, hogy fut még legalább egy task azon kívül, amelyik a swapra kipakolt memóriaterületre vár). Azaz a kérdés: valóban gyorsul-e így a rendszer?

*: volt egy másik cikk valamivel később, abban már szó volt a tömörítésről is.

--
Don't be an Ubuntard!

Persze hogy működik: "azaz látszólag reszponzívabb lesz a rendszer". De tudok mondani olyan use case-t, amikor ez a módszer összességében (valószínűleg) lassítana a rendszeren, és nem gyorsítana.

Fogunk két taskot, az egyiken elindítunk egy processzorigényes feladatot, a másikat kidobjuk swap-re. Miközben ez fut, hozzuk vissza a swapre kirakott taskot a memóriába, és azon is indítsunk el egy processzorigényes feladatot. A kérdés, hogy melyik esetben fog mindkét processzorigényes task hamarabb lefutni. Ha több processzorunk van, növeljük a taskok számát.

--
Don't be an Ubuntard!

Nem gyakran futtatok processzorigényes feladatot és még akkor is tudok többet várni a befejezésére, a rendszer reszponzivitása elsődleges.

Ameddig nem tudok ebbe is SSD-t venni addig a legfontosabb a HDD intenzívebb használatának elkerülése.

A use case konkrétan ez volt ami miatt megoldást kellett keresni.
1. Fut 4-5 alkalmazás, köztük a Firefox. A memóriahasználat 1 GB körüli, swappet nem használ (a swappiness 0-ra állítása óta).
2. Elkezdek megnézni egy sorozatepizódot vagy filmet SMPlayerrel / nem használom a rendszert 1-2 óráig. A memóriahasználat fokozatosan csökken, swappelni kezd. (alighanem ennek elkerülésére van valamiféle megoldás).
3. Kilépek az SMPlayerből, használnám a Firefoxot, elkezdi intenzíven használni a HDD-t (a swapből a memóriába kerülnek az adatok, ez akár 10 másodpercig is tart).

Ugyanez van a háttérben futó virtuális géppel, időnként használnám, de amint ezt megtenném akár 30 másodpercet is várakozhatok rá.

Ez nincs többé compcachevel.

Nincs fallbackje, persze scriptet, daemont azt lehetne rá írni, hogy a memória elfogyása esetén legyen swapon.

A memóriában tárolt nem használt adatok tömörítése ennél célszerűbb.

Persze lehet még jobb lenne egy operációs rendszer ami automatikusan teljesítményorientáltan kezeli a memóriát (prefetching stb.) és megfelelően a swappet, a Windows 7 és az OS X ilyenek.

Nem olyan nagy hulyeseg. Egy modernebb gepben (mondjuk i5 vagy i7 vagy ezeknek megfelelo AMD) sok mag van, es - hacsak nem futtatsz valami nagyon durva tobbszalu szamitast, ezeknek csak egy resze van hasznalatban. Szoval a tomoritett swap lehet gyorsabb HDD eseteben (ugye kevesebb adatot kell kiirni), ill. memoria eseten is (tobb memoriad lesz).

--
Tudod te, mennyi lóvé fér egy Alstom-kocsi dobozába? :)) - laspalmas, VB

És mi a helyzet a hibernálással? Mert ha jól értem swap-od a hagyományos értelemben (hdd-n) nincs, szóval, ha hibernáláskor oda pakolná a memória tartalmát, akkor bepakolhatja (ha elfér), csak el is veszik, ha megszűnik a táp... Vagy én látok vmit rosszul? (Jó, tudom, lehet file-ba hibernálni stb, de az alapesetről beszélek)

<= Powered By Ubuntu & Gentoo Linux =>

'Software is like sex: It's better when it's free!'
By Linus Torvalds