Valami megeszi a memóriámat, Ubuntu 16.04-es alatt.
A nap folyamán szépen, folyamatosan növekszik a lefoglalt memória mérete, egészen addig, hogy a 16GB rendszermemória mind elfogy és még a swap-ből is foglal 3-8GB-ot.
Ha kilépek a a legnagyobb memória használó programokból (VirtualBox, ThunderBird és Firefox), akkor felszabadul sok memória, ~8-10GB-t, de a swap nem ürül és egy rakat memória marad foglalva a rendszermemóriában is.
Ezután indítok egy swapoff -ot. Ez mintegy 20-40 perc alatt átpakolja a dolgokat a rendszermemóriába. Ez is miért ilyen borzalmasan lassú? Mindegy, ez nem érdekelne különösebben, ha nem fogyna ki a memóriám.
Ezután ürítem az összes cache és buffer memóriát a
vmstat -s && sudo sync && echo 1 | sudo tee /proc/sys/vm/drop_caches && vmstat -s
vmstat -s && sudo sync && echo 2 | sudo tee /proc/sys/vm/drop_caches && vmstat -s
vmstat -s && sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches && vmstat -s
vmstat -s && sudo sync && echo 4 | sudo tee /proc/sys/vm/drop_caches && vmstat -s
parancsokkal, de alig valamit fogy.
Ezután még mindig maradt rengeteg, a mai nap pl. 9GB inactive memóriám.
> vmstat -s
16353932 K total memory
1066652 K used memory
776020 K active memory
9212624 K inactive memory
6112500 K free memory
144 K buffer memory
9174636 K swap cache
17407996 K total swap
0 K used swap
17407996 K free swap
485675 non-nice user cpu ticks
7309 nice user cpu ticks
2367435 system cpu ticks
26530867 idle cpu ticks
195613 IO-wait cpu ticks
0 IRQ cpu ticks
1492 softirq cpu ticks
0 stolen cpu ticks
23080588 pages paged in
23883239 pages paged out
950019 pages swapped in
960659 pages swapped out
56814181 interrupts
352367372 CPU context switches
1487224431 boot time
19722 forks
Hogyan lehet megnézni, hogy ezt melyik programok foglalták?
Hogyan lehet rávenni a rendszert, hogy ezt az inactive memóriát is szabadítsa fel?
Előre is köszönöm a hasznos tanácsokat!
Megoldás:
A telepített bootchart programot kell letörölni. Részletek itt.
- 4456 megtekintés
Hozzászólások
Megis hogyan szabaditsa fel a *hasznalt* memoriat a rendszer? Itt bizony fogalomzavar van, csakugy, mint a drop_caches hasznalatanal, mert ami tenyleges hasznalatban van, az szinte azonnal visszaugrik a page cache-be. A hasznalt swap merete miert zavar? Oda kerulnek ki azok a lapok, amiket nem nagyon hasznal a rendszer (peldaul azert, mert inactive). Ha tenylegesen aktiv swapping van, az persze egeszen mas. Mindenesetre 10GB memoriahasznalat nem gyenge. A top mit mutat, mik foglaljak a legtobb memoriat? Amugy 16GB swap (plane, ha nem SSD-rol van szo) igencsak tulzasnak tunik, reg rossz, ha GB-okban merheto az aktivan hasznalt swap.
- A hozzászóláshoz be kell jelentkezni
> Megis hogyan szabaditsa fel a *hasznalt* memoriat a rendszer? Itt bizony fogalomzavar van
Inactive memory is memory that was allocated to a process that is no longer running.
Tehát azt a memóriát kellene felszabadítani, amit korábban használt olyan process, ami már nem fut. Ez a memória jelenleg nincs használatban.
> A top mit mutat, mik foglaljak a legtobb memoriat?
A top csak a jelenleg is futó processek memóriafoglalását mutatja. Ha megnézed, az active memória mindössze 1GB alatti.
- A hozzászóláshoz be kell jelentkezni
Bocs, de ez netto hulyeseg, aki irta, az finoman szolva is fogalmatlan volt.
- A hozzászóláshoz be kell jelentkezni
Én csak ilyeneket találtam, a CentOS doksijában pl. ezt:
Inactive — The total amount of buffer or page cache memory, in kilobytes, that are free and available. This is memory that has not been recently used and can be reclaimed for other purposes.
Akkor meg tudnád mondani, hogy szerinted mi az Inactive memory?
Esetleg valami építő jellegű dolgot?
- A hozzászóláshoz be kell jelentkezni
Amikor kikapcsoltad a swapet, akkor minden ment a swap cache-be, amiből a kernel újra ki fog swapelni a diszkre amint memória kell valaminek. Az inaktívnak jelölt lapok a swap cache-ből kerülnek ki. Az inaktív memória csak egy flag, nem allokációt jelöl, amikor a kernelnek memória kell, akkor az allokált memória azon részéből fog felszabadítani ami az inaktív listán van - ennyi a szerepe.
A CentOS definíciója nagyjából helyes, az első definíció viszont valóban komplett hülyeség. Nézd meg, hogy melyk processz lapjai eszik a swapet:
$ grep VmSwap /proc/*/status | sort -nk2
Esetleg másold be a /proc/meminfo tartalmát ide amikor úgy érzed, hogy elfogyott a memóriád.
Egyébként sose akard felszabadítani az összes memóriát, nem mész vele semmire.
- A hozzászóláshoz be kell jelentkezni
> Az inaktív memória csak egy flag, nem allokációt jelöl, amikor a kernelnek memória kell, akkor az allokált memória azon részéből fog felszabadítani ami az inaktív listán van - ennyi a szerepe.
Pont ez nem történik meg! Amikor az inactive memória kifogyasztja az összes rendszermemóriát (vagyis a nagy részét, mert a swappiness 10-re van állítva), akkor elkezd swap-pelni, ahelyett, hogy az inactive-hoz nyúlna.
> Nézd meg, hogy melyk processz lapjai eszik a swapet:
Nem a swap-pel van a baj, hanem az ismeretlen inactive memóriával, ami szép lassan, vég nélkül növekszik. Ha a swap-et kikapcsolom, akkor ha kifogy a rendszermemóriából, akkor elkezd processeket kilőni (pl. Virtualbox), pedig ~8G inactive memória van.
Ha majd elkezd swap-elni, akkor figyelni fogom. Köszi!
> Egyébként sose akard felszabadítani az összes memóriát, nem mész vele semmire.
Nem azt akarom felszabadítani, hanem azt szeretném, hogy ne nőjön vég nélkül az inactive memória, és ha szükség van rá, akkor pedig használja!
- A hozzászóláshoz be kell jelentkezni
Egy ideje elkezdett swap-pelni, már 1,6G swap-et is foglalt, az aktív processek közül alig valami foglal swap-et.
> grep VmSwap /proc/*/status | sort -nk2
/proc/9678/status:VmSwap: 0 kB
/proc/self/status:VmSwap: 0 kB
/proc/thread-self/status:VmSwap: 0 kB
/proc/1806/status:VmSwap: 4 kB
/proc/1416/status:VmSwap: 28 kB
/proc/2625/status:VmSwap: 32 kB
/proc/1435/status:VmSwap: 120 kB
> vmstat -s
16353932 K total memory
7924968 K used memory
2245904 K active memory
7064620 K inactive memory
169784 K free memory
28520 K buffer memory
8230660 K swap cache
17407996 K total swap
1637460 K used swap
15770536 K free swap
Ahogy látszik már a használt swap-ből is csak ~180kB-t ami aktív, a többi ~1,6GB pedig inactive lehet.
- A hozzászóláshoz be kell jelentkezni
Most ezeket egyszerre:
[code]
$ awk '/VmSwap/{ t += $2 } END{ print t" KB" }' /proc/*/status
$ env df -Tt tmpfs
$ vmstat -s
[code]
- A hozzászóláshoz be kell jelentkezni
> awk '/VmSwap/{ t += $2 } END{ print t" KB" }' /proc/*/status
260 KB
> env df -Tt tmpfs
Fájlrendszer Típ. 1K-blokk Fogl. Szabad Fo.% Csatol. pont
tmpfs tmpfs 1635396 18008 1617388 2% /run
tmpfs tmpfs 8176964 616 8176348 1% /dev/shm
tmpfs tmpfs 5120 4 5116 1% /run/lock
tmpfs tmpfs 8176964 0 8176964 0% /sys/fs/cgroup
cgmfs tmpfs 100 0 100 0% /run/cgmanager/fs
tmpfs tmpfs 1635396 80 1635316 1% /run/user/1000
> vmstat -s
16353932 K total memory
7782960 K used memory
1319908 K active memory
6257956 K inactive memory
2089376 K free memory
1128 K buffer memory
6480468 K swap cache
17407996 K total swap
2908076 K used swap
14499920 K free swap
- A hozzászóláshoz be kell jelentkezni
Eh, ez a "vmstat -s" végig megtévesztett, azt hittem, hogy a "swap cache" megegyezik a /proc/meminfo "SwapCached" sorával, pedig köze nincs hozzá.
Hagyjuk ezt a vmstat-ot, mutasd plz a /proc/meminfo tartalmát.
- A hozzászóláshoz be kell jelentkezni
Az inactive memória nem fogyaszt ki semmit. Valami más fogyasztja ki, aminek az egyik tulajdonsága, hogy inactive listán van.
Nem tudom, hogy magyarázhatnám másképp.. Mondjuk ez olyan, mintha azt állítanád, hogy a feketék ragadozók. Részben igaz, mert a fekete kutyák tényleg ragadozók. :)
- A hozzászóláshoz be kell jelentkezni
> Az inactive memória nem fogyaszt ki semmit. Valami más fogyasztja ki, aminek az egyik tulajdonsága, hogy inactive listán van.
Persze, én is így értem. Olyan, mintha valami erősen memory-leakel-ne.
Az a kérdés, hogyan lehet ennek a valaminek a nyomára bukkanni, mert nincs olyan process, ami az induláshoz képest 6-8G-val többet foglalna.
A /proc/meminfo talán beszédesebb:
> cat /proc/meminfo
MemTotal: 16353932 kB
MemFree: 2022116 kB
MemAvailable: 2294408 kB
Buffers: 1936 kB
Cached: 6329968 kB
SwapCached: 103856 kB
Active: 1406076 kB
Inactive: 6240096 kB
Active(anon): 1036800 kB
Inactive(anon): 6114796 kB
Active(file): 369276 kB
Inactive(file): 125300 kB
Unevictable: 48 kB
Mlocked: 48 kB
SwapTotal: 17407996 kB
SwapFree: 14499920 kB
Dirty: 136 kB
Writeback: 0 kB
AnonPages: 1210540 kB
Mapped: 6772144 kB
Shmem: 5837292 kB
Slab: 175484 kB
SReclaimable: 66964 kB
SUnreclaim: 108520 kB
KernelStack: 10576 kB
PageTables: 47740 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 25584960 kB
Committed_AS: 19860284 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
HardwareCorrupted: 0 kB
AnonHugePages: 509952 kB
CmaTotal: 0 kB
CmaFree: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 182016 kB
DirectMap2M: 3934208 kB
DirectMap1G: 13631488 kB
- A hozzászóláshoz be kell jelentkezni
Ami ebben viszonylag sok, az az Shmem. Én is küzdöttem ezzel, még írtam is róla itt.
Nézd meg és másold be, hogy összesen mennyi Shmem allokációért felelősek a futó processzek:
$ awk '/RssShmem/{ t += $2 } END{ print t" KB" }' /proc/*/status
Ugyanez lebontva ha kíváncsi vagy:
$ grep ^RssShmem /proc/*/status | sort -nk2
Illetve ezt is másold be:
$ ipcs -mu
És ezt is:
$ free -m
- A hozzászóláshoz be kell jelentkezni
Köszi, az írásod majd elolvasom!
> awk '/RssShmem/{ t += $2 } END{ print t " KB" }' /proc/*/status
KB
> grep RssShmem /proc/*/status | sort -nk2
> ipcs -mu
------- Osztott memória állapota --------
segments allocated 29
pages allocated 48211
pages resident 11788
pages swapped 0
Swap performance: 0 attempts 0 successes
> free -m
total used free shared buff/cache available
Mem: 15970 7473 1056 5773 7440 2335
Swap: 16999 2839 14160
- A hozzászóláshoz be kell jelentkezni
Mi a fene, nincs RssShmem infó a /proc/*/status fájljaidban..? Nálam 4.8.16-os kernelen működik.
Mi van benne?
$
egrep "^(Vm|Rss)" /proc/$$/status
- A hozzászóláshoz be kell jelentkezni
valami csúnyán leakeli az shmem-et...
--
Gábriel Ákos
http://ixenit.com
- A hozzászóláshoz be kell jelentkezni
Amit jelenleg nem használnak, az már szabad. Nem?
Vagy arra gondolsz, hogy lefoglalja, kilép, de a foglalás megmarad, tehát még használtnak tűnik?
- A hozzászóláshoz be kell jelentkezni
oom killerezik a kernel, nem indulnak programok, vagy honnan gondolod, hogy nincs eleg memoria? vagy csak bekepzeled a statisztikakbol?
--
NetBSD - Simplicity is prerequisite for reliability
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
tehat csak kepzeled :)
--
NetBSD - Simplicity is prerequisite for reliability
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Köszi!
Ott nekem úgy tűnik, hogy 4G RAM esetén van problémájuk, hogy ~1-2GB-ot foglal.
Mindenesetre leállítottam az evolution service-eket és a Gnome Software-t. Azonnali hatása egyelőre nem lett.
Az ott említettekből még a Virtualbox lehet talán a nagy fogyasztó, de annak a Virtuális (és a rezidens) memória mérete sem emelkedett indulás óta. Tegnap, amikor kilőttem, akkor sem csökkent le az inaktív memória, meg egy rakat process-t lezártam, azoktól sem.
- A hozzászóláshoz be kell jelentkezni
Egyszer valamikor régen olvastam valami olyasmit, hogy amit tmpfs-ként mountolsz fel (általában /tmp, illetve rendszertől függően akár más könyvtárak is), azokra ha írsz valamit akkor azt valójában swap-be írja. Annó én is szívtam vele, nem értettem mi swap-el 64gb ram mellett, de ott végül az lett a megoldás hogy egy cronból futó script /tmp-be írkált, így szépen nőtt a swap. Ha törlöd a felesleges fájlokat /tmp-ből, akkor csökkenni fog a swap használat is.
Tehát az hogy nem ürül a swap, nem feltétlenül hiba, hanem feature :)
- A hozzászóláshoz be kell jelentkezni
Köszi!
Nálam nem ez a helyzet, ha a /tmp-be írok, akkor sem nő a swap. Illetve nagy a swap, akkor is, amikor a /tmp szinte üres. A swap tartalom csak akkor kezd el nőni, ha kifogy a rendszer memóriából.
- A hozzászóláshoz be kell jelentkezni
Mutass azért egy kimenetet:
$ env df -Tt tmpfs
- A hozzászóláshoz be kell jelentkezni
inactive memory
The amount of inactive memory (in KB), or memory that has not been used for a while and is eligible to be swapped to disk.
Forrás: http://books.gigatux.nl/mirror/linuxperformanceguide/0131486829/ch03lev…
- A hozzászóláshoz be kell jelentkezni
Ez is igaz, de az inaktív memória pl tartalmazza a page cache tiszta lapjait is, ami egyszerűen felszabadításra kerül ha szükség van rá.
- A hozzászóláshoz be kell jelentkezni
Milyen kernel verziot hasznalsz?
Esetleg ez: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1655842
-----
“Firefox, you say? No I don't play Pokémon”
- A hozzászóláshoz be kell jelentkezni
Köszi!
A már javítottat: 4.4.0-63-generic #84-Ubuntu
- A hozzászóláshoz be kell jelentkezni
Milyen videokártyád van?
- A hozzászóláshoz be kell jelentkezni
Integrált Intellel megy, de van nVidia is.
Kipróbálom azzal is.
Szerk.:
Nincs változás, ugyanúgy másodpercenként cirka 1-2MB-tal nő a Cached, Inactive és az Shmem; kb. ugyanannyival csökken a MemFree és a MemAvailable.
Az összes futó felhasználói programot kilőttem, plusz a nem létszükséglet service-eket, daemonokat; uninstalláltam az evolution service-it, telepítettem a MATE-t, hátha a Compiz vagy a Unity a bűnös, de egyik esetben sem lett változás.
Valószínűnek tartom, hogy valami kernel bug lehet, de nem azok, amiket korábban is írtatok.
- A hozzászóláshoz be kell jelentkezni
16GB rendszermemória mellett én évek óta nem használok swap-et. Sosem volt még rá szükség. Ha tényleg kihasználod mind a 16 Gb-ot, akkor bővítsd. Én a swap-et elfelejteném.
zolti@zolti-desktop:~$ uname -a
Linux zolti-desktop 4.4.0-62-generic #83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
zolti@zolti-desktop:~$ uptime
13:21:11 up 6 days, 19:35, 1 user, load average: 0,65, 0,77, 0,90
zolti@zolti-desktop:~$ vmstat -s
16125716 K total memory
4141980 K used memory
6046744 K active memory
1925536 K inactive memory
7629008 K free memory
426144 K buffer memory
3928584 K swap cache
0 K total swap
0 K used swap
0 K free swap
2468470 non-nice user cpu ticks
11505 nice user cpu ticks
480223 system cpu ticks
6571562 idle cpu ticks
24096 IO-wait cpu ticks
0 IRQ cpu ticks
26781 softirq cpu ticks
0 stolen cpu ticks
2358143 pages paged in
9464372 pages paged out
0 pages swapped in
0 pages swapped out
58068008 interrupts
139356656 CPU context switches
1486831556 boot time
348085 forks
- A hozzászóláshoz be kell jelentkezni
Írhatnál arról is, hogy amikor sok az inactive memória, akkor az mennyire befolyásolja a rendszer sebességét, reakcióidejét.
- A hozzászóláshoz be kell jelentkezni
Ha nincs swap (kikapcsolom), akkor ahogy írtam is, elkezd OOM killerkedni és lövi ki a processeket.
Ha van swap, akkor észrevehető lassulás nincs. (A swap SSD-n van)
Ilyenkor a nap végén (10-12 óra) 4-8G swap fogy a 17G-ből, tehát még egy fél napot bírná ;-)
Igaziból együtt tudok vele élni, de mostanra elkezdett annyira zavarni, hogy mi lehet ez, ami így eszi a memóriát és miért nem lehet a nyomára bukkanni, hogy elkezdtem komolyabban nyomozni utána, de lassan feladom.
- A hozzászóláshoz be kell jelentkezni
Megoldás:
A telepített bootchart programot kell letörölni. Részletek itt.
- A hozzászóláshoz be kell jelentkezni
Köszi az infót, tényleg jókat írnak róla itt: https://community.linuxmint.com/software/view/bootchart
Méghogy a boot-olást naplózza és utána leáll, köszi :)
- A hozzászóláshoz be kell jelentkezni