GNU/Linux >> Znalost Linux >  >> Linux

Kolik RAM používá jádro?

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.


Linux
  1. Jak interně funguje copy_from_user z jádra Linuxu?

  2. Jak zkontrolovat HZ v terminálu?

  3. Jak velká velikost je potřeba při kompilaci linuxového jádra?

  1. Jak jádro připojí kořenový oddíl?

  2. Jak zjistím počet používaných slotů RAM?

  3. Jak mohu rezervovat blok paměti z jádra Linuxu?

  1. Jak používat Linuxový příkaz grep

  2. Jak zjistit informace o RAM?

  3. Používá jádro Linuxu 3.x plánovač procesů CFS?