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!