So verwenden Sie den vmstat-Befehl unter Linux

Ihr Linux- oder macOS-Computer verwendet virtuellen Speicher. Entdecken Sie, wie sich dies auf die Nutzung von physischem Speicher, CPU und Festplattenressourcen durch Ihr System auswirkt.

Was ist virtueller Speicher?

Ihr Computer ist mit einer begrenzten Menge an physischem Speicher ausgestattet, der als bezeichnet wird Arbeitsspeicher (RAM). Dieser RAM muss vom Kernel verwaltet und zwischen dem Betriebssystem und allen gerade laufenden Anwendungen geteilt werden. Wenn diese kombinierten Anforderungen mehr Speicher erfordern, als physisch auf Ihrem Computer installiert ist, was kann der Kernel tun?

Linux- und Unix-ähnliche Betriebssysteme wie macOS können Speicherplatz auf Ihrer Festplatte nutzen, um den Speicherbedarf zu decken. Ein reservierter Bereich des Festplattenspeichers, der als „Swap-Speicherplatz“ bezeichnet wird, kann wie eine Erweiterung des Arbeitsspeichers verwendet werden. Dies ist virtueller Speicher.

Der Linux-Kernel kann den Inhalt eines Speicherblocks in den Auslagerungsbereich schreiben und diesen RAM-Bereich für die Verwendung durch einen anderen Prozess freigeben. Der ausgelagerte – auch „ausgelagerte“ – Speicher kann bei Bedarf aus dem Auslagerungsbereich abgerufen und im RAM wiederhergestellt werden.

Natürlich ist die Zugriffsgeschwindigkeit für ausgelagerten Speicher langsamer als die von im RAM gehaltenem Speicher. Und das ist nicht der einzige Kompromiss. Während virtueller Speicher Linux eine Möglichkeit bietet, seinen Speicherbedarf zu verwalten, stellt die Verwendung von virtuellem Speicher an anderer Stelle des Computers eine erhöhte Belastung dar.

Ihre Festplatte muss mehr Lese- und Schreibvorgänge ausführen. Der Kernel – und damit die CPU – muss mehr Arbeit leisten, da er Speicher aus- und einlagert und alle Platten am Laufen hält, um den Speicherbedarf der verschiedenen Prozesse zu decken.

Linux bietet Ihnen die Möglichkeit, all diese Aktivitäten in Form des Befehls vmstat zu überwachen, der Berichte über Statistiken zum virtuellen Speicher.

Der vmstat-Befehl

Wenn Sie vmstat als Befehl ohne Parameter eingeben, wird Ihnen eine Reihe von Werten angezeigt. Diese Werte sind die Durchschnittswerte für jede der Statistiken seit dem letzten Neustart Ihres Computers. Diese Zahlen sind keine Momentaufnahme der Werte „im Moment“.

vmstat

Eine kurze Wertetabelle wird angezeigt.

Es gibt Spalten mit den Überschriften Procs, Memory, Swap, IO, System und CPU. Die letzte Spalte (am weitesten rechts) enthält die Daten zur CPU.

Hier ist eine Liste der Datenelemente in jeder Spalte.

Vorgang

r: Die Anzahl der ausführbaren Prozesse. Dies sind Prozesse, die gestartet wurden und entweder ausgeführt werden oder auf ihren nächsten zeitgeteilten Stoß von CPU-Zyklen warten.
b: Die Anzahl der Prozesse im unterbrechungsfreien Ruhezustand. Der Prozess schläft nicht, er führt einen blockierenden Systemaufruf durch und kann nicht unterbrochen werden, bis er seine aktuelle Aktion abgeschlossen hat. Normalerweise ist der Prozess ein Gerätetreiber, der darauf wartet, dass eine Ressource frei wird. Alle in der Warteschlange befindlichen Interrupts für diesen Prozess werden behandelt, wenn der Prozess seine normale Aktivität wieder aufnimmt.

Erinnerung

