Website-Suche

Cpustat – Überwacht die CPU-Auslastung durch die Ausführung von Prozessen unter Linux


Cpustat ist ein leistungsstarkes Systemleistungsmessprogramm für Linux, das mit der Programmiersprache Go geschrieben wurde. Mithilfe der USE-Methode (Utilization Saturation and Errors) (einer Methode zur Analyse der Leistung jedes Systems) wird versucht, die CPU-Auslastung und -Sättigung auf effektive Weise aufzudecken.

Es extrahiert höherfrequente Stichproben jedes Prozesses, der auf dem System ausgeführt wird, und fasst diese Stichproben dann mit einer niedrigeren Häufigkeit zusammen. Es kann beispielsweise jeden Prozess alle 200 ms messen und diese Proben alle 5 Sekunden zusammenfassen, einschließlich Min-/Durchschnitts-/Maximalwerten für bestimmte Metriken.

Empfohlene Lektüre: 20 Befehlszeilentools zur Überwachung der Linux-Leistung

Cpustat gibt Daten auf zwei mögliche Arten aus: eine reine Textliste des Zusammenfassungsintervalls und ein farbenfrohes Scroll-Dashboard für jede Stichprobe.

So installieren Sie Cpustat unter Linux

Sie müssen Go (GoLang) auf Ihrem Linux-System installiert haben, um cpustat verwenden zu können. Klicken Sie auf den Link unten, um den Installationsschritten für GoLang zu folgen es wurde installiert:

  1. Installieren Sie GoLang (Go Programming Language) unter Linux

Sobald Sie Go installiert haben, geben Sie unten den Befehl go get ein, um es zu installieren. Dieser Befehl installiert die cpustat-Binärdatei in Ihrem GOBIN Variable:

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 und dem Befehl sudo aus, d. h. wenn Sie das System als Nicht-Root-Benutzer steuern. Andernfalls erhalten Sie die folgende Fehlermeldung:

