Befehl vmstat
Das erste Tool, das verwendet wird, ist der Befehl vmstat , der schnell kompakte Informationen zu verschiedenen Systemressourcen und den zugehörigen Leistungsproblemen bereitstellt.
# vmstat 2
kthr memory page faults cpu
----- ----------- ------------------------ ------------ -----------
r b avm fre re pi po fr sr cy in sy cs us sy id wa
1 0 22478 1677 0 0 0 0 0 0 188 1380 157 57 32 0 10
1 0 22506 1609 0 0 0 0 0 0 214 1476 186 48 37 0 16
0 0 22498 1582 0 0 0 0 0 0 248 1470 226 55 36 0 9
2 0 22534 1465 0 0 0 0 0 0 238 903 239 77 23 0 0
2 0 22534 1445 0 0 0 0 0 0 209 1142 205 72 28 0 0
2 0 22534 1426 0 0 0 0 0 0 189 1220 212 74 26 0 0
3 0 22534 1410 0 0 0 0 0 0 255 1704 268 70 30 0 0
2 1 22557 1365 0 0 0 0 0 0 383 977 216 72 28 0 0
2 0 22541 1356 0 0 0 0 0 0 237 1418 209 63 33 0 4
1 0 22524 1350 0 0 0 0 0 0 241 1348 179 52 32 0 16
1 0 22546 1293 0 0 0 0 0 0 217 1473 180 51 35 0 14Diese Ausgabe zeigt den Effekt der Einführung eines Programms in einer engen Schleife zu einem stark ausgelasteten Mehrbenutzersystem. Die ersten drei Berichte (die Zusammenfassung wurde entfernt) zeigen den Systemausgleich bei 50-55 Prozent Benutzer, 30-35 Prozent System und 10-15 Prozent E/A-Wartestatus. Wenn das Schleifenprogramm beginnt, werden alle verfügbaren CPU-Zyklen verbraucht. Da das Schleifenprogramm keine Ein-/Ausgabe ausführt, kann es alle zuvor nicht verwendeten Zyklen aufgrund des E/A-Wartestatus aufnehmen. Schlimmer noch, es stellt einen Prozess dar, der immer bereit ist, die CPU zu übernehmen, wenn ein nützlicher Prozess sie freigibt. Da das Schleifenprogramm eine Priorität hat, die der aller anderen Vordergrundprozesse entspricht, muss es die CPU nicht unbedingt aufgeben, wenn ein anderer Prozess zuteilbar wird. Das Programm wird ungefähr 10 Sekunden lang ausgeführt (fünf Berichte), und dann kehrt die vom Befehl vmstat gemeldete Aktivität zu einem normaleren Muster zurück.
Bei optimaler Nutzung würde die CPU 100 Prozent der Zeit arbeiten. Dies gilt für ein Einzelbenutzersystem ohne gemeinsame Nutzung der CPU. Im Allgemeinen, wennus+syZeit liegt unter 90 Prozent, ein Einzelbenutzersystem wird nicht als CPU beschränkt betrachtet. Wenn jedochus+syZeit auf einem Mehrbenutzersystem überschreitet 80 Prozent. Die Prozesse können Zeit in der Ausführungswarteschlange warten. Die Antwortzeit und der Durchsatz können darunter leiden.
Um zu überprüfen, ob die CPU der Engpass ist, betrachten Sie die viercpuSpalten und die beidenkthr(Kernelthreads) Spalten im Bericht vmstat . Es kann sich auch lohnen, sich diefaultsSpalte:
- CPU
Prozentuale Aufgliederung der CPU-Auslastung während des Intervalls. DercpuDie Spalten lauten wie folgt:
- us
DerusSpalte zeigt den Prozentsatz der im Benutzermodus verbrachten CPU-Zeit. Ein UNIX-Prozess kann entweder im Benutzermodus oder im Systemmodus (Kernel) ausgeführt werden. Im Benutzermodus wird ein Prozess innerhalb seines Anwendungscodes ausgeführt und benötigt keine Kernelressourcen, um Berechnungen durchzuführen, Speicher zu verwalten oder Variablen festzulegen.
- sy
DersySpalte enthält Details zu dem Prozentsatz der Zeit, die die CPU einen Prozess im Systemmodus ausgeführt hat. Dazu gehören CPU-Ressourcen, die von Kernelprozessen (kprocs) und anderen Prozessen belegt werden, die Zugriff auf Kernelressourcen benötigen. Wenn ein Prozess Kernelressourcen benötigt, muss er einen Systemaufruf ausführen und wird dadurch in den Systemmodus umgeschaltet. Das Lesen oder Schreiben einer Datei erfordert beispielsweise Kernelressourcen, um die Datei zu öffnen, eine bestimmte Position zu suchen und Daten zu lesen oder zu schreiben, sofern keine Speicherzuordnungsdateien verwendet werden.
- id
DeridDie Spalte zeigt den Prozentsatz der Zeit an, in der sich die CPU im Leerlauf oder im Wartestatus befindet, ohne dass die lokale Platten-E/A ansteht. Sind keine Threads zur Ausführung verfügbar (die Ausführungswarteschlange ist leer), teilt das System einen Thread mit dem Namen waitzu, der auch als idle kprocbezeichnet wird. Auf einem SMP-System kann ein wait -Thread pro Prozessor zugeteilt werden. Der mit dem Befehl ps generierte Bericht (mit der Option -k oder -g 0 ) gibt Folgendes an:kprocoderwait. Wenn der ps -Bericht eine hohe Gesamtzeit für diesen Thread anzeigt, bedeutet dies, dass es erhebliche Zeiträume gab, in denen kein anderer Thread zur Ausführung bereit war oder auf die Ausführung auf der CPU wartete. Das System war daher meist inaktiv und wartete auf neue Tasks .
- wa
DerwaSpaltendetails zum Prozentsatz der Zeit, in der die CPU inaktiv war, mit anstehender lokaler Platten-E/A und NFS-angehängten Platten. Wenn mindestens eine ausstehende Ein-/Ausgabe für eine Platte aussteht, während wait aktiv ist, wird die Zeit als Warten auf Ein-/Ausgabe klassifiziert. Wenn der Prozess keine asynchrone Ein-/Ausgabe verwendet, führt eine E/A-Anforderung an die Platte dazu, dass der aufrufende Prozess blockiert (oder inaktiviert) wird, bis die Anforderung abgeschlossen ist. Sobald eine E/A-Anforderung für einen Prozess abgeschlossen ist, wird sie in die Ausführungswarteschlange gestellt. Wenn die Ein-/Ausgaben schneller abgeschlossen werden, könnte mehr CPU-Zeit verwendet werden.
AwaEin Wert von über 25 Prozent kann darauf hinweisen, dass das Plattensubsystem möglicherweise nicht ordnungsgemäß ausgeglichen ist oder das Ergebnis einer plattenintensiven Arbeitslast ist.
Informationen zur Änderung anwa, siehe Berichte zur E/A-Wartezeit.
- us
- kthr
Die durchschnittliche Anzahl der Kernel-Threads in verschiedenen Warteschlangen pro Sekunde während des Stichprobenintervalls. DerkthrDie Spalten lauten wie folgt:
- r
Die durchschnittliche Anzahl der Kernel-Threads, die ausgeführt werden können, einschließlich aktiver Threads und Threads, die auf die CPU warten. Wenn diese Anzahl größer als die Anzahl der CPUs ist, wartet mindestens ein Thread auf eine CPU und je mehr Threads auf CPUs warten, desto größer ist die Wahrscheinlichkeit eines Leistungseinflusses.
- b
Die durchschnittliche Anzahl der Kernel-Threads in der VMM-Warteschlange pro Sekunde. Dies schließt Threads ein, die auf Dateisystem-E/A warten, oder Threads, die aufgrund der Steuerung der Speicherauslastung ausgesetzt wurden.
Wenn Prozesse aufgrund der Speicherauslastungssteuerung ausgesetzt werden, wird die blockierte Spalte (b) Im Bericht vmstat wird die Zunahme der Anzahl der Threads anstelle der Ausführungswarteschlange angegeben.
- p
Für vmstat -I Die Anzahl der Threads, die pro Sekunde auf E/A-Operationen für Roheinheiten warten. Threads, die auf Ein-/Ausgaben für Dateisysteme warten, werden hier nicht eingeschlossen.
- r
- Fehler
Informationen zur Prozesssteuerung, z. B. Trap-und Interruptrate. DerfaultsDie Spalten lauten wie folgt:
- in
Die Anzahl der im Intervall beobachteten Einheiteninterrupts pro Sekunde. Weitere Informationen finden Sie unter Plattenleistung mit dem vmstat-Befehl bewerten.
- sy
Die Anzahl der im Intervall beobachteten Systemaufrufe pro Sekunde. Ressourcen sind für Benutzerprozesse über klar strukturierte Systemaufrufe verfügbar. Diese Aufrufe weisen den Kernel an, Operationen für den aufrufenden Prozess auszuführen und Daten zwischen dem Kernel und dem Prozess auszutauschen. Da Workloads und Anwendungen sehr unterschiedlich sind und unterschiedliche Aufrufe unterschiedliche Funktionen ausführen, kann nicht definiert werden, wie viele Systemaufrufe pro Sekunde zu viele sind. Aber in der Regel, wenn diesySpalte erhöht über 10000 Aufrufe pro Sekunde auf einem Einzelprozessor, weitere Untersuchungen werden gefordert (auf einem SMP-System ist die Zahl 10000 Aufrufe pro Sekunde pro Prozessor). Ein Grund könnten "Polling" -Subroutinen wie die Subroutine select () sein. Für diese Spalte ist es ratsam, eine Basismessung zu haben, die eine Zählung für eine normalesyWert.
- cs
Die Anzahl der Kontextwechsel pro Sekunde, die im Intervall beobachtet wurden. Die physische CPU-Ressource wird in logische Zeitscheiben von jeweils 10 Millisekunden unterteilt. Wenn ein Thread zur Ausführung terminiert ist, wird er ausgeführt, bis seine Zeitscheibe abläuft, bis er zurückgestellt wird oder bis er freiwillig die Steuerung der CPU aufgibt. Wenn ein anderer Thread die Steuerung der CPU erhält, muss der Kontext oder die Arbeitsumgebung des vorherigen Threads gespeichert und der Kontext des aktuellen Threads geladen werden. Das Betriebssystem verfügt über eine sehr effiziente Kontextwechselprozedur, so dass jeder Schalter in Bezug auf Ressourcen kostengünstig ist. Jede signifikante Zunahme von Kontextwechseln, z. B. wanncsist viel höher als die Platten-E/A und die Netzpaketrate, sollte die Ursache für weitere Untersuchungen sein.
- in