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

14

Ich verwende System Monitor 2.28.0. Wenn ich auf die Registerkarte Ressourcen schaue, sehe ich eine schöne Grafik mit Speicher und Swap. Der Speicher ist ca. 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

Guillaume Coté
quelle

Antworten:

15

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 genau ansehen free, wird dies bereits angezeigt:


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

Wenn Sie "Puffer" und "Cache" hinzufügen und diese dann von der Spalte "Verwendet" abziehen, erhalten Sie die zweite Zeile unter "Verwendet" (die Zeile, die mit beginnt -/+ buffers/cache), die ungefähr 2,3 G (2384512) in anzeigt use: Entspricht dem vom Systemmonitor gemeldeten Arbeitsspeicher (Puffer / Cache werden ignoriert, da diese nicht mehr benötigt werden, um Platz für weitere Prozesse zu schaffen).

Ihr grep against /proc/meminfostimmt tatsächlich mit der Spalte "free" der ersten Zeile überein (32512 liegt nahe genug bei 34536 - wahrscheinlich wurde sie zwischen den beiden Befehlsausgaben geändert).

Kees Cook
quelle
Danke, ich frage mich, warum das System 1,5 Gig im Cache benötigt, aber das macht es klar.
Guillaume Coté
1
Es geht weniger um "Bedürfnis" als um "gebraucht". Zu diesem Zeitpunkt hatte es mindestens so viel von der Festplatte gelesen und es im freien Speicher aufbewahrt, falls es erneut verwendet werden musste.
Kees Cook
0

Als ich den Systemmonitor in die Hand bekam, war die auf der Registerkarte "Ressourcen" angegebene Speichernutzung dieselbe wie in der freeSpalte 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:line of zu machen /usr/bin/free. 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"ZFS ist schlecht" gemeldet wird.

Benoît
quelle