Bedeutung der Puffer / Cache-Zeile in der Ausgabe von frei

168

Warum zeigt mein Server

            total      used      free   shared buffers    cached
    Mem: 12286456  11715372    571084        0   81912   6545228
-/+ buffers/cache:  5088232   7198224
   Swap: 24571408     54528  24516880

Ich habe keine Ahnung, wie der Speicher unter Linux berechnet wird. Ich denke, es heißt, dass 5088232 verwendet wird, wo 7198224 frei ist, was bedeutet, dass es tatsächlich 5 GB RAM verbraucht?

Muahmmad Zeeshan
quelle

Antworten:

232

Bedeutung der Werte

Die erste Zeile bedeutet:

  • total: Ihr gesamter (physischer) RAM (mit Ausnahme eines kleinen Teils, den der Kernel beim Start permanent für sich reserviert); deshalb zeigt es ca. 11,7 GiB und nicht 12 GiB, die Sie wahrscheinlich haben.
  • used: Vom Betriebssystem verwendeter Speicher.
  • free: Speicher wird nicht verwendet.

total= used+free

  • shared/ buffers/ cached: Diese Speichernutzung für bestimmte Zwecke zeigen, werden diese Werte in dem Wert für enthalten used.

Die zweite Zeile gibt die angepassten Werte der ersten Zeile an. Es gibt den ursprünglichen Wert für used minus die Summe buffers+cachedund den ursprünglichen Wert für free plus die Summe an buffers+cached, daher der Titel. Diese neuen Werte sind häufig aussagekräftiger als die der ersten Zeile.

Die letzte Zeile ( Swap:) gibt Auskunft über die Auslastung des Auslagerungsspeichers (dh Speicherinhalte, die vorübergehend auf die Festplatte verschoben wurden).

Hintergrund

Um zu verstehen, was die Zahlen bedeuten, benötigen Sie Hintergrundinformationen zum Subsystem für virtuellen Speicher (VM) unter Linux. Nur eine kurze Version: Linux wird (wie die meisten modernen Betriebssysteme) immer versuchen, freien Arbeitsspeicher für das Caching zu verwenden, daher Mem: freewird es fast immer sehr niedrig sein. Daher wird die Zeile -/+ buffers/cache:angezeigt, da angezeigt wird, wie viel Speicher frei ist, wenn Caches ignoriert werden. Caches werden automatisch freigegeben, wenn der Speicher knapp wird, sodass sie eigentlich keine Rolle spielen.

Ein Linux-System hat sehr wenig Arbeitsspeicher, wenn der freeWert in der -/+ buffers/cache:Zeile niedrig wird.

Weitere Details zur Bedeutung der Zahlen finden Sie zB in den Fragen:

Änderungen in procps 3.3.10

Beachten Sie, dass die Ausgabe von freein procps 3.3.10 (veröffentlicht im Jahr 2014) geändert wurde. Die gemeldeten Spalten lauten jetzt "total", "used", "free", "shared", "buff / cache", "available" und die Bedeutung einiger Werte wurde geändert, hauptsächlich, um den Kernel des Linux-Betriebssystems besser zu berücksichtigen Zwischenspeicher.

Siehe Debian-Fehlerbericht # 565518 für die Motivation und Was bedeuten die Änderungen in der freeAusgabe von 14.04 bis 16.04? Für weitere Informationen.

sleske
quelle
Könnten Sie erläutern, welche Art von Dingen Linux möglicherweise zwischenspeichert? Wäre es Dateien, auf die zugegriffen wurde, oder Netzwerkmaterial?
CMCDragonkai
@CMCDragonkai: Die Antwort auf serverfault.com/questions/23433/… behandelt im Detail, was "Cache" und "Puffer" ausmacht.
sleske
5
Ich halte die Aussage "total = used + free" nicht für richtig, siehe folgende Ausgabe auf meinem Rechner:$ free -h total used free shared buff/cache available Mem: 3.4G 585M 152M 11M 2.6G 2.5G Swap: 4.0G 84M 3.9G
Sebastian
@ Sebastian: Ah, interessant. Es scheint, dass die Ausgabe von free geändert wurde (in 3.3.10). Ich habe meine Antwort bearbeitet, um dies zu erwähnen. Wenn Sie an dieser Änderung interessiert sind, sollten Sie eine neue Frage stellen :-).
sleske
3
total = used + free + buff/cache
Gefahr89
2

Die Puffer / Cache-Zeile zeigt an, wie viel Speicher von Programmen verwendet wird (erste dieser Spalten) und wie viel Speicher für Programme zur Verfügung steht (zweite Spalte). Es ist eine ziemlich esoterische Zahl und nicht etwas, auf das man in der Praxis wirklich viel schauen würde.

womble
quelle
Und was bedeutet die erste Zeile (mem line)
Muahmmad Zeeshan
8
Das System verfügt über 12 GB RAM, von denen 11,5 GB verwendet werden und ca. 0,5 GB derzeit nicht verwendet werden. Ungefähr 82 MB des verwendeten Speichers werden für Puffer (Netzwerkverbindungen usw.) verwendet, während ungefähr 6,5 GB zum Speichern von Datenkopien auf der Festplatte verwendet werden, sodass Daten nicht erneut gelesen werden müssen, wenn sie erneut benötigt werden.
womble
3
@ Muhammad: "82 MB sind frei." - nein, 57MiB sind kostenlos (aber das spielt keine Rolle, siehe meine Antwort). "Jetzt bedeutet alles, dass das System an seine Grenzen gestoßen ist" - Nein, überhaupt nicht. Das System verwendet 6,9 GB für die Zwischenspeicherung, die es problemlos für Anwendungen bereitstellt, sodass viel Platz zur Verfügung steht. Auch der Swap-Verbrauch ist sehr gering (nur ca. 50MiB). Wenn der Speicher knapp wird, steigt die Auslagerungsnutzung. Gegenwärtig verbrauchen Sie kaum die Hälfte Ihres Arbeitsspeichers.
sleske
4
Haben Sie darüber nachgedacht, irgendwann eine neue Frage zu stellen?
womble
3
Ich bin anderer Meinung, die Puffer / Cache-Zeile ist der tatsächliche freie Speicher des Systems und daher am relevantesten, wenn Sie wissen möchten, ob das System Platz für Programme hat.
Eckes