it-swarm.com.de

Was ist der Unterschied zwischen dem Speicherauslastungsbericht in System Monitor und dem Bericht von Free?

Ich verwende System Monitor 2.28.0. Wenn ich auf die Registerkarte Ressourcen schaue, sehe ich eine schöne Grafik mit Speicher und Swap. Das Gedächtnis beträgt ungefähr 60% 2,3 GiB von 3,8. Wenn ich den Befehl free eingebe, erhalte ich:

             total       used       free     shared    buffers     cached
Mem:       3994908    3962396      32512          0     100852    1477032
-/+ buffers/cache:    2384512    1610396
Swap:      8000328      28468    7971860

katze/proc/meminfo | grep MemFree geben

MemFree:           34536 kB

Die Situation ist einige Minuten lang unverändert geblieben. Ich habe viel mit einem Skript angefangen und das Skript wartet darauf, dass der freie Speicher geringer wird. Entsprechend dem, was ich auf der Registerkarte "Prozess" (oder oben) sehe, scheint die Zahl im Systemmonitor der Gesamtspeicherkapazität des Prozesses, den der von "Frei" gemeldete Prozess aufweist, sehr nahe zu sein.

Vielen Dank

13
Guillaume Coté

Der Unterschied besteht darin, ob die "Puffer" und "zwischengespeicherten" Speicher in der "verwendeten" Zählung enthalten sind oder nicht.

Im Allgemeinen wird der Linux-Systemspeicher vom Kernel für zwei Zwecke verwendet: Prozesse und Datei-/Netzwerk-Cache/Puffer. Wenn Sie sich die Ausgabe von free genau ansehen, wird sie bereits angezeigt:


             total       used       free     shared    buffers     cached
Mem:       3994908    3962396      32512          0     1008521477032
-/+ buffers/cache:    2384512    1610396
Swap:      8000328      28468    7971860

Wenn Sie "Puffer" und "Cache" hinzufügen und diese dann von der Spalte "used" abziehen, erhalten Sie die zweite Zeile unter "used" (die Zeile, die mit -/+ buffers/cache beginnt), die ungefähr 2.3 anzeigt G (2384512) wird verwendet. Dies entspricht dem von System Monitor gemeldeten Arbeitsspeicher, der gerade verwendet wird (es werden die Puffer/Cache-Speicher ignoriert, da diese ausgeblendet werden, um Platz für mehr Prozesse zu schaffen).

Ihr Grep gegen /proc/meminfo stimmt tatsächlich mit der "freien" Spalte der ersten Zeile überein (32512 ist nahe genug an 34536 - es hat sich wahrscheinlich zwischen den beiden Befehlsausgaben geändert).

14
Kees Cook

Als ich den Systemmonitor in den Griff bekam, war die auf der Registerkarte "Ressourcen" angegebene Speichernutzung dieselbe wie in der Spalte free in /usr/bin/free.

Das Problem ist, dass der freie physische Speicher bald oder später fast 0 ist: Linux wird aggressiv zwischengespeichert, sodass das Geld, das Sie für den Kauf von RAM ausgegeben haben, effizient verwendet wird. Und dies bedeutete, dass das Diagramm ständig> 98% des Speicherbedarfs anzeigt, was nutzlos war.

Also habe ich/wir beschlossen, genau wie -/+ buffers/cache: Zeile von /usr/bin/free zu tun. Auf diese Weise ist das Diagramm aussagekräftig und lässt den Benutzer die Speichernutzung von ~ application/userland beobachten, anstatt den physischen Zustand des Speichers.

Ich weiß, das ist ein bisschen irreführend, weil die meisten (l) Benutzer nicht verstehen, dass freier physischer Speicher eine Verschwendung von Geld und Leistung ist. Bei der Arbeit hatte ich das gleiche Problem: An jedem Montag wurden die Server neu gestartet, und in den nächsten 24 Stunden löste jeder Server eine Warnung aus, dass der Speicher voll war. So hatte ich die freie Speicherberechnung in der Überwachungssoftware genau wie im Systemmonitor behoben.

Derzeitiges Solaris hat das gleiche Problem: Der ZFS-Cache (ARC) ist nicht im freien Speicher enthalten, der von Tools wie vmstat gemeldet wird. Dadurch beklagen sich dumme DB-Administratoren, dass "ZFS schlecht ist" :)

0
Benoît