$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, schließen Sie GOBIN ein -Variable in Ihrer PATH-Umgebungsvariablen. Öffnen Sie den Link unten, um zu erfahren, wie Sie die PATH-Variable unter Linux festlegen.

  1. Erfahren Sie, wie Sie Ihre ` PATH-Variablen unter Linux dauerhaft festlegen

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 zur vorherigen Stichprobe.
  • Falls es sich um eine neue PID handelt, lesen Sie /proc/pid/cmdline.
  • Senden Sie für jede PID eine Netlink-Nachricht, um die Taskstatistiken abzurufen und die Differenz zum vorherigen Beispiel zu berechnen.
  • Rufen Sie /proc/stat ab, um die Gesamtsystemstatistiken abzurufen.

Auch hier wird jedes Schlafintervall angepasst, um die Zeit zu berücksichtigen, die für das Abrufen aller dieser Statistiken benötigt wird. Darüber hinaus wird bei jeder Probe auch die Zeit aufgezeichnet, die zum Skalieren jeder Messung mit der tatsächlich zwischen den Proben verstrichenen Zeit benötigt wurde. Dadurch wird versucht, Verzögerungen in cpustat selbst zu erklären.

Bei Ausführung ohne Argumente zeigt cpustat standardmäßig Folgendes an: Abtastintervall: 200 ms, Zusammenfassungsintervall: 2 s (10 Abtastwerte), zeigt die 10 wichtigsten Prozesse an, Benutzerfilter: alle, PID-Filter: alle als im folgenden Screenshot dargestellt:

sudo $GOBIN/cpustat 

Aus der obigen Ausgabe geht hervor, dass die systemweiten Zusammenfassungsmetriken, die vor den Feldern angezeigt werden, Folgendes bedeuten:

  • usr – minimale/durchschnittliche/maximale Laufzeit im Benutzermodus als Prozentsatz einer CPU.
  • sys – Min./Durchschnitt/Max. Systemmodus-Laufzeit als Prozentsatz einer CPU.
  • nice – Min./Durchschnitt/Max. Laufzeit im Benutzermodus mit niedriger Priorität als Prozentsatz einer CPU.
  • Leerlauf – minimale/durchschnittliche/maximale Laufzeit im 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 (identisch mit dem Lastdurchschnitt).
  • pblock – minimale/durchschnittliche/maximale Anzahl von Prozessen, die auf Festplatten-E/A blockiert sind.
  • pstart – Anzahl der in diesem Zusammenfassungsintervall gestarteten Prozesse/Threads.

Aus der obigen Ausgabe geht hervor, dass die verschiedenen Spalten für einen bestimmten Prozess Folgendes bedeuten:

  • Name – allgemeiner Prozessname aus /proc/pid/stat oder /proc/pid/cmdline.
  • pid – Prozess-ID, auch als „tgid“ bezeichnet.
  • Min – niedrigste Stichprobe der Benutzer- und Systemzeit für die PID, gemessen von /proc/pid/stat. Die Skalierung ist ein Prozentsatz einer CPU.
  • max – höchste Stichprobe der Benutzer- und Systemzeit für diese PID, auch gemessen von /proc/pid/stat.
  • usr – durchschnittliche Benutzerzeit für die PID über den Zusammenfassungszeitraum, gemessen ab /proc/pid/stat.
  • sys – durchschnittliche Systemzeit für die PID über den Zusammenfassungszeitraum, gemessen ab /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 ausführbar verbrachten, aber auf die Ausführung warteten, gemessen aus Taskstats über Netlink. Die Skalierung ist ein Prozentsatz einer CPU.
  • iow – Zeit, die der Prozess und alle seine Threads damit verbracht haben, durch Festplatten-E/A blockiert zu werden, gemessen aus Taskstats über Netlink. Die Skalierung ist ein Prozentsatz einer CPU, gemittelt über das Zusammenfassungsintervall.
  • swap – Zeit, die der Prozess und alle seine Threads damit verbracht haben, auf den Austausch zu warten, gemessen anhand der Taskstatistiken über Netlink. Die Skalierung ist ein Prozentsatz einer CPU, gemittelt über das Zusammenfassungsintervall.
  • vcx und icx – Gesamtzahl freiwilliger Kontextwechsel durch den Prozess und alle seine Threads über das Zusammenfassungsintervall, gemessen aus Taskstats über Netlink.
  • rss – aktueller RSS-Wert, abgerufen aus /proc/pid/stat. Dies ist die Menge an Speicher, die dieser Prozess verwendet.
  • ctime – Summe der Benutzer- und System-CPU-Zeit, die durch das Warten auf untergeordnete Elemente verbraucht wurde, die während dieses Zusammenfassungsintervalls beendet wurden, gemessen von /proc/pid/stat.

Beachten Sie, dass lang laufende untergeordnete Prozesse diese Messung oft verfälschen können, da die Zeit nur dann gemeldet wird, wenn der untergeordnete Prozess beendet wird. Dies ist jedoch nützlich, um die Auswirkungen häufiger Cron-Jobs und Integritätsprüfungen zu messen, bei denen die CPU-Zeit häufig von vielen untergeordneten Prozessen beansprucht wird.

  • thrd – Anzahl der Threads am Ende des Zusammenfassungsintervalls, gemessen ab /proc/pid/stat.
  • sam – Anzahl der Proben 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 im Zusammenfassungsintervall sichtbar.

Der folgende Befehl zeigt die 10 wichtigsten Root-Benutzerprozesse an, die auf dem System ausgeführt werden:

sudo $GOBIN/cpustat -u root

Um die Ausgabe in einem schicken 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 wichtigsten Linux-Prozesse an, 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 cpustat installieren und verwenden, ein nützliches Tool zur Messung der Systemleistung für Linux. Teilen Sie uns Ihre Gedanken über den Kommentarbereich unten mit.