liunx, memória, cache, hit ratio

Fórumok

Hali,

A gépben van 2G RAM.
Ebből 1.5G cache-selésre használ.


free -m
             total       used       free     shared    buffers     cached
Mem:          2010       1986         24          0         53       1508
Swap:         3898          1       3897

Ki lehet valahogy találni, hogy miért van szüksége ekkora cache-re (=mit cache-sel) és hogy mekkora a hit ratio?

Hozzászólások

Nincs szüksége cache-re - arra a felhasználónak van szüksége, ha nem akarja feszt tekertetni a háttértárait. Ha zavar, hogy ilyen célra használja a memóriát, adott helyzetben kiveheted a gépből azt a másfelet, akkor nem fogja használni.

Majdnem az egészre.

Hogy processz szinten ki lehet-e találni, hogy mi használ cache-t?

1. Igen és 2. nem-igen.

1. Igen, ha a program saját cache-t használ, és arról statisztikát is vezet (pl. adatbázis kezelők) - tudom, ez így csalásnak számít. :)

2. Nem-igen: mivel költséges volna processzek szintjén vezetni a sikeres/sikertelen keresést, nem csinál ilyet a kernel, hacsak a legeslegeslegfrissebbek nem. Gondolj bele, hogy hívsz egy cat-et x fájllal. A cat processz jön és megy, a statisztikája meg maradna, tök feleslegesen, a következő cat felé semmi relevanciája nem volna.
A globális hr-nek persze volna értelmes jelentése, csak értelme nem sok. Úgy értem, azon felül, hogy az ember még több memóriát tesz a gépébe, kétféleképpen hathat rá: figyel arra, hogy új fájlokat ne olvasson be, ami nem az, amit legtöbben szeretnénk; vagy összedob egy-két ramdiszket a szívének kedves fájlokkal, ami egyáltalán nem az ördögtől való gondolat, ha a bizonyos funkciók sebessége tényleg fontos.

De a jó hír: a kernel *_vma_* és/vagy *cache* függvényeit meg lehet patkolni.

csak a ramdisk-hez tennék annyit hozzá, hogy logikusan végig gondolva talán ez az egyetlen felesleges, mivel ugye a kernel felhasználja cache-elésre a teljes lefoglalatlan memóriát, és mindig a leggyakrabban felolvasott adatot gyorsítótárazza. tehát amit a ramdisk-ben tartanánk, az úgyis bekerül a cache-be. ha meg azért szeretnénk ramdisk-et, hogy a szerintünk gyakran használt progik memóriában legyenek, attól még nem biztos hogy tényleg azok lesznek a leggyakrabban felolvasott adatok, és ráadásul feleslegesen foglalnák is a helyet a drága memóriából a többi művelet illetve adat elől.

ez az egész egy felesleges manuális gyorsítótárazás lenne, amit a kernel úgyis elvégez.

ha meg tudni, hogy egy speciális felhasználási módnál csak adott kevés számú adat olvasódik fel, ott meg ugye ha be-cache-eli a kernel, akkor ebből adódóan nem lesz más nagyon ezen kívül olyan új gyorsító tárazott adat ami ezeket felülírja.

Olyanokat tölt be cache-be amit gyakran használsz. Pl.: programok. Így nem kell, hogy állandóan a winyóról olvassa be. (winyó sebessége mondjuk 20 és 100 MB/s, a RAM-é több GB/s)

ez elképesztő.

tudom mi az a cache, csak azt nem tudom, hogyan tudnám megnézni, hogy melyik program (postfix? apache? más?) használja intenzíven a cache-t és milyen találati aránnyal.

nem a programok használják a cache-t, hanem a kernel kezeli. ha egy nagyobb fájllal csinálsz egy ilyet:

time cat file.iso > /dev/null

akkor elsőre valószínűleg sok másodpercig tart. másodszorra már gyorsan le kell futnia, mert amit egyszer beolvas a lemezről a kernel, azt bent hagyja a cahe-ben. miért ne használná ki, ha elérhető és szabad? ha kell programnak memória, akkor a cache az ami azonnal felszabadításra kerül először.

szerk.: minél nagyobb a foglalt cache, annál jobb. ezért pl. jó sok memóriát dugva a gépbe sok lemez I/O-t lehet spórolni.

