GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux perf:So verwenden Sie den Befehl und den Profiler

Einführung

Das Linux-perf-Tool ist ein einfaches Befehlszeilenprogramm zum Profiling und Überwachen der CPU-Leistung auf Linux-Systemen. Obwohl das Tool einfach ist, bietet es detaillierte Informationen, die bei der Analyse von CPUs helfen.

Der Befehl enthält viele Unterbefehle zum Sammeln, Verfolgen und Analysieren von CPU-Ereignisdaten.

Diese Anleitung demonstriert das Perf-Tool anhand von Beispielen.

Voraussetzungen

  • Zugang zum Terminal.
  • Zugriff auf root oder einen Benutzer mit sudo-Berechtigungen.
  • Ein Texteditor wie nano oder Vi/Vim.

So installieren Sie perf

Das Programm perf ist auf Linux-Systemen nicht vorinstalliert. Die Installation unterscheidet sich je nach Linux-Distribution:

  • Ubuntu/Debian
sudo apt install linux-tools-$(uname -r) linux-tools-generic
  • RHEL/CentOS
sudo yum install perf
  • Fedora
sudo dnf install perf

Überprüfen Sie die Installation mit:

perf --version

Die Ausgabe gibt die Versionsnummer aus, die anzeigt, dass die Installation erfolgreich war.

Normalen Benutzern erlauben, perf zu verwenden

Der perf Befehl erfordert standardmäßig sudo Privilegien. Damit normale Benutzer perf verwenden können , gehen Sie wie folgt vor:

1. Wechseln Sie zum Root-Benutzer:

sudo su -

2. Geben Sie den folgenden Befehl ein:

echo 0 > /proc/sys/kernel/perf_event_paranoid

Der Befehl erlaubt normalen Benutzern, das Dienstprogramm perf in der aktuellen Sitzung zu verwenden.

3. Wechseln Sie zurück zum normalen Benutzer mit:

exit

Gehen Sie wie folgt vor, um die Änderungen beizubehalten:

1. Bearbeiten Sie die sysctl Konfigurationsdatei:

sudo nano /etc/sysctl.conf

2. Fügen Sie der Datei Folgendes hinzu:

kernel.perf_event_paranoid = 0

3. Speichern Sie die Änderungen und beenden Sie nano.

Linux-perf-Befehlssyntax

Die perf Befehlssyntax ist:

perf <options> subcommand <options/arguments>

Das Perf-Tool funktioniert wie Git. Es fungiert als Schnittstelle für verschiedene Unterbefehle und verschiedene Aktivitäten. Wenn Sie den Befehl ohne Optionen oder Argumente ausführen, wird die Liste der verfügbaren Unterbefehle angezeigt.

Linux-perf-Unterbefehle

Nachfolgend finden Sie eine Tabelle mit häufig verwendeten perf Unterbefehle:

Unterbefehl Beschreibung
annotate Liest perf.data und zeigt annotierten Code.
list Listet alle messbaren Ereignisse auf.
stat Erfasst Leistungsstatistiken.
record Speichert Samples in perf.data .
report Liest perf.data und zeigt das Profil an.
script Liest perf.data und zeigt die Trace-Ausgabe an.
top Profilerstellungstool.

Unterbefehle haben zusätzliche Optionen. Um Optionen für einzelne Unterbefehle anzuzeigen, führen Sie Folgendes aus:

perf <subcommand> -h

Die Ausgabe zeigt ein kurzes Hilfefenster für den jeweiligen Unterbefehl an.

Beispiele für Linux-perf-Befehle

Zum Testen von perf Befehl verwenden wir die kleine BMC-Instanz s0.d1 von phoenixNAP, auf der Ubuntu 18.04 ausgeführt wird.

Hinweis: Weitere Anwendungsfälle der kleinen BMC-Instanz finden Sie in einigen unserer Leitfäden:

  • Einrichten einer Firewall auf einer s0.d1.small BMC-Instanz
  • So richten Sie einen Load Balancer auf einem s0.d1.small BMC-Server ein
  • Einrichten einer Sandbox-Umgebung auf einer S.0-BMC-Instanz

