cpustat - überwacht die CPU-Auslastung durch Ausführen von Prozessen unter Linux
Cpustat ist ein leistungsstarkes Programm zur Messung der Systemleistung für Linux, das in der Programmiersprache Go geschrieben wurde. Es wird versucht, die CPU-Auslastung und -Sättigung auf effektive Weise aufzudecken, indem die USE-Methode (Utilization Saturation and Errors) (eine Methode zur Analyse der Leistung eines Systems) verwendet wird.
Es extrahiert Proben mit höherer Frequenz von jedem Prozess, der auf dem System ausgeführt wird, und fasst diese Proben dann mit einer niedrigeren Frequenz zusammen. Zum Beispiel kann es jeden Prozess alle 200 ms messen und diese Stichproben alle 5 Sekunden zusammenfassen, einschließlich Min-/Durchschnitts-/Max-Werten für bestimmte Metriken.
Empfohlene Lektüre: 20 Befehlszeilentools zur Überwachung der Linux-Leistung
Cpustat gibt die Daten auf zwei mögliche Arten aus: eine reine Textliste des Zusammenfassungsintervalls und ein farbenfrohes Scroll-Dashboard jeder Stichprobe.
So installieren Sie Cpustat unter Linux
Sie müssen Go (GoLang) auf Ihrem Linux-System installiert haben, um cpustatat verwenden zu können, klicken Sie auf den untenstehenden Link, um den GoLang-Installationsschritten zu folgen, d.h. wenn Sie es nicht installiert haben:
- Installieren Sie GoLang (Go Programming Language) unter Linux
Sobald Sie Go installiert haben, geben Sie den Befehl go get unten ein, um es zu installieren, dieser Befehl installiert die cpustat-Binärdatei in Ihrer GOBIN-Variablen:
# go get github.com/uber-common/cpustat
So verwenden Sie Cpustat unter Linux
Wenn der Installationsvorgang abgeschlossen ist, führen Sie cpustat wie folgt mit root-Rechten aus, indem Sie den Befehl sudo verwenden, d. h. wenn Sie das System als Nicht-Root-Benutzer steuern, andernfalls erhalten Sie den angezeigten Fehler:
$ $GOBIN/cpustat
This program uses the netlink taskstats interface, so it must be run as root.
Hinweis: Um cpustat sowie alle anderen Go-Programme, die Sie auf Ihrem System installiert haben, wie alle anderen Befehle auszuführen, fügen Sie die GOBIN-Variable in Ihre PATH-Umgebungsvariable ein. Öffnen Sie den untenstehenden Link, um zu erfahren, wie Sie die PATH-Variable unter Linux festlegen.
- Erfahren Sie, wie Sie Ihre ` PATH-Variablen unter Linux dauerhaft setzen
So funktioniert cpustat; Das Verzeichnis /proc wird abgefragt, um die aktuelle Liste der Prozess-IDs für jedes Intervall abzurufen, und:
- Lesen Sie für jede PID /proc/pid/stat und berechnen Sie dann die Differenz zum vorherigen Beispiel.
- Falls es sich um eine neue PID handelt, lesen Sie /proc/pid/cmdline.
- Senden Sie für jede PID eine Netlink-Nachricht, um die taskstats abzurufen und die Differenz zum vorherigen Beispiel zu berechnen.
- fetch /proc/stat, um die Gesamtsystemstatistiken zu erhalten.
Auch hier wird jedes Schlafintervall angepasst, um die Zeit zu berücksichtigen, die zum Abrufen all dieser Statistiken aufgewendet wurde. Darüber hinaus zeichnet jede Probe auch die Zeit auf, die benötigt wurde, um jede Messung um die tatsächlich verstrichene Zeit zwischen den Proben zu skalieren. Dies versucht, Verzögerungen in cpustat selbst zu erklären.
Wenn cpustat ohne Argumente ausgeführt wird, zeigt es standardmäßig Folgendes an: Sampling-Intervall: 200ms, Zusammenfassungsintervall: 2s (10 Samples), zeigt die Top 10 Procs an, Benutzerfilter: alle, PID-Filter: alle, wie im Screenshot unten gezeigt:
$ sudo $GOBIN/cpustat
In der obigen Ausgabe sind die Bedeutungen der systemweiten Zusammenfassungsmetriken, die vor den Feldern angezeigt werden, im Folgenden aufgeführt:
- usr – Min./Avg/Max. Laufzeit des Benutzermodus in Prozent einer CPU.
- sys – minimale/durchschnittliche/maximale Laufzeit des Systemmodus in Prozent einer CPU.
- nice – Min/Avg/Max-Benutzermodus mit niedriger Priorität Laufzeit als Prozentsatz einer CPU.
- idle – minimale/durchschnittliche/maximale Laufzeit des Benutzermodus als Prozentsatz einer CPU.
- iowait – minimale/durchschnittliche/maximale Verzögerungszeit beim Warten auf Festplatten-E/A.
- prun – minimale/durchschnittliche/maximale Anzahl von Prozessen in einem ausführbaren Zustand (entspricht dem Lastdurchschnitt).
- pblock – minimale/durchschnittliche/maximale Anzahl von Prozessen, die auf der Festplatten-E/A blockiert werden.
- pstart – Anzahl der Prozesse/Threads, die in diesem Zusammenfassungsintervall gestartet wurden.
Noch aus der obigen Ausgabe ergibt sich für einen gegebenen Prozess, dass die verschiedenen Spalten folgendes bedeuten:
- name – allgemeiner Prozessname aus /proc/pid/stat oder /proc/pid/cmdline.
- PID – Prozess-ID, auch als "TGID" bezeichnet.
- min – niedrigste Stichprobe von Benutzer+Systemzeit für die PID, gemessen von /proc/pid/stat. Die Skalierung ist ein Prozentsatz einer CPU.
- max – höchste Stichprobe von Benutzer+Systemzeit für diese PID, auch gemessen aus /proc/pid/stat.
- usr – Durchschnittliche Benutzerzeit für die PID während des Zusammenfassungszeitraums, gemessen von /proc/pid/stat.
- sys – Durchschnittliche Systemzeit für die PID über den Zusammenfassungszeitraum, gemessen von /proc/pid/stat.
- nice – zeigt den aktuellen "nice"-Wert für den Prozess an, gemessen von /proc/pid/stat. Höher bedeutet "schöner".
- runq – Zeit, die der Prozess und alle seine Threads damit verbracht haben, ausgeführt zu werden, aber darauf warten, ausgeführt zu werden, gemessen von taskstats via netlink. Die Skalierung ist ein Prozentsatz einer CPU.
- iow – Zeit, zu der der Prozess und alle seine Threads durch Festplatten-E/A blockiert wurden, gemessen von taskstat über Netlink. Die Skalierung ist ein Prozentsatz einer CPU, der über das Zusammenfassungsintervall gemittelt wird.
- swap – Zeit, die der Prozess und alle seine Threads damit verbracht haben, darauf gewartet zu werden, ausgetauscht zu werden, gemessen von taskstats via netlink. Die Skalierung ist ein Prozentsatz einer CPU, der über das Zusammenfassungsintervall gemittelt wird.
- VCX und ICX – Gesamtzahl der freiwilligen Kontextwechsel durch den Prozess und alle seine Threads über das Zusammenfassungsintervall, gemessen von TaskStats über NetLink.
- rss – aktueller RSS-Wert, der von /proc/pid/stat abgerufen wird. Es ist die Menge an Speicher, die dieser Prozess verwendet.
- ctime – Summe der User+sys-CPU-Zeit, die von den Kindern verbraucht wurde, die während dieses Zusammenfassungsintervalls beendet wurden, gemessen von /proc/pid/stat.
Beachten Sie, dass lang andauernde untergeordnete Prozesse diese Messung oft verwirren können, da die Zeit erst gemeldet wird, wenn der untergeordnete Prozess beendet wird. Dies ist jedoch nützlich, um die Auswirkungen häufiger Cron-Jobs und Zustandsprüfungen zu messen, bei denen die CPU-Zeit häufig von vielen untergeordneten Prozessen verbraucht wird.
- thrd – Anzahl der Threads am Ende des Zusammenfassungsintervalls, gemessen von /proc/pid/stat.
- sam – Anzahl der Stichproben für diesen Prozess, die im Zusammenfassungsintervall enthalten sind. Prozesse, die kürzlich gestartet oder beendet wurden, waren möglicherweise für weniger Stichproben als das Zusammenfassungsintervall sichtbar.
Der folgende Befehl zeigt die Top 10 der Root-Benutzerprozesse an, die auf dem System ausgeführt werden:
$ sudo $GOBIN/cpustat -u root
Um die Ausgabe in einem ausgefallenen Terminalmodus anzuzeigen, verwenden Sie das Flag -t wie folgt:
$ sudo $GOBIN/cpustat -u roo -t
Um die oberste x-Anzahl von Prozessen anzuzeigen (der Standardwert ist 10), können Sie das Flag -n verwenden, der folgende Befehl zeigt die 20 besten Linux-Prozesse, die auf dem System ausgeführt werden:
$ sudo $GOBIN/cpustat -n 20
Sie können das CPU-Profil auch mit der Option -cpuprofile wie folgt in eine Datei schreiben und dann den Befehl cat verwenden, um die Datei anzuzeigen:
$ sudo $GOBIN/cpustat -cpuprofile cpuprof.txt
cat cpuprof.txt
Um Hilfeinformationen anzuzeigen, verwenden Sie das Flag -h wie folgt:
$ sudo $GOBIN/cpustat -h
Weitere Informationen finden Sie im cpustat Github Repository: https://github.com/uber-common/cpustat
Das ist alles! In diesem Artikel haben wir Ihnen gezeigt, wie Sie cputat installieren und verwenden, ein nützliches Tool zur Messung der Systemleistung für Linux. Teilen Sie uns Ihre Gedanken über den Kommentarbereich unten mit.


