Heim > Artikel > Betrieb und Instandhaltung > Was ist Linux Perf? Wie benutzt man es? (Nutzungszusammenfassung)
In der folgenden Kolumne wird die Verwendung von Linux Perf aus der Kolumne „Linux-System-Tutorial“ vorgestellt und zusammengefasst. Ich hoffe, dass es für Freunde hilfreich ist, die es benötigen!
Einführungperf ist ein Leistungsanalysetool, das in Linux-Systemen bereitgestellt wird. Es basiert auf einem Kernel-Subsystem namens „Leistungsindikatoren“ und unterstützt sowohl Hardware (CPU, PMU (Performance Monitoring Unit)) als auch Software (Softwareindikatoren). ) , Tracepoint) Leistungsanalyse auf Ebene.
Ereignisse in perfperf tasten wie andere Tools zur Leistungsoptimierung Überwachungsobjekte ab und schließen das Verhalten des gesamten Programms basierend auf der Verteilung der Abtastpunkte ab. Durch den Befehl perf list können wir sehen, dass perf viele Sampling-Ereignisse unterstützt, wie z. B. Branch-Misses, CPU-Clock usw. Die vordefinierten Ereignisse in perf gehören zu verschiedenen Typen, z. B. von Hardware generierten Ereignissen (Cache-Treffer/Zweigfehler) und von Software generierten Ereignissen (Kontextwechsel/Seitenfehler) usw.
TracepointTracepoint sind einige im Linux-Kernel definierte Hooks. Wenn sie aktiviert sind, werden sie ausgelöst, wenn eine bestimmte Logik ausgeführt wird, was es anderen Tools erleichtert, Informationen wie den internen Betriebsstatus des Systems zu erhalten Es zeichnet verschiedene Tracepoint-Ereignisse auf, zählt sie und generiert Analyseberichte.
VerwendungDie spezifische Verwendung des Perf-Tools ist wie folgt:
perf [--version] [--help] COMMAND [ARGS]
Die BEFEHLSliste kann durch Ausführen von perf --help angezeigt werden. Hier sind einige häufig verwendete Befehle.
perf statperf stat wird verwendet, um einen Befehl auszuführen und während seines Betriebs verschiedene Daten zu sammeln. Es kann einen Gesamtüberblick über den laufenden Status eines Programms liefern. Zum Beispiel:
user@localhost:~$ perf stat hostname localhost Performance counter stats for 'hostname': 0.313464 task-clock (msec) # 0.481 CPUs utilized 2 context-switches # 0.006 M/sec 0 cpu-migrations # 0.000 K/sec 153 page-faults # 0.488 M/sec 896,723 cycles # 2.861 GHz 620,709 instructions # 0.69 insn per cycle 121,143 branches # 386.465 M/sec 6,247 branch-misses # 5.16% of all branches 0.000651441 seconds time elapsed
Im obigen Beispiel wurde der Befehl hostname über perf stat ausgeführt und einige Indikatoren während seines Vorgangs wurden zusammengefasst und angezeigt, wie z. B. Task-Uhr, Kontextwechsel und Warten. Standardmäßig gibt perf stat Statistiken zu mehreren häufig verwendeten Ereignissen aus, z. B.:
task-clock-msecs:cpu 使用率 context-switches:进程切换次数 page-faults:发生缺页的次数 cpu-migrations:表示进程运行过程中发生了多少次CPU迁移,即被调度器从一个CPU转移到另外一个CPU上运行 cycles:处理器时钟,一条机器指令可能需要多个cycles instructions: 机器指令数目 branches:遇到的分支指令数 branch-misses是预测错误的分支指令数
Darüber hinaus können wir den Parameter -e verwenden, um die Ereignisse anzugeben, an denen wir interessiert sind, z. B.:
user@localhost:~$ perf stat -e cache-misses hostname localhost Performance counter stats for 'hostname': 682 cache-misses 0.000646676 seconds time elapsedperf top
perf top wird verwendet, um die aktuellen Leistungsstatistiken des Systems in Echtzeit anzuzeigen. Die vorherige Perf-Statistik wird verwendet, um ein bestimmtes Programm zu analysieren, und manchmal wissen wir möglicherweise nicht, welches Programm die Systemleistung beeinträchtigt. Zu diesem Zeitpunkt können wir Perf Top verwenden, um verdächtige Programme zu finden. Zum Beispiel:
Samples: 775 of event 'cpu-clock', Event count (approx.): 92931021 Overhead Shared Object Symbol 8.93% [kernel] [k] vsnprintf 7.73% perf [.] rb_next 5.92% [kernel] [k] kallsyms_expand_symbol.clone.0 5.07% [kernel] [k] format_decode 4.59% [kernel] [k] number 3.40% perf [.] symbols__insert 3.03% libslang.so.2.2.1 [.] SLtt_smart_puts
Das obige Beispiel zeigt, dass perf die Daten von CPU-Taktereignissen zählt und sie entsprechend dem Anteil sortiert. Wie perf stat können wir Statistiken über andere Ereignisse über den Parameter -e angeben. Beispielsweise können perf top -e context-switches die Top-N-Prozesse mit den meisten Prozesswechseln anzeigen.
Perf Record & Perf ReportPerf Record ähnelt Perf Stat. Es kann einen Befehl ausführen und statistische Informationen generieren, aber Perf Record zeigt die Ergebnisse nicht an, sondern gibt sie in eine Datei aus. Die von perf record generierten Dateien können mit perf report analysiert werden.
perf-Datensatz kann auch den Parameter -g verwenden, um während der Analyse ein Aufrufdiagramm zu generieren, das beim Auffinden einer logischen Verteilung auf höherer Ebene hilft.
AndereAnhand des Beispiels können wir feststellen, dass in der Symbolspalte in den Ergebnissen der Leistungsanalyse die Namen von C-Sprachfunktionen angezeigt werden. Bei Java werden die durch die JIT-Kompilierung generierten Funktionen direkt im Symbol anstelle des Java-Funktionsnamens angezeigt. Zu diesem Zeitpunkt ist es nicht so einfach, das Problem zu lokalisieren. Wir müssen zusätzliche Mittel verwenden, um das Symbol mit dem Symbol zu kombinieren Die Korrespondenztabelle des Java-Programms wird später ausführlich besprochen.
Empfohlenes Lernen: „
Linux-Video-TutorialDas obige ist der detaillierte Inhalt vonWas ist Linux Perf? Wie benutzt man es? (Nutzungszusammenfassung). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!