it-swarm.com.de

Wie viel RAM verwendet der Kernel?

Diese Frage ist motiviert durch mein Schock, als ich entdeckte, dass der Mac OS X-Kernel 750 MB RAM verwendet .

Ich benutze Linux seit 20 Jahren und "wusste" immer, dass der Kernel RAM wird von X in den Schatten gestellt (ist es wahr? War es jemals wahr?).

Also versuchte ich nach einigem googeln slabtop, was mir sagte:

Active / Total Size (% used)       : 68112.73K / 72009.73K (94.6%)

Bedeutet dies, dass mein Kernel ~ 72 MB RAM jetzt?) Verwendet?

(Angesichts der Tatsache, dass top das RSS von Xorg als 17M meldet, stellt der Kernel jetzt X in den Schatten, nicht umgekehrt).

Was ist der "normale" Kernel RAM Nutzung (Bereich) für einen Laptop?

Warum verwendet MacOS eine Größenordnung mehr RAM als Linux?

PS. Keine Antwort hier hat die letzte Frage beantwortet, daher siehe verwandte Fragen:

47
sds

Kernel ist eine Art Fehlbezeichnung. Der Linux-Kernel besteht aus mehreren Prozessen/Threads + den Modulen (lsmod). Um ein vollständiges Bild zu erhalten, müssen Sie den gesamten Ball und nicht nur eine einzelne Komponente betrachten.

Meins zeigt übrigens slabtop:

 Active / Total Size (% used)       : 173428.30K / 204497.61K (84.8%)

Die Manpage für slabtop hatte auch folgendes zu sagen:

Der Slabtop-Statistik-Header verfolgt, wie viele Bytes von Slabs verwendet werden, und ist kein Maß für den physischen Speicher. Das Feld 'Platte' in der Datei/proc/meminfo verfolgt Informationen über den verwendeten physischen Plattenspeicher.

Caches löschen

Das Löschen meiner Caches als @ derobertvorgeschlagen in den Kommentaren unter Ihrer Frage bewirkt Folgendes für mich:

$ Sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
$

 Active / Total Size (% used)       : 61858.78K / 90524.77K (68.3%)

Das Senden einer 3 bewirkt Folgendes: Freier Seitencache, Einträge und Inodes. Ich diskutiere dies mehr in diesen U & L-Fragen und Antworten mit dem Titel: Gibt es irgendwelche Möglichkeiten oder Werkzeuge, um den Speichercache und den Puffer zu sichern? ". 110 MB meines Speicherplatzes wurden also verwendet, indem nur die Informationen zu Seitencache und Dentries verwaltet wurden und Inodes.

Zusätzliche Information

  • Wenn Sie interessiert sind, habe ich diesen Blog-Beitrag gefunden, in dem slabtop ausführlicher behandelt wird. Es trägt den Titel: Linux-Befehl des Tages: slabtop .
  • Der Platten-Cache wird hier auf Wikipedia mit dem Titel: Plattenzuordnung ausführlicher behandelt.

Wie viel RAM verwendet mein Kernel?

Dieses Bild ist für mich etwas nebliger, aber hier sind die Dinge, von denen ich denke, dass wir sie kennen.

Platte

Mit dieser Technik können wir einen Schnappschuss der Plattenverwendung erhalten. Im Wesentlichen können wir diese Informationen aus /proc/meminfo Abrufen.

$ grep Slab /proc/meminfo
Slab:             100728 kB

Module

Außerdem können wir einen Größenwert für Kernel-Module erhalten (unklar, ob es sich um ihre Größe auf der Festplatte oder im RAM handelt), indem wir diese Werte aus /proc/modules Abrufen:

$ awk '{print $1 " " $2 }' /proc/modules | head -5
cpufreq_powersave 1154
tcp_lp 2111
aesni_intel 12131
cryptd 7111
aes_x86_64 7758

Slabinfo

Viele Details zum SLAB sind in dieser Prozessstruktur verfügbar, /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

Wenn Ihr System startet, gibt es eine Zeile, die die Speichernutzung des Linux-Kernels direkt nach dem Laden meldet.

$ dmesg |grep Memory:
[    0.000000] Memory: 7970012k/9371648k available (4557k kernel code, 1192276k absent, 209360k reserved, 7251k data, 948k init)

Verweise

40
slm

Wie wäre es damit:

Active / Total Size (% used)       : 4709.24K / 5062.03K

Das ist auf einer frisch gebooteten, sehr kleinen Maschine, die kopflos mit einem normalen Kernel läuft. Es erfordert also nicht viel.

Wie derobert andeutet, nutzt der Kernel den verfügbaren Speicher für das Caching, und das ist eine Menge von dem, was Sie in slabtop sehen. Zusätzlich zum Dateicache hat dies mit gemeinsam nutzbarem Speicher von Userspace-Prozessen zu tun, der nicht mehr verwendet wird. Der Kernel lässt es dort, bis entweder wieder dasselbe Material benötigt wird oder etwas aktiv RAM benötigt. In diesem Fall wird es vergessen. Eine Analogie wäre, ein Buch aus dem Regal zu nehmen und es zum Lesen auf einen Tisch zu legen: Wenn Sie mit dem Lesen fertig sind, können Sie das Buch offen auf dem Tisch lassen, falls Sie es erneut ansehen müssen.

8
goldilocks

Auf diesem 512 GB RAM Server, auf dem Solaris ausgeführt wird, verwendet der Kernel 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

Dieser kleinere hat mehr als die Hälfte seiner RAM vom Kernel verwendet:

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

Kein Grund zur Sorge, unbenutzt RAM ist verschwendet RAM sowieso.

4
jlliagre