swpd: die Menge des verwendeten virtuellen Speichers. Mit anderen Worten, wie viel Speicher ausgelagert wurde.,
free: die Menge des ungenutzten (derzeit ungenutzten) Speichers.
buff: die Menge an Speicher, die als Puffer verwendet wird.
Cache: Die Menge an Speicher, die als Cache verwendet wird.

  So verwenden Sie Keybase zum Verschlüsseln von Dateien unter Linux

Wechsel

si: Menge des virtuellen Speichers, der aus dem Auslagerungsbereich eingelagert wurde.
also: Menge des virtuellen Speichers, der in den Auslagerungsbereich ausgelagert wurde.

IO

bi: Von einem Blockgerät empfangene Blöcke. Die Anzahl der Datenblöcke, die verwendet werden, um den virtuellen Speicher wieder in den RAM auszulagern.
bo: An ein Blockgerät gesendete Blöcke. Die Anzahl der Datenblöcke, die zum Auslagern des virtuellen Speichers aus dem RAM und in den Auslagerungsbereich verwendet werden.

System

in: Die Anzahl der Interrupts pro Sekunde, einschließlich der Uhr.
cs: Die Anzahl der Kontextwechsel pro Sekunde. Ein Kontextwechsel tritt auf, wenn der Kernel von der Verarbeitung im Systemmodus in die Verarbeitung im Benutzermodus wechselt.

Zentralprozessor

Diese Werte sind alle Prozentsätze der gesamten CPU-Zeit.

us: Zeit für die Ausführung von Nicht-Kernel-Code. Das heißt, wie viel Zeit wird für die Verarbeitung der Benutzerzeit und für die Verarbeitung der netten Zeit aufgewendet.
sy: Zeit für die Ausführung von Kernel-Code.
id: Im Leerlauf verbrachte Zeit.
wa: Wartezeit auf Eingabe oder Ausgabe.
st: Von einer virtuellen Maschine gestohlene Zeit. Dies ist die Zeit, die eine virtuelle Maschine warten muss, bis der Hypervisor die Wartung anderer virtueller Maschinen abgeschlossen hat, bevor sie zurückkehren und sich um diese virtuelle Maschine kümmern kann.

Verwenden eines Zeitintervalls

Wir können vmstat veranlassen, diese Zahlen regelmäßig zu aktualisieren, indem wir einen Verzögerungswert verwenden. Der Verzögerungswert wird in Sekunden angegeben. Damit die Statistiken alle fünf Sekunden aktualisiert werden, verwenden wir den folgenden Befehl:

vmstat 5

Alle fünf Sekunden fügt vmstat der Tabelle eine weitere Datenzeile hinzu. Sie müssen Strg+C drücken, um dies zu stoppen.

Verwenden eines Zählwerts

Wenn Sie einen zu niedrigen Verzögerungswert verwenden, wird Ihr System zusätzlich belastet. Wenn Sie schnelle Updates benötigen, um zu versuchen, ein Problem zu diagnostizieren, wird empfohlen, sowohl einen Zählwert als auch einen Verzögerungswert zu verwenden.

Der Zählwert teilt vmstat mit, wie viele Aktualisierungen ausgeführt werden sollen, bevor es beendet wird, und führt Sie zur Eingabeaufforderung zurück. Wenn Sie keinen Zählwert angeben, wird vmstat ausgeführt, bis es durch Strg+C gestoppt wird.

Damit vmstat alle fünf Sekunden ein Update bereitstellt – aber nur für vier Updates – verwenden Sie den folgenden Befehl:

vmstat 5 4

Nach vier Updates stoppt vmstat von selbst.

Ändern der Einheiten

Sie können wählen, ob die Speicher- und Auslagerungsstatistiken in Kilobyte oder Megabyte angezeigt werden, indem Sie die Option -S (Einheitszeichen) verwenden. Darauf muss eines von k , K , m oder M folgen. Diese stehen für:

k: 1000 Byte
K: 1024 Byte
m: 1000000 Byte
M: 1048576 Byte

