Übersicht
perf ist ein unverzichtbares Werkzeug für Entwickler und Systemadministratoren zur Diagnose und Optimierung von Leistungsproblemen. Es bietet eine breite Palette von Leistungsanalysefunktionen wie die Erfassung von Statistiken, die Aufzeichnung von Ereignissen und die Generierung von Berichten über verschiedene Unterbefehle.
Hauptfunktionen
- CPU-Profiling (CPU-Auslastung, Analyse des Aufrufstapels)
- Überwachung von Hardware-Ereignissen (Cache-Fehler, Branch-Prediction-Fehler usw.)
- Überwachung von Software-Ereignissen (Scheduling-Ereignisse, Seitenfehler usw.)
- Verfolgung und Analyse von Systemaufrufen
- Dynamisches Tracing (kprobes, uprobes)
Hauptoptionen (Unterbefehle)
perf führt Funktionen über verschiedene Unterbefehle aus. Jeder Unterbefehl hat seine eigenen Optionen.
perf stat: Statistiken erfassen
perf record: Leistungsdaten aufzeichnen
perf report: Aufgezeichnete Daten analysieren
perf list: Liste verfügbarer Ereignisse
Erzeugter Befehl:
Kombinieren Sie die Befehle.
Beschreibung:
`perf` Führen Sie den Befehl aus.
Kombinieren Sie diese Optionen und führen Sie die Befehle virtuell zusammen mit der KI aus.
Anwendungsbeispiele
Verschiedene Anwendungsbeispiele für den Befehl perf.
Anzeigen von Statistiken zur Ausführung des ls-Befehls
perf stat ls
Überprüft grundlegende Leistungsstatistiken wie CPU-Zyklen, Befehlsanzahl und Cache-Fehler während der Ausführung des ls-Befehls.
Überwachung eines bestimmten Prozesses für 5 Sekunden
perf stat -p 1234 sleep 5
Überwacht die Leistungsstatistiken eines Prozesses mit der PID 1234 für 5 Sekunden. (Ersetzen Sie dies durch die tatsächliche PID)
Aufzeichnung des Aufrufdiagramms während der Ausführung einer Anwendung
perf record -g ./my_app
Zeichnet Leistungsdaten einschließlich Informationen zum Funktionsaufrufstapel während der Ausführung von my_app auf. Die aufgezeichneten Daten werden in der Datei perf.data gespeichert.
Analyse aufgezeichneter Daten
perf report
Analysiert die von perf record erstellte Datei perf.data interaktiv, um Leistungsengpässe visuell zu identifizieren.
Anzeigen der Liste verfügbarer Hardware-Ereignisse
perf list hw
Überprüft die Liste aller Hardware-Leistungsereignisse, die perf auf dem aktuellen System überwachen kann.
Installation
perf ist möglicherweise nicht auf den meisten Linux-Distributionen standardmäßig installiert. Sie können es mit den folgenden Befehlen installieren.
Debian/Ubuntu
sudo apt update
sudo apt install linux-tools-common linux-tools-$(uname -r)
Befehl zur Installation von perf auf Debian- oder Ubuntu-basierten Systemen. Sie müssen das passende linux-tools-Paket für Ihre Kernel-Version installieren.
CentOS/RHEL/Fedora
sudo yum install perf
# oder sudo dnf install perf (Fedora)
Befehl zur Installation von perf auf CentOS-, RHEL- oder Fedora-basierten Systemen.
Tipps & Hinweise
Nützliche Tipps und Dinge, die Sie bei der Verwendung von perf beachten sollten.
Root-Berechtigungen
Die meisten perf-Befehle erfordern Root-Berechtigungen (sudo), da sie systemweite Leistungsdaten erfassen.
- Wenn Sie eine Fehlermeldung wie 'Operation not permitted' erhalten, versuchen Sie, den Befehl mit sudo auszuführen.
Laden von Kernel-Symbolen
Wenn Funktionsnamen in 'perf report' als 'unknown' angezeigt werden, müssen Sie Kernel-Symbole laden. Dies ist durch die Installation von Paketen wie 'kernel-debuginfo' oder 'kernel-devel' möglich.
- CentOS/RHEL: `sudo debuginfo-install kernel`
- Ubuntu/Debian: `sudo apt install linux-image-$(uname -r)-dbg`
Overhead
Da perf sehr detaillierte Daten erfasst, kann die Verwendung von 'perf record' mit einer hohen Abtastrate einen gewissen Overhead auf dem System verursachen. Seien Sie vorsichtig bei der Verwendung in Produktionsumgebungen.
- Auf leistungssensitiven Systemen sollten Sie mit einer niedrigeren Abtastrate (-F Option) beginnen, um den Overhead zu minimieren.
Verwendung von perf top
'perf top' ist ein nützlicher Unterbefehl, der in Echtzeit die Funktionen mit der höchsten CPU-Auslastung anzeigt. Er eignet sich für die einfache Leistungsüberwachung.
- Verwenden Sie 'perf top', um schnell die Funktionen zu identifizieren, die derzeit die meiste CPU-Zeit auf Ihrem System verbrauchen.