Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Apakah linux perf? Bagaimana cara menggunakannya? (Ringkasan penggunaan)

Apakah linux perf? Bagaimana cara menggunakannya? (Ringkasan penggunaan)

藏色散人
藏色散人ke hadapan
2021-11-05 17:50:457241semak imbas

Lajur berikut akan memperkenalkan dan meringkaskan penggunaan linux perf dari lajur tutorial sistem linux Saya harap ia dapat membantu rakan-rakan yang memerlukan.

Pengenalan

perf ialah alat analisis prestasi yang disediakan dalam sistem Linux Ia berdasarkan subsistem kernel yang dipanggil "Pembilang prestasi" dan menyokong perkakasan (CPU, Analisis prestasi di peringkat PMU (Unit Pemantauan Prestasi) dan perisian (kaunter perisian, titik jejak).

Acara dalam perf

perf, seperti alat penalaan prestasi yang lain, membuat kesimpulan keseluruhan program dengan mensampel objek pemantauan dan berdasarkan taburan titik pensampelan Gelagat. Melalui perintah senarai perf, kita dapat melihat bahawa perf menyokong banyak peristiwa pensampelan, seperti rampasan cawangan, jam cpu, dsb. Peristiwa yang dipratentukan dalam perf tergolong dalam jenis yang berbeza, seperti peristiwa yang dijana perkakasan (cache hit/branch miss) dan peristiwa yang dijana perisian (context switch/page fault), dsb.

tracepoint

tracepoint ialah beberapa cangkuk yang ditakrifkan dalam kernel Linux Jika didayakan, ia akan dicetuskan apabila logik tertentu dilaksanakan, menjadikannya lebih mudah untuk alat lain diperoleh sistem Untuk status larian dalaman dan maklumat lain, perf menggunakan titik jejak Ia merekod dan mengira pelbagai peristiwa titik jejak dan menjana laporan analisis.

Cara menggunakan

Penggunaan khusus alat perf adalah seperti berikut:

perf [--version] [--help] COMMAND [ARGS]

Senarai COMMAND boleh dilihat dengan melaksanakan perf --help, Berikut adalah beberapa arahan yang biasa digunakan.

statistik perf

Fungsi statistik perf adalah untuk melaksanakan perintah dan mengumpul pelbagai data semasa operasinya Ia boleh memberikan gambaran keseluruhan status berjalan a program. Contohnya:

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

Dalam contoh di atas, arahan nama hos dijalankan melalui statistik perf dan beberapa penunjuk semasa operasinya diringkaskan dan dipaparkan, seperti jam tugas, suis konteks dan menunggu. Secara lalai, statistik perf akan mengeluarkan statistik beberapa peristiwa yang biasa digunakan, seperti:

task-clock-msecs:cpu 使用率
context-switches:进程切换次数
page-faults:发生缺页的次数
cpu-migrations:表示进程运行过程中发生了多少次CPU迁移,即被调度器从一个CPU转移到另外一个CPU上运行
cycles:处理器时钟,一条机器指令可能需要多个cycles
instructions: 机器指令数目
branches:遇到的分支指令数
branch-misses是预测错误的分支指令数

Selain itu, kami boleh menggunakan parameter -e untuk menentukan acara yang kami minati, seperti:

user@localhost:~$ perf stat -e cache-misses hostname
localhost
 Performance counter stats for 'hostname':
          682      cache-misses                                                
       0.000646676 seconds time elapsed

perf top

Fungsi perf top ialah untuk memaparkan statistik prestasi semasa sistem dalam masa nyata. Statistik perf sebelumnya digunakan untuk menganalisis program tertentu, dan kadangkala kami mungkin tidak tahu program yang mempengaruhi prestasi sistem Pada masa ini, kami boleh menggunakan perf top untuk mencari program yang mencurigakan. Contohnya:

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

Contoh di atas menunjukkan bahawa perf mengira data peristiwa jam cpu dan mengisihnya mengikut perkadaran. Seperti statistik perf, kami boleh menentukan statistik peristiwa lain melalui parameter -e Contohnya, suis konteks -e atas perf boleh melihat proses N teratas dengan suis proses yang paling banyak.

rekod perf & laporan perf

rekod perf adalah serupa dengan statistik perf Ia boleh menjalankan arahan dan menjana maklumat statistik, tetapi rekod perf tidak akan memaparkan hasilnya. keluar, sebaliknya mengeluarkan hasilnya ke fail. Fail yang dijana oleh rekod perf boleh dihuraikan dengan laporan perf.

rekod perf juga boleh menggunakan parameter -g untuk menjana graf panggilan semasa analisis untuk membantu mencari pengedaran logik peringkat lebih tinggi.

Lain-lain

Melalui contoh kita dapati bahawa lajur Simbol dalam hasil analisis perf memaparkan nama-nama fungsi bahasa c. Untuk Java, fungsi yang dihasilkan oleh kompilasi JIT akan dipaparkan secara langsung dalam simbol dan bukannya nama fungsi Java Pada masa ini, tidak begitu mudah untuk mencari masalah. Kita perlu menggunakan cara tambahan untuk menggabungkan simbol dengan simbol jadual program Java Correspondence akan dibincangkan secara terperinci kemudian.

Pembelajaran yang disyorkan: "tutorial video linux"

Atas ialah kandungan terperinci Apakah linux perf? Bagaimana cara menggunakannya? (Ringkasan penggunaan). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:juejin.im. Jika ada pelanggaran, sila hubungi admin@php.cn Padam