Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Was ist Linux Perf? Wie benutzt man es? (Nutzungszusammenfassung)

Was ist Linux Perf? Wie benutzt man es? (Nutzungszusammenfassung)

藏色散人
藏色散人nach vorne
2021-11-05 17:50:457241Durchsuche

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ührung

perf 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 perf

perf 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.

Tracepoint

Tracepoint 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.

Verwendung

Die 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 stat

perf 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 elapsed

perf 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 Report

Perf 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.

Andere

Anhand 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-Tutorial

Das 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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.im. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen