„top“ Arbeitsspeicher verstehen

Squicky

Lt. Commander
Registriert
Sep. 2002
Beiträge
1.433
Hallo
Ich habe einige Verständnisfragen zu der Arbeitsspeicher Verwaltung und der „top-Anzeige“ unter Linux:

top zeigt an:

Mem: total , used , free , buffers
Swap: total , used , free , cached


Also:
Pro Zeile gilt: total = used + free

Frage:
1. Was genau bedeutet buffers in der Mem Zeile? (Was genau wird warum gebuffert)
2. Was genau bedeutet cached in der Swap Zeile? (Was genau wird warum cached?
3. Ist der buffers Wert ein Teil des Mem-used Wertes?
4. Warum ist der Swap-cached Wert größer als der Swap-total Wert?

Danke
 
  • Gefällt mir
Reaktionen: Pokernikus
  • Gefällt mir
Reaktionen: Pokernikus und fixedwater
Wenn es dir nur um den RAM geht, würde ich eher free bzw. free -h nutzen.

Squicky schrieb:
Also:
Pro Zeile gilt: total = used + free
Wirklich?? Bei Swap ja, aber bei Mem sollte buff noch addiert werden.

Zu deinen Fragen:
1. Wird von @En3rg1eR1egel quasi beantwortet.
3. Nein.
2.+4. Kann es sein, dass du dich verlesen hast? Bei mir gibt es bei Swap total, free, used und avail, also wie viel ohne swappen verfügbar wäre, darüber steht allerdings buff/cache, bezieht sich aber beides auf Mem.
 
Zuletzt bearbeitet:
horstle schrieb:
Wenn es dir nur um den RAM geht, würde ich eher free bzw. free -h nutzen.


Wirklich?? Bei Swap ja, aber bei Mem sollte buff noch addiert werden.

Zu deinen Fragen:
1. Wird von @En3rg1eR1egel quasi beantwortet.
3. Nein.
2.+4. Kann es sein, dass du dich verlesen hast? Bei mir gibt es bei Swap total, free, used und avail, also wie viel für den Swap verfügbar wäre, darüber steht allerdings buff/cache, bezieht sich aber beides auf Mem.

Ja, habe es erneut nachgerechnet: total = used + free

Dann verstehe ich die Antwort von @En3rg1eR1egel noch nicht so richtig :-(

Verlesen habe ich mich nicht.
hier ist ein Bild aus dem Web. bei mir soind nur die Zahlen etwas anders:
1584366065384.png



Des Weiteren noch eine Frage:
Ist es richtig, dass "cached" den Wert angibt, den das Betriebssystem (Linux) zum laden (puffern) der Festplattendaten nutzt?
 
Achso, bei dir sind buffer und cache einzeln aufgeführt. buffer sind irgendwelche Kernel buffer und cached sind wie du vermutest (und wie es auf linuxatemyram.com steht) Daten von der Festplatte. cached hat dabei überhaupt nichts mit Swap zu tun, obwohl es in der Zeile steht.
 
horstle schrieb:
Achso, bei dir sind buffer und cache einzeln aufgeführt. buffer sind irgendwelche Kernel buffer und cached sind wie du vermutest (und wie es auf linuxatemyram.com steht) Daten von der Festplatte. cached hat dabei überhaupt nichts mit Swap zu tun, obwohl es in der Zeile steht.

Danke

Ist der cashed-Wert ein Teil von used-Wert?
 
Nein, die Werte sind nicht teil voneinander. Es gilt:
Code:
total = used + free + buff/cache
 
Zuletzt bearbeitet: (Fehler korrigiert)
0-8-15 User schrieb:
Nein, die Werte sind nicht teil voneinander. Es gilt:
Code:
total = used + free + shared + buff/cache
available = total - used - shared

Mein Beispiel Bild von oben zeigt aber etwas anderes
total = used + free
509504 = 389544 + 119960
und wenn dann noch 54600 für cached dazukommen, dann wäre es mehr wie total (509504).


Auf meinem System ist folgende Situaltion: (gerundet)
total 32 GB (Arbeitsspeicher)
used ca. 31 GB
free ca. 0,5 GB
cached ca. 29,5 GB

Somit benutzt die Funktion für Festplatten Puffer fast den ganzen Arbeitsspeicher (29,5 von 32).

Aber "top" zeigt mir auch an, dass es eine Anwendung gibt, die ca. 7GB RES (Momory) und 8 GB VIRT (Memory) hat.

Alleine die Funktion für Festplatten Puffer (cached) und die eine Anwendung benutzen ca. 36,5 GB von 32 GB.
Wie ist das möglich?
 
Squicky schrieb:
Mein Beispiel Bild von oben zeigt aber etwas anderes
Seltsam, also auf der Manpage von 'free' steht:
used Used memory (calculated as total - free - buffers - cache)
Auf meinem System (Arch Linux) ist es auch so:
Code:
free
              total        used        free      shared  buff/cache   available
Mem:      131657040     1609008    44633080      326152    85414952   128503464
Swap:      12582908           0    12582908
 
Squicky schrieb:
Somit benutzt die Funktion für Festplatten Puffer fast den ganzen Arbeitsspeicher (29,5 von 32).

Aber "top" zeigt mir auch an, dass es eine Anwendung gibt, die ca. 7GB RES (Momory) und 8 GB VIRT (Memory) hat.

Alleine die Funktion für Festplatten Puffer (cached) und die eine Anwendung benutzen ca. 36,5 GB von 32 GB.
Wie ist das möglich?
Die 29,5GB sind natürlich nicht wahllos von der Festplatte gelesen, sondern das sind Dateien, die von Prozessen schonmal angefordert wurden (oder wahrscheinlich noch angefordert werden). Dementsprechend werden sie auch dem RES des Prozesses zugeordnet.
 
horstle schrieb:
Die 29,5GB sind natürlich nicht wahllos von der Festplatte gelesen, sondern das sind Dateien, die von Prozessen schonmal angefordert wurden (oder wahrscheinlich noch angefordert werden). Dementsprechend werden sie auch dem RES des Prozesses zugeordnet.

Echt?
Warum sollten Dateien, die ein Programm nicht geladen hat dem Arbeitsspeicher des Programms zugeordnet wwerden?
 
Ok, das war schlecht formuliert bzw. da fehlt ein Wort. Der erste Satz sollte klar sein, da bin ich mir ziemlich sicher. Der zweite Satz ist eine Vermutung.

Du könntest ja mal deinen 8GB Prozess beobachten, während du echo 3 | sudo tee /sys/proc/vm/drop_caches ausführst. Wenn RES dann weniger wird, stimmt meine Vermutung, ansonsten weiß ich auch nicht. Auf jeden Fall sollte cached danach nahe Null sein.
 
Zurück
Oben