free
ist ein beliebter Befehl, der von Systemadministratoren auf Unix/Linux-Plattformen verwendet wird. Es ist ein leistungsstarkes Tool, das einen Einblick in die Speichernutzung in einem für Menschen lesbaren Format gibt.
Der man
Seite für diesen Befehl besagt, dass free
zeigt die Gesamtmenge an freiem und verwendetem Speicher auf dem System an, einschließlich physischem und Auslagerungsspeicher, sowie die vom Kernel verwendeten Puffer und Caches. Die Informationen werden durch Parsen von /proc/meminfo
gesammelt .
Wie jeder andere Befehl free
wurde im Laufe der Zeit überarbeitet, um seine Ausgabe aussagekräftig und genau für die Entscheidungsfindung zu machen. In Red Hat Enterprise Linux (RHEL) 6 unterscheidet sich die Ausgabe etwas von der von RHEL 7 und 8. In all diesen Versionen gibt es jedoch Schlüsselparameter, die sich nicht ändern.
Geben Sie unter RHEL 6 free -h
ein (Ich habe den -h
verwendet Option für menschenlesbares Format) zeigt eine Ausgabe ähnlich der folgenden:
[root@srv ~]# free -h
total used free shared buffers cached
Mem: 94G 44G 49G 161M 993M 1.3G
-/+ buffers/cache: 42G 52G
Swap: 15G 0B 15G
(Abbildung 1)
RHEL 7/8 zeigt ähnliche Informationen wie die folgenden an:
[root@server1 ~]# free -h
total used free shared buff/cache available
Mem: 15G 751M 1.2G 272M 13G 14G
Swap: 0B 0B 0B
(Abbildung 2)
RHEL 8 hat eine ähnliche Ausgabe wie unten:
[root@tiger ~]# free -h
total used free shared buff/cache available
Mem: 819Mi 164Mi 146Mi 25Mi 509Mi 491Mi
Swap: 0B 0B 0B
(Figure 3)
Um die obige Ausgabe besser lesbar zu machen, bietet der Befehl verschiedene Optionen:free
-b
, -k
, -m
, -g
:Zeigt die Speichermenge in Byte, Kilobyte, Megabyte, free -h
verwenden um die Ausgabe in einer für Menschen lesbaren Ausgabe anzuzeigen. Bitte führen Sie free --help
aus für weitere Informationen zu den Optionen.
Die verschiedenen Spalten, die oben von den verschiedenen Versionen angezeigt werden, versuchen den gesamten, verwendeten, freien, gemeinsam genutzten Speicher zu identifizieren. Es versucht auch, den im Cache und in den Puffern gehaltenen Speicher anzuzeigen.
Wie bei den meisten Befehlen müssen jedoch die relevanten Spalten überprüft werden, die für den Systemadministrator bei der Haushaltsführung oder Fehlerbehebung von Interesse sein können Probleme werden unten erläutert.
Red Hat Enterprise Linux 6
Im Fall von RHEL 6 sollte der Fokus auf den -/+ Puffern/Cache liegen Spalte.
In Abbildung 1 oben beträgt die Gesamtzahl 94 GB, belegt 44 GB und frei 49 GB. Dieses System ist ziemlich ausgelastet, aber der verwendete RAM scheint hoch zu sein. Dies sollte keine großen Bedenken hervorrufen, aber der Administrator muss sich die -/+ Puffer/Cache ansehen Säule. Die -/+ Puffer/Cache zeigt belegten Speicher als 42 GB und freien Speicher als 52 GB an. Dies bedeutet, dass die tatsächlich verwendete RAM-Größe 42 GB und nicht 44 GB beträgt. Der Wert 44 GB beinhaltet auch den Cache. Ein Blick auf die gebrauchten Wert ohne Berücksichtigung des Cache beeinflusst Ihre Interpretation der Systemleistung.
Die Puffer und zwischengespeicherten Spalten werden unten erklärt:
- buffers:Speicher, der von Kernelpuffern verwendet wird
- cached:Speicherplatz belegt durch "Page Cache."
Cache-Seiten sind nichts anderes als die Daten/Dateien, die in den RAM kopiert werden, wenn der Kernel Lese-/Schreiboperationen auf einer Festplatte ausführt. Der Grund für das Zwischenspeichern dieser Seiten liegt in der E/A-Leistung. Der Kernel hält diese Dateien also im RAM und gibt sie frei, wann immer sie nicht benötigt werden oder wann immer Speicherplatz von einem neuen Prozess/Befehl angefordert wird, der bereitgestellt wird, wenn kein freier Platz im RAM verfügbar ist.
Red Hat Enterprise Linux 7/8
Bei RHEL 7/8 sollte der Fokus auf den verfügbaren liegen Säule. In RHEL 7/8 die -/+ Puffer/Cache wurde entfernt und durch die vorhandene ersetzt Säule. Der Puffer und zwischenspeichern wurden zu buff/cache zusammengefasst und haben dieselbe Bedeutung wie oben erläutert. Die verfügbare Spalte schätzt, wie viel Speicher zum Starten neuer Anwendungen ohne Auslagerung verfügbar ist.
In Abbildung 2 oben beträgt der installierte Arbeitsspeicher insgesamt 15 GB, der verwendete 751 MB und der freie 1,2 GB. Unter Verwendung der gleichen Argumentation wie bei RHEL 6, ein einfacher Blick auf die used Wert könnte zu falschen Schlussfolgerungen führen. Die verwendete -Spalte sollte auch mit Blick auf die Cache-Spalte verstanden werden. Es gibt viel Caching mit den verfügbaren Wert von 14 GB, was sehr hoch ist und fast dem gesamten Arbeitsspeicher entspricht.
Wann sollte sich der Systemadministrator Sorgen machen?
Ein gesundes System mit mehr als genug Arbeitsspeicher zeigt nach einiger Zeit das folgende erwartete und harmlose Verhalten:
- freier Speicher ist nahe 0 oder sehr klein
- verbrauchter Speicher ist fast vollständig
- verfügbarer Speicher (oder freier -/+ Puffer/Cache) ist größer im Verhältnis zum Gesamtspeicher
- Austauschwert ändert sich nicht
Der Systemadministrator muss sich jedoch Sorgen machen, wenn es Anzeichen gibt, die auf eine Situation mit echtem Speichermangel hindeuten. Unten sind einige dieser Zeichen:
- verfügbarer Arbeitsspeicher (oder freie -/+ Puffer/Cache) ist nahe Null oder sehr klein
- Auslagerungswerte beginnen zu steigen oder zu schwanken, da es keine freien Speicherseiten gibt, die das System verwenden kann, und es daher auf die Verwendung der Auslagerungsplatte zurückgreifen muss
- Es gibt OutOfMemory-Killer-Meldungen in den Protokollen, wenn sie mit
grep -i kill /var/log/messages*
überprüft werden oderdmesg | grep oom-killer
Abschluss
Der free
command ist ein sehr nützliches Dienstprogramm, das dem Systemadministrator viel darüber sagen kann, was auf dem Server passiert. Lernen, die Unterschiede zwischen den Versionen von free
zu erkennen kann bei einer genaueren Interpretation der Ausgabe helfen.
[ Möchten Sie Red Hat Enterprise Linux ausprobieren? Laden Sie es jetzt kostenlos herunter. ]