~Dejavu érzés. Annó ezeket a képeket mutogatták Vistáról hogy nézd 1-2mb a szabad memória, a Linuxos fenegyerekek pedig fappoltak a képekre. Most hogy is van ez? :)

(Ott is cache volt a jelentős része, körülbelül ugyanez a felállás.)

Nem tudom egészen, hogy volt ez a dolog, de leginkább a Vista-féle szokások alapján működő (superfetch?) technikája volt a gondjuk úgy rémlik, ami akkor is tekerte a merevlemezt, amikor az ember nem gondolta volna. Azért, hogy az esetlegesen elindítandó programot előre cache-elje.

Ill. bootot követően nem bírták kivárni a folyamatos szöszölését...

Mondjuk tapasztalatom nincs erről, mert nem használtam Vista-át. Így lehetnek tévesek az információim. :)
No meg állítólag közben csiszoltak rajta.

Igen az volt az. Win7-ben is van, de sokkal jobban összerakott, nem látni azt a fajta üresjárati tekerést. Vista-n SP1 után szűnt meg talán? Nem vagyok benne biztos.

Nemrég volt egy felesleges Windows Server 2008 licenszem és gondoltam felrakom asztali gépre. Minden jól ment a legutolsó service packig mikor is kivették belőle a SuperFetch technológiát. Ami pedig asztali gépekre nélkülözhetetlen... vagyis .. mértékrendekkel növeli a használhatóságot.

Linux/BSD alá is jöhetne valami hasonló. Preload már valami, de ez csak bootnál tölt, képes kinyírni a GDM/KDM betöltését. Nem túl használható.

hát, sógorasszonynál w7 van, szintén NAGY memóriahasználat szinte alapszintű processzekkel>nagyjából 7-800MB. a cache/hypersuperfetch/akármi ezen felül van, persze egyre növekvő mértékben, de szintén nem kicsi. emlékeim szerint általában az alap 7-800MB-be szoktak volt (és lehet) belekötni.
szerk.: no, most megnéztem. rosszul emlékeztem: kb. 940MB. az alap. egy szinte csak netezésre haszált notebookon. miért is?

Véleményem szerint ez azért van mert egy 2010-2009-es operációs rendszert használsz, nem egy 1990-es évekből karbantartott homokozót. A MAC se fog kevesebbet enni. Most hogy a memóriát úgy fosták az emberekhez, 1-2 ezer forintból már lehetett venni, kétlem ez akkora gondot jelentene.

Egy mai gépen ez a mennyiség semmiség. 4gb a minimum, de már elég sűrűn van 8gb is. Van aki ezek fölé is ment, mivel lehet.

Én azt mondom hogy 4gb minimum kell a reszponzív működéshez. A reszponzív alatt nem azt kell érteni hogy szimplán gyors, hanem van hova becachelni, tud miből dolgozni BŐVEN. Van tartalék ,etc. De mivel már kb 2-3 éve is ennyivel szerelték a laptopokat... mégis ez miért lenne gond?

ez rendben lenne. csak ott hibádzik kicsit, hogy a rendszer önfenntartásához is egyre több kell. nyilván ez a "fenntartható fejlődés" része. nem érzed, hogy belekényszerítenek? erősebb gépet veszel, hogy gyorsabban menjenek a dolgaid. ezt sokan teszik. emiatt nagyobb igényű programokat kapsz, arra hivatkozva, hogy már simán viszik a korabeli gépek. csak lassabb lesz, mint eddig. de sebaj, hiyz már olcsóbb, mint volt, vegyünk még, hogy gyorsabb legyen. és új kör, amiből - sajna - nem maradsz ki.
szerintem ez egy végtelen történet, amiben csak árnybábok és szponzorok vagyunk. szerintem.
"hanem van hova becachelni, tud miből dolgozni BŐVEN.">de ez "BŐVEN" a os felesleges növekedésével

Nem mert ha kevesebb ram van a gépben, alapból kevesebbet eszik meg. Abban a mennyiségben már megjelenik az eldobható rész is, amit csak a felhasználói élmény érdekében eszik meg. A 8gb-s gépemen megeszik körülbelül 2gb-t. A 2gb-s gépemen 500mb körül van a fogyasztás. Memória függő.

ok.

