Kernel je trochu nesprávné označení. Linuxové jádro se skládá z několika procesů/vlákna + modulů (lsmod
), abyste získali úplný obrázek, museli byste se podívat na celou kouli a ne pouze na jednu součást.
Můj mimochodem ukazuje slabtop
:
Active / Total Size (% used) : 173428.30K / 204497.61K (84.8%)
Manuál pro slabtop
také řekl toto:
Záhlaví statistiky slabtop sleduje, kolik bytů slabů se používá, a není měřítkem fyzické paměti. Pole 'Slab' v souboru /proc/meminfo sleduje informace o použité fyzické paměti slab.
Odstranění mezipaměti
Zahozením mých kešek, jak navrhl @derobert v komentářích pod vaší otázkou, pro mě bude následující:
$ sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
$
Active / Total Size (% used) : 61858.78K / 90524.77K (68.3%)
Odeslání 3 provede následující:bezplatná mezipaměť stránek, dentry a inody. Více o tom pojednávám v tomto U&L Q&A s názvem:Existují nějaké způsoby nebo nástroje pro výpis paměti cache a vyrovnávací paměti?". Takže 110 MB mého prostoru bylo využito pouze udržováním informací týkajících se pagecache, dentries a inodů.
Další informace
- Pokud vás to zajímá, našel jsem tento blogový příspěvek, který pojednává o
slabtop
trochu podrobněji. Jmenuje se:Linuxový příkaz dne:slabtop. - O vyrovnávací paměti desek je podrobněji pojednáno zde na Wikipedii s názvem:Přidělení desek.
Kolik paměti RAM používá moje jádro?
Tento obrázek je pro mě trochu zamlženější, ale zde jsou věci, o kterých si myslím, že víme.
Deska
Pomocí této techniky můžeme získat snímek využití desky. V podstatě můžeme tyto informace vytáhnout z /proc/meminfo
.
$ grep Slab /proc/meminfo
Slab: 100728 kB
Moduly
Také můžeme získat hodnotu velikosti pro moduly jádra (není jasné, zda je to jejich velikost z disku nebo když jsou v paměti RAM) přetažením těchto hodnot z /proc/modules
:
$ awk '{print $1 " " $2 }' /proc/modules | head -5
cpufreq_powersave 1154
tcp_lp 2111
aesni_intel 12131
cryptd 7111
aes_x86_64 7758
Informace o desce
Mnoho podrobností o SLAB je přístupných v této struktuře proc, /proc/slabinfo
:
$ less /proc/slabinfo | head -5
slabinfo - version: 2.1
# name <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail>
nf_conntrack_ffff8801f2b30000 0 0 320 25 2 : tunables 0 0 0 : slabdata 0 0 0
fuse_request 100 125 632 25 4 : tunables 0 0 0 : slabdata 5 5 0
fuse_inode 21 21 768 21 4 : tunables 0 0 0 : slabdata 1 1 0
Dmesg
Když se váš systém zavede, objeví se řádek, který hlásí využití paměti linuxového jádra hned po jeho načtení.
$ dmesg |grep Memory:
[ 0.000000] Memory: 7970012k/9371648k available (4557k kernel code, 1192276k absent, 209360k reserved, 7251k data, 948k init)
Odkazy
- Kam se poděla paměť? Využití paměti v jádře 2.6
Co třeba toto:
Active / Total Size (% used) : 4709.24K / 5062.03K
To je na čerstvě spuštěném, velmi malém počítači běžícím bez hlavy s normálním jádrem. Takže to moc nevyžaduje.
Jak derobert naznačuje, jádro využije dostupnou paměť pro ukládání do mezipaměti a to je hodně z toho, co vidíte v slabtop
. Kromě mezipaměti souborů to souvisí se sdílenou pamětí z procesů v uživatelském prostoru, která se již nepoužívá. Jádro to tam nechává, dokud nebude znovu vyžadováno totéž, nebo něco aktivně potřebuje RAM, v tom případě se na to zapomene. Analogií by bylo sundat knihu z police a položit ji otevřenou ke čtení na stůl:až budete číst, můžete knihu nechat otevřenou na stole pro případ, že byste se na ni potřebovali znovu podívat.
Na tomto 512 GB RAM serveru se systémem Solaris používá jádro 25 GB:
Page Summary Pages MB %Tot
------------ ---------------- ---------------- ----
Kernel 3210102 25078 5%
Anon 15266226 119267 23%
Exec and libs 41457 323 0%
Page cache 3539331 27651 5%
Free (cachelist) 13799571 107809 21%
Free (freelist) 30093164 235102 46%
Total 65949851 515233
Physical 65927406 515057
Ten menší má více než polovinu své RAM využívané jádrem:
Page Summary Pages MB %Tot
------------ ---------------- ---------------- ----
Kernel 2149699 16794 52%
Anon 517016 4039 13%
Exec and libs 15420 120 0%
Page cache 21840 170 1%
Free (cachelist) 8768 68 0%
Free (freelist) 1404862 10975 34%
Total 4117605 32168
Physical 4096002 32000
Není se čeho bát, nevyužitá RAM je stejně plýtvaná RAM.