Was nutzt mein Gedächtnis?

Was nutzt mein Gedächtnis?

Ich versuche herauszufinden, was den Speicher auf meinem Linux-Server (Ubuntu 20.04) verbraucht.

Kurz nach einem Neustart zeigt htop Folgendes an:

htop

Dies deutet darauf hin, dass derzeit 17 GB Speicher verwendet werden. Vor dem Neustart wurden 29,6 GB angezeigt und der Computer schien träge zu sein. Das htop-Fenster ist nach Speicher sortiert und der Prozess mit der höchsten Speichernutzung verwendet 0,6 % des Speichers.

Eine andere FrageIch habe vorgeschlagen, diesen Befehl zu verwenden:

ps -e -orss=,args= | sort -b -k1,1n

Der Prozess mit der höchsten Auslastung meldet 209596 Kilobyte (?) Speicher, also wiederum einen kleinen Anteil des verfügbaren RAM.

Ich habe mit einem ziemlich kryptischen Befehl versucht, alle Zahlen in der ersten Spalte zu addieren, die von diesem psBefehl gemeldet wurden:

ps -e -orss=,args= | sort -b -k1,1n | sed 's/^ \+//' | cut -d \  -f 1 | sed '2,$s/$/+/' | sed '$s/$/p/' | dc

Darin wird eine Gesamtnutzung von 2965816 Kilobyte (?) gemeldet, was (vorausgesetzt, meine Annahme bezüglich Kilobyte ist richtig) weniger als 3 GB sind. Wo bleiben also die anderen 14 GB?

Kann mir bitte jemand dabei helfen?

Antwort1

Ja, verursacht mir das Probleme?

Es verursacht kein Problem. Das ist das erwartete Verhalten. ZFS wurde ursprünglich nicht für Linux entwickelt. Es verfügt über ein eigenes Caching-System (ARC, Adaptive Replacement Cache). Unter Linux wird der diesem Cache zugewiesene Speicher als „in Verwendung“ betrachtet, obwohl er bei steigendem Speicherdruck freigegeben wird, genau wie beim normalen Dateisystem-Caching. Die standardmäßige maximale ARC-Größe beträgt 50 % des physischen Speichers.

In modernen Versionen von htop(3+) können Sie eine ARC-Statusanzeige einschalten:

htop 3 ZFS-Status

Dieser Screenshot stammt von einem System mit 8 GiB Arbeitsspeicher.

Antwort2

ZFS verfügt über einen RAM-basierten Festplattencache, der vom regulären Linux-Festplattencache getrennt ist. Dies hat mit den nicht-Linux-Ursprüngen von ZFS zu tun. Dieser ZFS-Speichercache wird Adaptive Replacement Cache oder ARC genannt. Aufgrund dieser Trennung wird ZFS ARC in Linux als „verwendeter“ Speicher angezeigt, anstatt als „gespeicherter“, wie Sie es bei nativen Dateisystemen wie EXT4 erwarten würden. Dies ist der Grund, warum sich viele Leute, die neu bei ZFS sind, Sorgen um die RAM-Nutzung machen, aber es gibt keinen Grund zur Sorge. Sofern Sie sich nicht mit Deduplizierung befassen (was wahrscheinlich nicht der Fall ist und was Sie wahrscheinlich auch nicht tun sollten), ist der Speicher für ZFS kein so großes Problem, anders als viele Leute Ihnen sagen werden.

Sie sehen, wie sich dieser Festplattencache (und damit der Arbeitsspeicher) füllt, weil Sie viele Daten verschieben (also lesen). Das Standardspeicherlimit für ARC beträgt normalerweise 50 % Ihres RAM, kann aber über den ZFS-Kernelmodulparameter „zfs_arc_max“ konfiguriert werden, falls Sie ein Maximum festlegen möchten. Wenn der freie Arbeitsspeicher jemals knapp wird, gibt ZFS einen Teil seines ARC frei, genau wie es der reguläre Festplattencache von Linux tun würde. Auch hier besteht kein Grund zur Sorge; ungenutzter RAM ist verschwendeter RAM.

--HenkAchterpaard

verwandte Informationen