November 22, 2019
·
linux
perf
perf 排查系统运行瓶颈
systemstap安装稍微有些复杂,需要kernel-debuginfo,kernel-debuginfo-common,kernel-devel
线上服务器安装的话,会有点困难。考虑到这个问题,systemstap提供了交叉编译的工具。
不过这篇主要介绍下perf
1
| sudo perf top -e 'cycles' -s comm,pid
|
off-CPU 火焰图
1 2 3 4 5 6 7 8 9
| # perf record -e sched:sched_stat_sleep -e sched:sched_switch \ -e sched:sched_process_exit -a -g -o perf.data.raw sleep 1 # perf inject -v -s -i perf.data.raw -o perf.data # perf script -F comm,pid,tid,cpu,time,period,event,ip,sym,dso,trace | awk ' NF > 4 { exec = $1; period_ms = int($5 / 1000000) } NF > 1 && NF <= 4 && period_ms > 0 { print $2 } NF < 2 && period_ms > 0 { printf "%s\n%d\n\n", exec, period_ms }' | \ ./stackcollapse.pl | \ ./flamegraph.pl --countname=ms --title="Off-CPU Time Flame Graph" --colors=io > offcpu.svg
|
http://www.brendangregg.com/blog/2015-02-26/linux-perf-off-cpu-flame-graph.html
追踪所有系统调用
1
| sudo perf record -e 'syscalls:sys_enter' -e 'syscalls:sys_exit' -a -o perf.data.raw
|
带时间戳
1 2 3
| perf record -e syscalls:sys_enter -e syscalls:sys_exit -a -g -o perf.data.raw sudo perf inject -v -s -i perf.data.raw -o perf.data perf script -F comm,pid,tid,cpu,time,period,event,ip,sym,dso,trace
|