szerk.:
bár így utólag azért csak érdekelne, melyek azok az otthoni környezetben futó alkalmazások, folyamatok, amelyek egy 15 évvel ezelőtti átlagos merevlemezt akár többszörösen is megtöltenének, és alternatív módon van rájuk szükség, memóriamennyiség függvényében? és mindez csak a valós memóriahasználatra vonatkozik, cache/superfetch/akármi ebbe még nem számít bele. tényleg érdekel.

Ez elég bonyolult kérdés ha mélyen belegondolsz. Régen nem volt semmiféle multimédiás igény, se többnyelvbevitel, se kibővített fájlnévkezelés, az emberek nem akartak VPS-t, megelégedtek azzal hogy működik.

Ha megfogod és lekarcsúsítod vLite-al, kis gépekre szép kis rendszereket lehet faragni.
(Windows Server 2008R2 is jó asztali gépre, csak kivették belőle a Superfetch technológiát, amit pedig szerettem volna használni. De érzésre jóval gyorsabb (nem véletlen).)

no, most kerültem egy win7 mellé. csak ie8 3 oldallal és taskmanager/erőforrás figyelő.
az eredmény:
http://dl.dropbox.com/u/4520169/win7_ie8_memory.png
a ténylegesen használt memória 1GB, a pre az még 500MB, meg mittomén. szerinted normális egy böngészőre ténylegesen 300MB használat? hol van ettől az FF memóriaéhsége?

________________________________________
"The vision of Christ that thou dost see
Is my vision’s greatest enemy."

csak megjegyzés, hogy a privát-tal számolj, és ne a munkakészlettel, mert ha jól gondolom ez utóbbi a virtuális mem-et hivatott jelezni, az meg egy üres epiphany is minimum 500 MB nálam érthető módon, míg a privát (amit a reszdens-ről fordítottak talán) olyan 30 MB. de nem biztos hogy jól értelmeztem a magyar fordítást. :)

Végigolvastam a topicot, nem rossz a téma.

Viszont szemet szúrt, hogy írtad 4 gigabyte a minimum a reszponzív működéshez. Azért kicsit ízlelgesd ezt 4GB szót, kicsit pörgesd át nyelveden. Nagyon rofl. (Tisztában vagyok a memória árakkal!)

Meg kinek mi a reszponzív. Én betöltök egy emacsot, Eclipset vagy Visual Studiot, míg hozok magamnak egy üditőt vagy kávét addig felszedi a configot meg a workspace filokat, és utána én órákig elvagyok. Talán még kelleni fog egy Firefox valamikor Googléra (meg Hupra :D), de tölheti magát percekig is akár.

Tehát nem érdekel hogy mit cachel a gép, és 3 percig egyhelyben áll míg felszed egy IDE-t.

Ha író lennék, nyilván beírnék az xinit-be egy OpenOfficet és amíg feltenném a kávét betöltene az X meg az OOo. Este meg shutdown azt kész.

Szóval relatív kinek mit jelent a reszponzív, a cache és kinek mennyi memória kell.

1gb és 2gb is bőven elegendő volt a működéshez, addig is betöltött. A 4gb-ot úgy értem hogy minden alkalmazást elő tud tölteni, vígan cacheből rántja elő a dolgok nagy részét. Ez már bőven távol van a reszponzívtól, mondjuk úgy, kényelem.

A reszponzivítás körülbelül 500mb körül kezd necces lenni, esetleg 1gb-ba nem igazán fér bele VS + Eclipse egyszerre. :)

egy ilyet találtam neked, én is úgy emlékeztem, hogy a cache nem fájlokat tárol, hanem gyakran felolvasott disk blokkokat.

tehát nem tudod kilistázni a mem cache-ből hogy melyek azok a fájlok, amelyek a legnagyobb cache-t foglalják, vagy éppen melyiket olvastatta fel a géped a leggyakrabban.

ha preload-ot használsz netalántán, akkor annak a logjában lehet olvasgatni, hogy milyen cache hit-ek vannak (hajólemlékszem).

A szukseges cache merete a teljes cache-elheto tartalom merete :)
A cache reszt nyugodtan szamold uresnek ha megnyugtat.

hit ratio:
oprofile (kis repulo vizsga)
systemtap/kprobes (erosen pilota vizsgas)
(Lasd meg ftrace)

slabtop erdekes lehet szamodra, de nem a kerdesedre add valaszt.

Amit nem lehet megirni assemblyben, azt nem lehet megirni.