[Megoldva] Memória szivárgás?

Fórumok

Olyan problémám van, hogy ~20 órai folyamatos uptime után, az Ubuntu 12.10 (desktop) felfalja az összes memóriát és a swap-ot is.

Van 4GB Ram + 1GB swap. Fel se tünt volna a dolog, hacsak filmnézés közben egyszer csak nem kezd el szaggatni a film és hihetetlenül lassú nem lesz a rendszer.

A free szerint 3803MB használt / 3231MB gyorsítótár, 224MB szabad. Mellette van 328MB swap.

Nem most kezdi el csinálni, csak eddig ráfogtam valamire. Volt hogy a NetBeans maradt egész este elindítva, de most csak a Deluge futott, ha kilépek se lesz jobb, szóval nem ő a ludas. A htop se ír semmi hasznosat..

Kérdésem: Hogy lehetne észlelni, hogy mi okozza a problémát? Unity? Kernel? Compiz?

--

Megoldás:
Röviden: vm.swappiness értékét csökkentettem 50-re.
Hosszabban: http://hup.hu/node/118728#comment-1519865

Hozzászólások

egyenként lövöldözöl míg fől nem szabadul.

command line: top
de amúgy biztos van valami gui -s megoldás is erre, ahol sorba tudok rakni memóriahasználat szerint appokat.

Kezdd azzal, hogy kikapcsolod a swap-et.

Az elengedhetetlen memóriaigény a fenti alapján 3803 - 3231 + 328 = 900 MB volt. A gyorsítótár nyilván a deluge miatt nőtt meg ennyire. Az inaktív processzek adatait lassanként kiírta swap-ra a rendszer, hogy minél több RAM-ot állíthasson a cache szolgálatába. Amikor elkezdett minden akadozni, akkor vagy valamelyik processz felébredt és be kellett lapozni az adatait, vagy a deluge miatt még több cache is jól jött volna, és a kernel elkezdett kötegesen kidobálni lapokat a swap-re.

Ez alapvetően helyes viselkedés szervercélú felhasználásnál (deluge), azonban te interaktívan dolgoztál (film); számodra fontosabb az alacsony válaszidő, mint a deluge hosszútávú diszkigénye. Kapcsold ki a swap-et, vagy maszatolj a vm.swappiness sysctl-lel. http://www.linuxinsight.com/proc_sys_vm_swappiness.html

Szerk: elszámoltam az elejét, javítva.

http://northernmost.org/blog/find-out-what-is-using-your-swap/

De ez nagyon csalóka, a valós swap (page rate) használat nélkül kb. semmit se jelent. Nekem fura, hogy a swappines 60-ról 50-re állítása ennyit számítson, főként filmnézés közben mit találhat ki a gép, hogy hirtelen annyi szabad memória kell neki, és nem tud cache-t eldobni, mindenképp swapolnia kel.

Nem igazán értem, de a cache az pont hogy nem kéne bezavarjon semmibe (mert elvileg rögtön felhasználható terület, nem lefoglalt, csak gyorsítótár). E miatt meg főleg nem kéne laggolnia a rendszernek.

Gondolom a Deluge folyamatosan olvasott a lemezről, közben pedig más program nem igazán volt aktív, így - jogosan - kiswappolt nem használt dolgokat hogy legyen hely a cache-nek.

Annyi volt a bökkentő, hogy azt is kiswappolta amire menetközben szükségem van. Kicsit túlreagálta a dolgot.

Nem biztos, hogy segít, de esetleg IO-ütemező váltás javíthat a dolgokon: sok vinyó-műveletkor nekem is akadoztak a dolgok, és a deadline ütemező bejött.
A /sys/block/ESZKÖZ/queue/scheduler fájl tartalmazza a lehetőségeket, és egyszerű echo IO_ÜTEMEZŐ > /sys/block/ESZKÖZ/queue/scheduler paranccsal átírható. Boot-kor a kernelnek adsz egy elevator=deadline paramétert. Bővebben itt.

Hát, ha nincs jobb dolgod, akkor érdekelne.
Nekem speciel mindennapi használatra a deadline sokkal jobban megfelel, mint a cfq (azt hiszem, ez az alapértelmezett, de talán mintha kernelfordításkor lehetne ezt állítani). Amivel gondom volt: pendrive-ra másoláskor (film, tehát giga nagyságrend) nem volt a gép "reszponzív" (vagy hogyis kell úgy mondani, hogy okosnak tűnjek), azaz pl. az egér is eléggé szaggatott. Amióta deadline lett, ilyen gondjaim nincsenek (és nem azért, mert már nem használok egeret :) ).