# yum -y install perf
# perf record -g
# perf report -i perf.data
# perf help report
-a, --all-cpus System-wide collection. (default)
-g Enables call-graph (stack chain/backtrace) recording.
# perf record -ag -- sleep 15
# perf report
在实际工作中,偶尔会遇到系统的CPU使用率和系统平均负载很高,但却找不到高CPU的应用。
产生这个问题的原因:进程有可能在不断的崩溃、重启。
通过uptime发现系统负载很高,但是通过top,mpstat,pidstat,perf等工具很难发现是什么进程导致了系统负载和CPU使用率很高。
注:通过上面工具的判断,即不是CPU密集型,也不存在IO等待,也不存在进程、线程争用的情况
execsnoop-专门用于为追踪短时进程(瞬时进程)设计的工具,它通过 ftrace 实时监控进程的 exec() 行为,并输出短时进程的基本信息,包括进程 PID、父进程 PID、命令行参数以及执行的结果。
centos 安装execsnoop cachestat等性能分析工具
https://www.codeleading.com/article/56251061422/
https://www.cnblogs.com/liujunjun/p/12248023.html
perf-tools/execsnoop
https://github.com/brendangregg/perf-tools/blob/master/execsnoop
Linux性能调优工具perf
https://www.cnblogs.com/gnivor/p/12535005.html
系统级性能分析工具perf的介绍与使用
https://www.cnblogs.com/arnoldlu/p/6241297.html
性能分析利器之perf浅析
https://msd.misuland.com/pd/3643782633961292984
Flame Graphs
http://www.brendangregg.com/flamegraphs.html
# strace -p PID -f
strace默认选项是不开启线程的,使用-f 选项开启现成跟踪。
# perf record -e 'fs:*' -ag
# perf report
使用perf命令可以从kernel层级记录文件系统的内核事件,相对strace我觉得perf还有一个优势就是对系统的消耗更低,更利于在生产环境使用。
perf report 更多的是统计上的分析,而 strace 则是可以看到每一个调用的细节
perf Examples
http://www.brendangregg.com/perf.html