Bei der Profilerstellung einer CPU mit dem perf Befehl, ist der typische Arbeitsablauf zu verwenden:

1. perf list um Ereignisse zu finden.

2. perf stat um die Ereignisse zu zählen.

3. perf record um Ereignisse in eine Datei zu schreiben.

4. perf report um die aufgenommene Datei zu durchsuchen.

5. perf script Ereignisse nach der Verarbeitung ausgeben.

Die Ausgaben unterscheiden sich je nach System und lokal verfügbaren Ressourcen.

1. Listen Sie die verfügbaren Ereignisse auf

Listen Sie alle messbaren Ereignisse mit perf auf mit dem list Unterbefehl:

sudo perf list

Die Ausgabe listet alle unterstützten Ereignisse auf, unabhängig vom Typ. Ohne sudo , zeigt der Befehl eine kürzere Liste. Wenn Sie in anderen Unterbefehlen auf Ereignisse verweisen, verwenden Sie -e -Tag gefolgt vom Ereignisnamen aus der ersten Spalte.

Fügen Sie den Filterparameter nach dem Befehl hinzu, um die Liste nach Ereignisname (erste Spalte) oder Ereignistyp (zweite Spalte) einzuschränken. Zeigen Sie beispielsweise nur Hardware-Ereignisse mit:

an
sudo perf list hardware

Oder alternativ:

sudo perf list hw

Die Ausgabe zeigt das gefilterte Ergebnis basierend auf dem oder den bereitgestellten Parametern.

2. CPU-Echtzeit-Systemprofil anzeigen

Um das CPU-Profil in Echtzeit anzuzeigen, verwenden Sie top Unterbefehl:

sudo perf top

Der Befehl zeigt abgetastete Funktionen in Echtzeit an, ähnlich wie der Linux-Befehl top. Die Ausgabe gibt die folgenden drei Spalten in der Reihenfolge von links nach rechts aus:

1. CPU-Auslastung, die an eine Funktion gebunden ist, ausgedrückt in Prozent.

2. Die Bibliothek oder das Programm, das die Funktion verwendet.

3. Der Name des Symbols und der Funktion, wobei [k] ist Kernelspace und [.] ist Benutzerraum.

Standardmäßig perf top überwacht alle Online-CPUs. Zusätzliche Optionen erlauben:

  • Überwachung aller CPUs (einschließlich Leerlauf) (-a ).
  • Überwachung bestimmter CPUs (-C ).
  • Steuerung der Abtastfrequenz (-F ).

Um während des Surfmodus zusätzliche Optionen anzuzeigen, drücken Sie h .

Um den Profiler zu verlassen und zum Terminal zurückzukehren, drücken Sie q .

3. Anzeigen der CPU-Leistungsstatistik mit perf

Führen Sie Folgendes aus, um CPU-Leistungsstatistiken für alle standardmäßigen CPU-weiten Hardware- und Softwareereignisse anzuzeigen:

sudo perf stat -a sleep 5

Die Ausgabe zeigt einen detaillierten Bericht für das gesamte System, der über fünf Sekunden gesammelt wurde. Ohne sleep 5 , misst das System bis zum Abbruch mit CTRL +C .

4. Anzeigen der CPU-Leistung für einen Befehl

Führen Sie Folgendes aus, um die CPU-Leistungsstatistik für einen bestimmten Befehl zu überprüfen:

sudo perf stat <command>

Suchen Sie beispielsweise nach ls Befehl mit:

sudo perf stat ls

Die Gesamtzeit, die ein Befehl benötigt, wird als verstrichene Zeit angezeigt am Ende der Ausgabe.

5. Anzeigen der CPU-Leistung für einen Prozess

Hängen Sie CPU-Leistungsstatistiken an einen bestimmten laufenden Prozess an, indem Sie -p verwenden -Tag und Angabe der Prozess-ID (PID):

sudo perf -p <PID> sleep 5

Die Ausgabe sammelt und zeigt Leistungsstatistiken für den angegebenen Prozess an.

6. Ereignissystemaufrufe nach Typ zählen

Führen Sie Folgendes aus, um Systemaufrufe des Linux-Kernels nach Typ zu zählen:

