Die vmstat (virtuelle Speicherstatistik) Mit dem Befehl können Sie die Speichernutzung Ihres Systems überwachen. Es zeigt, wie viel virtueller Speicher vorhanden ist und wie viel frei ist und wie viel Paging-Aktivität vorhanden ist. Sie können Page-Ins und Page-Outs beobachten, während sie passieren. Dies ist äußerst nützlich, um Engpässe im physischen Speicher zu erkennen, die die Systemleistung beeinträchtigen können.
vmstat ohne Argumente ausführen
Bevor Sie beginnen, ist es wichtig zu beachten, dass die erste Zeile der Ausgabe von vmstat (und die einzige, die ausgegeben wird, wenn es ohne Argumente ausgeführt wird) eine Zusammenfassung seit der Systemstartzeit ist. Bei Leistungsproblemen ist es normalerweise nicht sehr nützlich, insbesondere wenn das System schon lange in Betrieb ist. Es kann jedoch immer noch hilfreiche Informationen zu Ereignissen enthalten, die in der Vergangenheit stattgefunden haben, aber derzeit nicht stattfinden.
# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 3 0 387560 62140 44 348320 1 2 94 20 90 15 1 1 98 0 0
Lesen der vmstat-Ausgabe
Die vmstat-Ausgabe enthält mehr als nur Speicherstatistiken. Wie bei iostat und mpstat akzeptiert vmstat Intervall- und Anzahlargumente. Das folgende Beispiel führt 3 Berichte im Abstand von 5 Sekunden aus:
# vmstat 5 3 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 3 0 384120 68604 8088 327332 1 2 90 20 90 14 1 1 98 0 0 1 0 384120 68604 8088 327364 0 0 0 0 91 179 1 0 99 0 0 0 0 384120 68232 8088 327364 0 0 0 0 107 190 1 1 98 0 0
Die Ausgabe ist in sechs Abschnitte unterteilt:
1. Prozesse
2. Erinnerung
3. tauschen
4. io
5. System
6. CPU
Prozesse
Die ersten beiden Spalten geben Auskunft über Prozesse:
r | Anzahl der Prozesse, die sich im Wartezustand befinden. Diese Prozesse tun nichts anderes, als darauf zu warten, ausgeführt zu werden. |
b | Anzahl der Prozesse, die sich im Schlafmodus befanden und seit dem letzten Update unterbrochen wurden |
Erinnerung
Die nächsten vier Spalten geben Auskunft über den Speicher:
swpd | Menge des verwendeten virtuellen Speichers |
kostenlos | Menge an ungenutztem Speicher |
buff | Speichermenge, die als Puffer verwendet wird |
zwischenspeichern | Speichermenge, die als Cache verwendet wird |
tauschen
Die nächsten zwei Spalten geben Informationen über Swap:
si | Speichermenge, die von der Festplatte ausgelagert wird (pro Sekunde) |
also | Auf die Festplatte ausgelagerter Arbeitsspeicher (pro Sekunde) |
si ungleich Null und also Zahlen zeigen an, dass nicht genügend physischer Speicher vorhanden ist und dass der Kernel Speicher auf Festplatte auslagert.
io
Die ersten beiden Spalten geben Auskunft über I/O (Input-Output):
bi | Anzahl der Blöcke pro Sekunde, die von einem Blockgerät empfangen werden |
bo | Anzahl der Blöcke pro Sekunde, die an ein Blockgerät gesendet werden |
System
Die nächsten beiden Spalten enthalten die folgenden Systeminformationen:
in | Anzahl der Interrupts pro Sekunde, einschließlich der Uhr |
cs | Anzahl der Kontextwechsel pro Sekunde |
Prozessor
Die letzten fünf Spalten geben die Prozentsätze der gesamten CPU-Zeit an:
uns | Prozentsatz der für Benutzerprozesse aufgewendeten CPU-Zyklen |
sy | Prozentsatz der für System-(Kernel-)Prozesse aufgewendeten CPU-Zyklen |
id | Prozentsatz der im Leerlauf verbrachten CPU-Zyklen |
wa | Prozentsatz der CPU-Zyklen, die mit dem Warten auf E/A verbracht wurden |
st | Prozentsatz der von einer virtuellen Maschine gestohlenen CPU-Zyklen |
Befehlszeilenoptionen
Zusätzliche Informationen können eingeschlossen werden, indem verschiedene Optionen für den vmstat-Befehl bereitgestellt werden. Einige der Befehlszeilenoptionen sind aufgeführt:
-a | Aktiven und inaktiven Speicher anzeigen. |
-f | Zeigt die Anzahl der Forks seit dem Booten an. |
-t | Fügen Sie der Ausgabe einen Zeitstempel hinzu. |
-d | Disk-Statistik melden. |
CPU-Engpässe
Es gibt zwei wichtige Bereiche der vmstat-Ausgabe, die sich auf die CPU-Leistung beziehen. Das erste ist das r Säule. Es ist die erste Spalte in der Ausgabe. Es enthält einen Wert, der der Anzahl der Threads entspricht, die sich während des letzten Intervalls, in dem vmstat ausgeführt wurde, in der Ausführungswarteschlange befanden. Diese Threads warteten darauf, dass eine CPU verfügbar wurde, um ausgeführt zu werden. Es gibt mehrere Denkrichtungen zur maximalen Anzahl, die hier angemessen ist, aber die meisten Menschen sind sich einig, dass mehr als das 2- bis 5-fache der Anzahl der CPUs im System einen Engpass darstellt (diese Schätzung muss für Mehrkern-CPUs angepasst werden).
Der zweite Ort, an dem Sie nach CPU-bezogenen Daten suchen, befinden sich in den rechten Spalten der Ausgabe. Es gibt drei Spalten:us (Benutzer) Zeit, sy (System) Zeit und id (Leerlauf) Zeit. Diese drei schlüsseln die Nutzung der CPU-Zeit in Prozent auf. Sie sollten sich zu 100 % addieren. Idealerweise verbringt eine CPU die meiste Zeit in den Kategorien us und id. Die Kategorie sy bezieht sich auf die Zeit, die die CPU mit der Arbeit auf Treiber-/Kernel-Ebene verbringt. Diese Zeit wird den Benutzeranwendungen entzogen. Wenn die CPUs die meiste Zeit in dieser Kategorie verbringen, könnte dies auf übermäßige Kontextwechsel aufgrund von CPU- oder Speicherengpässen, Problemen mit Sperren auf Kernelebene oder anderen Problemen hindeuten. Ein ausgelastetes System zeigt einen konstanten Leerlaufprozentsatz nahe Null. Aber ein ausgelastetes System bedeutet nicht unbedingt, dass das System überlastet ist.
Festplatten-/IO-Leistung
Das Dienstprogramm vmstat kann uns nicht sagen, welche Festplatten einen Engpass haben, aber es kann uns sagen, ob insgesamt ein IO-Problem vorliegt. Die wichtige Spalte in der Ausgabe ist die Spalte b (blockiert). Es bezieht sich auf die Anzahl der Threads, die im vergangenen Intervall blockiert wurden oder auf die E/A-Vervollständigung gewartet haben. Die b-Spalte sollte die meiste Zeit 0 sein. Wenn in dieser Spalte ständig eine Zahl ungleich Null steht, können Sie mit iostat weiter nachforschen.
Speicherengpässe
Die Analyse von speicherbezogenen Problemen sollte mit der Überprüfung der Menge an freiem Speicher in der vmstat-Ausgabe beginnen, die sich in der 4. Spalte befindet. Wenn der freie Speicher gering ist, müssen wir genauer untersuchen, welcher Prozess mehr Speicher verbraucht.
Schlussfolgerung
Der vmstat-Befehl kann ein nützliches Tool zur Sichtung von Leistungsproblemen sein. Es kann Ihnen mitteilen, welche Subsysteme genauer untersucht werden müssen, um das Problem weiter zu diagnostizieren.
Verwendung von iostat zur Überwachung der Systemleistung unter Linux (Beispiele enthalten)