dnf install perf
perf --help 查看 perf 的子命令。perf list 查看 perf 支持的具体事件,使用 perf list --help 查看更详细的使用方法。perf list tracepoint
List of pre-defined events (to be used in -e or -M):alarmtimer:alarmtimer_cancel [Tracepoint event]alarmtimer:alarmtimer_fired [Tracepoint event]alarmtimer:alarmtimer_start [Tracepoint event]alarmtimer:alarmtimer_suspend [Tracepoint event]avc:selinux_audited [Tracepoint event]block:block_bio_backmerge [Tracepoint event]block:block_bio_bounce [Tracepoint event]block:block_bio_complete [Tracepoint event]block:block_bio_frontmerge [Tracepoint event]
perf stat -e "syscalls:sys_enter_*" -a -- sleep 10
Performance counter stats for 'system wide':1 syscalls:sys_enter_socket0 syscalls:sys_enter_socketpair0 syscalls:sys_enter_bind0 syscalls:sys_enter_listen1 syscalls:sys_enter_accept40 syscalls:sys_enter_accept1 syscalls:sys_enter_connect0 syscalls:sys_enter_getsockname0 syscalls:sys_enter_getpeername2 syscalls:sys_enter_sendto8 syscalls:sys_enter_recvfrom3 syscalls:sys_enter_setsockopt4 syscalls:sys_enter_getsockopt
perf record -a -g -- sleep 5
perf report,进入交互模式,类似 top 命令,按照提示在窗口进行操作:perf report
Samples: 7K of event 'cpu-clock:pppH', Event count (approx.): 1945500000Children Self Command Shared Object Symbol+ 99.88% 0.00% swapper [kernel.vmlinux] [k] secondary_startup_64_no_verify+ 99.88% 0.00% swapper [kernel.vmlinux] [k] cpu_startup_entry+ 99.88% 0.01% swapper [kernel.vmlinux] [k] do_idle+ 99.87% 0.01% swapper [kernel.vmlinux] [k] cpuidle_idle_call+ 99.86% 0.01% swapper [kernel.vmlinux] [k] default_idle_call+ 99.85% 99.73% swapper [kernel.vmlinux] [k] __cpuidle_text_start+ 82.83% 0.00% swapper [kernel.vmlinux] [k] start_secondary+ 17.05% 0.00% swapper [kernel.vmlinux] [k] start_kernel+ 17.05% 0.00% swapper [kernel.vmlinux] [k] arch_call_rest_init+ 17.05% 0.00% swapper [kernel.vmlinux] [k] rest_init0.12% 0.00% swapper [kernel.vmlinux] [k] __irq_exit_rcu
perf report --stdio 进入非交互模式,适合将分析结果重定向到文本文件:perf report --stdio
# Total Lost Samples: 0## Samples: 7K of event 'cpu-clock:pppH'# Event count (approx.): 1945500000## Children Self Command Shared Object Symbol# ........ ........ ............... .................... ........................................#99.88% 0.00% swapper [kernel.vmlinux] [k] secondary_startup_64_no_verify|---secondary_startup_64_no_verify||--82.83%--start_secondary| cpu_startup_entry| do_idle| || --82.82%--cpuidle_idle_call| || --82.81%--default_idle_call| || --82.79%--__cpuidle_text_start
perf script
swapper 0 [000] 23750.198473: 250000 cpu-clock:pppH:ffffffffb1373120 __cpuidle_text_start+0x10 (/boot/vmlinux-6.6.6-2401.0.1.tl4.x86_64)ffffffffb1373303 default_idle_call+0x33 (/boot/vmlinux-6.6.6-2401.0.1.tl4.x86_64)ffffffffb0946468 cpuidle_idle_call+0x158 (/boot/vmlinux-6.6.6-2401.0.1.tl4.x86_64)ffffffffb0946536 do_idle+0x76 (/boot/vmlinux-6.6.6-2401.0.1.tl4.x86_64)ffffffffb0946759 cpu_startup_entry+0x19 (/boot/vmlinux-6.6.6-2401.0.1.tl4.x86_64)ffffffffb1363a5a rest_init+0xca (/boot/vmlinux-6.6.6-2401.0.1.tl4.x86_64)ffffffffb2c444c6 arch_call_rest_init+0xa (/boot/vmlinux-6.6.6-2401.0.1.tl4.x86_64)ffffffffb2c44979 start_kernel+0x48b (/boot/vmlinux-6.6.6-2401.0.1.tl4.x86_64)ffffffffb080015a secondary_startup_64_no_verify+0xe5 (/boot/vmlinux-6.6.6-2401.0.1.tl4.x86_64)
js-d3-flame-graph:dnf install js-d3-flame-graph
perf script report flamegraph ,生成火焰图文件 flamegraph.html,在桌面环境用浏览器打开。文档反馈