sudo perf stat -e 'syscalls:sys_enter_*' -a sleep 5

Nach fünf Sekunden zeigt die Ausgabe alle systemweiten Aufrufe und deren Anzahl an.

7. CPU-Zyklen aufzeichnen

CPU-Zyklen sind ein Hardware-Ereignis. Um CPU-Zyklen aufzuzeichnen, verwenden Sie record Unterbefehl und geben Sie den Ereignisnamen mit -e an Stichwort:

sudo perf record -e cycles sleep 10

Die Aufzeichnung speichert die Daten in einer perf.data Datei. Die Ausgabe gibt die Größe der Datei und die Anzahl der darin enthaltenen Datenproben aus.

8. Leistungsergebnisse ansehen

Zum Anzeigen der Leistungsergebnisse aus der perf.data Datei, führe aus:

sudo perf report

Der Befehl hilft beim Lesen der perf.data Datei, die alle gesammelten Ereignisse und Statistiken anzeigt. Um den Viewer zu verlassen, drücken Sie STRG +C .

9. Beispielausgabeformat ändern

Um die Beispielausgabe im Standardausgabeformat anzuzeigen, führen Sie Folgendes aus:

sudo perf report --stdio

Zusätzliche Änderungen umfassen die Anzeige der Probennummer für jedes Ereignis (-n ) und Anzeigen bestimmter Spalten (--sort <column name> ). Zum Beispiel:

sudo perf report -n --sort comm,symbol --stdio

Die Ausgabe fügt eine Spalte für die Probennummer und die Befehls- und Symbolinformationen hinzu.

10. Trace-Ausgabe anzeigen

Verwenden Sie den script Unterbefehl, um alle Ereignisse aus perf.dat aufzulisten a. Zum Beispiel:

sudo perf script

Die Ausgabe gibt die perf.data aus Details in zeitlicher Reihenfolge. Verwenden Sie den script Unterbefehl als Nachbearbeitungsdaten.

11. Trace-Header anzeigen

Um alle Ereignisse aus perf.data anzuzeigen mit zusätzlichen Trace-Header-Informationen, führen Sie aus:

sudo perf script --header

Die Ausgabe zeigt die Header-Informationen der Datei, z. B. wann der Trace gestartet wurde, wie lange er gedauert hat, CPU-Informationen und den Befehl, der die Daten abgerufen hat. Die Ereignisliste befindet sich nach den Header-Informationen.

12. Rohdaten ausgeben

Rohdaten als Hex aus der perf.data ausgeben Datei verwenden Sie den -D Möglichkeit:

sudo perf script -D

Das Ergebnis sind die rohen Ereignisablaufverfolgungsinformationen im ASCII-Format. Die Option ist hilfreich für das Event-Debugging.

13. Daten kommentieren

Um Daten zu kommentieren und weiter zu zerlegen, verwenden Sie annotate Unterbefehl:

sudo perf annotate --stdio -v

Der -v Option liefert eine detaillierte Ausgabe. Das Ergebnis zeigt den Quellcode und die Disassemblierung der Ereignisse.

Fazit

Nachdem Sie die Beispiele in diesem Handbuch durchgearbeitet haben, kennen Sie die Grundlagen der Verwendung von Linux perf Befehl und einige der wichtigsten Unterbefehle. Verwenden Sie den Befehl man, um die vollständige Dokumentation des Leistungsanalyse-Tools und der Unterbefehle anzuzeigen.


Linux
  1. So verwenden Sie den Linux-Grep-Befehl

  2. So verwenden Sie den Verlaufsbefehl unter Linux

  3. So erstellen Sie einen Alias ​​und verwenden den Alias-Befehl in Linux

  4. So verwenden Sie den id-Befehl unter Linux

  5. So installieren und verwenden Sie den Ping-Befehl unter Linux

So verwenden Sie den fd-Befehl auf einem Linux-System

Wie verwende ich den wget-Befehl unter Linux?

Wie verwende ich den xargs-Befehl unter Linux?

So installieren und verwenden Sie den Ack-Befehl unter Linux

So verwenden Sie den RPM-Befehl unter Linux

So verwenden Sie den which-Befehl in Linux