Diese Frage ist durch meinen Schock motiviert , als ich feststellte, dass der Mac OS X-Kernel 750 MB RAM verwendet .
Ich benutze Linux seit 20 Jahren und habe immer "gewusst", dass die Kernel-RAM-Nutzung von X in den Schatten gestellt wird (stimmt das? Stimmt das jemals?).
Also slabtop
habe ich nach einigem googeln versucht, was mir sagte:
Active / Total Size (% used) : 68112.73K / 72009.73K (94.6%)
Bedeutet dies, dass mein Kernel jetzt ~ 72 MB RAM verwendet?
(Da die top
Berichte Xorg
hier dargestellten RSS als 17M, der Kernel nun Zwerge X, nicht umgekehrt).
Was ist die "normale" RAM-Auslastung (Reichweite) des Kernels für einen Laptop?
Warum verwendet MacOS um eine Größenordnung mehr RAM als Linux?
PS. Die letzte Frage wurde hier nicht beantwortet. Siehe dazugehörige Fragen:
echo 3 > /proc/sys/vm/drop_caches
, dann habe ich nur 80MB verwendet.Antworten:
Kernel ist ein bisschen eine Fehlbezeichnung. Der Linux-Kernel besteht aus mehreren Prozessen / Threads + den Modulen (
lsmod
). Um ein vollständiges Bild zu erhalten, muss man den gesamten Ball betrachten und nicht nur eine einzelne Komponente.Übrigens zeigt mir
slabtop
:Die Manpage für hatte
slabtop
auch folgendes zu sagen:Löschen von Caches
Meine Caches als Dropping @derobert vorgeschlagen in den Kommentaren unter Ihrer Frage tut die folgende für mich:
Das Senden einer 3 bewirkt Folgendes: Freier Pagecache, Einträge und Inodes. Ich diskutiere dies mehr in dieser U & L-Frage & Antwort mit dem Titel: Gibt es Möglichkeiten oder Werkzeuge, um den Speichercache und den Puffer zu sichern? Msgstr "" "110 MB meines Speicherplatzes wurden verwendet, indem nur die Informationen zu Pagecache, Einträgen und Inodes gepflegt wurden.
zusätzliche Information
slabtop
in dem etwas mehr Details besprochen werden . Es heißt: Linux-Befehl des Tages: slabtop .Wie viel RAM verbraucht mein Kernel?
Dieses Bild ist ein bisschen nebliger für mich, aber hier sind die Dinge, von denen ich denke, dass wir sie kennen.
Platte
Mit dieser Technik können wir eine Momentaufnahme der Verwendung von Slab erstellen. Grundsätzlich können wir diese Informationen herausholen
/proc/meminfo
.Module
Außerdem können wir einen Größenwert für Kernel-Module ermitteln (unklar, ob es sich um die Größe auf der Festplatte oder im RAM handelt), indem wir diese Werte aus
/proc/modules
folgenden Quellen abrufen :Slabinfo
Viele Details zum SLAB sind in dieser Proc-Struktur verfügbar
/proc/slabinfo
:Dmesg
Wenn Ihr System hochfährt, gibt es eine Zeile, die die Speichernutzung des Linux-Kernels direkt nach dem Laden meldet.
Verweise
quelle
grep Slab /proc/meminfo
./proc/slabinfo
welches die Quelle zu sein scheintslabtop
, so dass man die Beträge von hier für eine genauere Gesamtzählung berechnen könnte./proc/modules
wird mit größerer Wahrscheinlichkeit Modulgröße in den Speicher geladen, da On-Disk-Module normalerweise komprimiert sind (z. B. auf Fedora 27 ist es xz). Ich habe dentg3
NIC-Treiber überprüft , was die On-Disk-Größe (entweder komprimierte oder ursprüngliche Dateigröße) tut stimmt nicht mit der Bytegröße überein, die in angezeigt wird/proc/modules
.Wie wäre es damit:
Das ist auf einer frisch gebooteten, sehr kleinen Maschine, die kopflos mit einem normalen Kernel läuft . Es braucht also nicht viel.
Wie derobert andeutet, wird der Kernel den verfügbaren Speicher für das Caching nutzen und das ist eine Menge, was Sie in sehen
slabtop
. Dies hat neben dem Dateicache mit dem gemeinsam nutzbaren Speicher von nicht mehr verwendeten Userspace-Prozessen zu tun. Der Kernel belässt es dort, bis entweder dasselbe Zeug wieder benötigt wird oder etwas aktiv RAM benötigt, in welchem Fall es vergessen wird. Eine Analogie wäre, ein Buch aus einem Regal zu nehmen und es zum Lesen auf einen Tisch zu legen: Wenn Sie mit dem Lesen fertig sind, können Sie das Buch auf dem Tisch offen lassen, falls Sie es noch einmal ansehen müssen.quelle
Auf diesem 512-GB-RAM-Server unter Solaris verwendet der Kernel 25 GB:
Das kleinere hat mehr als die Hälfte des vom Kernel verwendeten RAM:
Kein Grund zur Sorge, ungenutzter Arbeitsspeicher ist ohnehin verschwendeter Arbeitsspeicher.
quelle
echo ::memstat | mdb -k
auf einigen Solaris 10-Produktionsservern ausgeführt, die älter sind als Update 10/09.