Verwenden Sie den folgenden Befehl, um die Statistik alle 10 Sekunden mit den in Megabytes angezeigten Speicher- und Auslagerungsstatistiken zu aktualisieren:

vmstat 10 -S M

Die Speicher- und Auslagerungsstatistiken werden jetzt in Megabyte angezeigt. Beachten Sie, dass die Option -S keinen Einfluss auf die IO-Blockstatistik hat. Diese werden immer in Blöcken angezeigt.

  Die 5 besten Gentoo Linux-Derivate zum Ausprobieren

Aktiver und inaktiver Speicher

Wenn Sie die Option -a (aktiv) verwenden, werden die Spalten buff und Cache-Speicher durch die Spalten „inact“ und „active“ ersetzt. Wie sie vorschlagen würden, zeigen diese die Menge des inaktiven und des aktiven Gedächtnisses.

Um diese beiden Spalten anstelle der Buff- und Cache-Spalten anzuzeigen, fügen Sie die Option -a wie gezeigt ein:

vmstat 5 -a -S M

Die inaktiven und aktiven Spalten werden von der Option -S (Einheitszeichen) beeinflusst.

Gabeln

Der Schalter -f zeigt die Anzahl der Forks an, die seit dem Hochfahren des Computers aufgetreten sind.

Mit anderen Worten, dies zeigt die Anzahl der Tasks, die seit dem Booten des Systems gestartet (und größtenteils wieder geschlossen) wurden. Jeder über die Befehlszeile gestartete Prozess würde diese Zahl erhöhen. Jedes Mal, wenn eine Aufgabe oder ein Prozess eine neue Aufgabe erzeugt oder klont, erhöht sich diese Zahl.

vmstat -f

Die Anzeige der Gabeln wird nicht aktualisiert.

Platteninfo anzeigen

Der Kernel muss sich um seine eigene Speicherverwaltung kümmern, ebenso wie die Speicherverwaltung für das Betriebssystem und alle Anwendungen.

Wie Sie sich vorstellen können, weist der Kernel Speicher für die vielen verschiedenen Arten von Datenobjekten, die er verarbeiten muss, immer und immer wieder zu und auf. Um dies so effizient wie möglich zu gestalten, verwendet es ein System namens Slabs. Dies ist eine Form des Cachings.

Speicher, der für einen bestimmten Typ von Kernel-Datenobjekt zugewiesen, verwendet und nicht mehr benötigt wird, kann für ein anderes Datenobjekt desselben Typs wiederverwendet werden, ohne dass der Speicher freigegeben und neu zugewiesen wird. Stellen Sie sich Slabs als vorab zugewiesene, maßgeschneiderte RAM-Segmente für die eigenen Bedürfnisse des Kernels vor.

Um die Statistiken für die Platten anzuzeigen, verwenden Sie die Option -m (Platten). Sie müssen sudo verwenden und werden zur Eingabe Ihres Passworts aufgefordert. Da die Ausgabe ziemlich lang sein kann, führen wir sie weniger durch.

sudo vmstat -m | less

Die Ausgabe hat fünf Spalten. Diese sind:

Cache: Name des Caches.
num: Die Anzahl der derzeit aktiven Objekte in diesem Cache.
total: Die Gesamtzahl der verfügbaren Objekte in diesem Cache.
size: Die Größe jedes Objekts im Cache.
Seiten: Die Gesamtzahl der Speicherseiten, die (mindestens) ein Objekt haben, das derzeit mit diesem Cache verknüpft ist.

Drücken Sie q, um weniger zu verlassen.

Anzeigen von Ereigniszählern und Speicherstatistiken

Um eine Seite mit Ereigniszählern und Speicherstatistiken anzuzeigen, verwenden Sie die Option -s (stats). Beachten Sie, dass dies ein kleines „s“ ist.

vmstat -s

Obwohl die gemeldeten Statistiken weitgehend mit den Informationen übereinstimmen, aus denen die Standardausgabe von vmstat besteht, sind einige von ihnen detaillierter aufgeteilt.

  So richten Sie Rsync unter Linux ein

