GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux – Speichernutzung unter Linux richtig ermitteln?

Ich bin etwas verwirrt über einige der Ergebnisse, die ich von ps sehe und kostenlos .

Auf meinem Server ist dies das Ergebnis von free -m

[[email protected] ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          2048       2033         14          0         73       1398
-/+ buffers/cache:        561       1486
Swap:         2047         11       2036

Mein Verständnis davon, wie Linux den Speicher verwaltet, ist, dass es die Festplattennutzung im RAM speichert, sodass jeder nachfolgende Zugriff schneller ist. Ich glaube, dies wird durch die „gecachten“ Spalten angezeigt. Zusätzlich werden verschiedene Puffer im RAM gespeichert, die in der Spalte „Puffer“ angezeigt werden.

Wenn ich das richtig verstehe, soll die „tatsächliche“ Verwendung also der „used“-Wert von „-/+ buffers/cache“ oder in diesem Fall 561 sein.

Unter der Annahme, dass das alles richtig ist, sind die Ergebnisse von ps aux der Teil, der mich aus der Fassung bringt .

Mein Verständnis des ps Ergebnis ist, dass die 6. Spalte (RSS) die Größe in Kilobyte darstellt, die der Prozess für Speicher verwendet.

Wenn ich also diesen Befehl ausführe:

[[email protected] ~]# ps aux | awk '{sum+=$6} END {print sum / 1024}'
1475.52

Sollte das Ergebnis nicht die „used“-Spalte von „-/+ buffers/cache“ aus free -m sein ?

Wie kann ich also die Speichernutzung eines Prozesses in Linux richtig bestimmen? Anscheinend ist meine Logik fehlerhaft.

Akzeptierte Antwort:

Meine Antwort von Serverfault neulich schamlos kopieren/einfügen 🙂

Das virtuelle Speichersystem von Linux ist nicht ganz so einfach. Sie können nicht einfach alle RSS-Felder zusammenzählen und den gemeldeten Wert used erhalten von free . Dafür gibt es viele Gründe, aber ich nenne ein paar der wichtigsten.

  • Wenn sich ein Prozess verzweigt, werden sowohl der übergeordnete als auch der untergeordnete Prozess mit demselben RSS angezeigt. Linux verwendet jedoch Copy-on-Write, sodass beide Prozesse wirklich denselben Speicher verwenden. Nur wenn einer der Prozesse den Speicher modifiziert, wird er tatsächlich dupliziert.
    Dies führt zum free kleiner sein als top RSS-Summe.

  • Der RSS-Wert enthält keinen gemeinsam genutzten Speicher. Da Shared Memory keinem Prozess gehört, top schließt es nicht in RSS ein.
    Dadurch wird der free verursacht Nummer größer sein als top RSS-Summe.


Linux
  1. Linux-Speichernutzung

  2. Linux – Echte Speichernutzung?

  3. Freier Befehl in Linux mit Beispielen erklärt

  4. Bestimmen der Festplattennutzung in Linux mit dem Befehl „du“.

  5. Wie protokolliere ich den Speicherverbrauch unter Linux?

Linux Free Command (Speichernutzung prüfen)

Kostenloser Befehl unter Linux

Wie wird die Top/htop-Speichernutzung interpretiert?

kostenlose Befehlsbeispiele in Linux

Finden Sie die RAM-Größe in Linux

Korrekte Bestimmung der Speichernutzung in Linux