Zum Beispiel kombiniert die Standardausgabe sowohl die nette als auch die nicht nette CPU-Zeit des Benutzers in der Spalte „us“. Die Anzeige -s (stats) listet diese Statistiken separat auf.

Anzeigen von Festplattenstatistiken

Mit der Option -d (Datenträger) können Sie eine ähnliche Auflistung von Datenträgerstatistiken abrufen.

vmstat -d | less

Für jede Festplatte werden drei Spalten angezeigt, nämlich Reads, Writes und IO.

IO ist die Spalte ganz rechts. Beachten Sie, dass die sec-Spalte in IO in Sekunden gemessen wird, die zeitbasierten Statistiken in den Lese- und Schreibspalten jedoch in Millisekunden.

Das bedeuten die Spalten:

Liest

total: Die Gesamtzahl der Festplattenlesevorgänge.
merged: Die Gesamtzahl der gruppierten Lesevorgänge.
Sektoren: Die Gesamtzahl der eingelesenen Sektoren.
ms: Gesamtanzahl der Zeit in Millisekunden, die zum Lesen von Daten von der Festplatte verwendet wurden.

schreibt

total: Die Gesamtzahl der Festplattenschreibvorgänge.
merged: Die Gesamtzahl der gruppierten Schreibvorgänge.
Sektoren: Die Gesamtzahl der Sektoren, in die geschrieben wurde.
ms = Gesamtzeit in Millisekunden, die zum Schreiben von Daten auf die Festplatte verwendet wurden.

IO

cur: Anzahl der aktuellen Lese- oder Schreibvorgänge auf der Festplatte.
sec: Zeit in Sekunden für alle laufenden Lese- oder Schreibvorgänge.

Anzeigen der zusammenfassenden Festplattenstatistik

Verwenden Sie die Option -D (Datenträgersumme), um eine schnelle Anzeige von zusammenfassenden Statistiken für Ihre Festplattenaktivität anzuzeigen. Beachten Sie den Großbuchstaben „D“.

vmstat -D

Die Anzahl der Festplatten sieht möglicherweise ungewöhnlich hoch aus. Auf dem Computer, auf dem dieser Artikel recherchiert wurde, läuft Ubuntu. Bei Ubuntu wird jedes Mal, wenn Sie eine Anwendung von einem Snap installieren, ein squashfs-Pseudo-Dateisystem erstellt, das an ein /dev/loop-Gerät angehängt wird.

Ärgerlicherweise werden diese Geräteeinträge von vielen Linux-Befehlen und -Dienstprogrammen als Festplattengeräte gezählt.

Partitionsstatistik anzeigen

Um Statistiken zu einer bestimmten Partition anzuzeigen, verwenden Sie die Option -p (Partition) und geben Sie die Partitionskennung als Befehlszeilenparameter an.

Hier sehen wir uns die Partition sda1 an. Die Ziffer Eins zeigt an, dass dies die erste Partition auf dem Gerät sda ist, das die Hauptfestplatte dieses Computers ist.

vmstat -p sda1

Die zurückgegebenen Informationen zeigen die Gesamtzahl der Festplattenlese- und Festplattenschreibvorgänge auf und von dieser Partition sowie die Anzahl der Sektoren, die in Festplattenlese- und Festplattenschreibaktionen enthalten sind.

Ein Blick unter die Haube

Es ist immer gut zu wissen, wie man die Motorhaube anhebt und sieht, was darunter passiert. Manchmal versuchen Sie, ein Problem zu lösen, manchmal ist es aus Interesse, weil Sie wissen möchten, wie Ihr Computer tickt.

vmstat kann Ihnen eine Menge nützlicher Informationen zur Verfügung stellen. Jetzt wissen Sie, wie Sie darauf zugreifen und was es bedeutet. Und vorgewarnt ist gewappnet – wenn Sie die Ärmel hochkrempeln und eine Diagnose durchführen müssen, wissen Sie, dass Sie vmstat auf Ihrer Seite haben.