Perf 性能分析工具

Perf性能分析工具 Perf 是Linux kernel自带的系统性能优化工具。 Perf的优势在于与Linux Kernel的紧密结合,它可以最先应用到加入Kernel的new feature。pef可以用于查看热点函数,查看cashe miss的比率,从而帮助开发者来优化程序性能,也可以分析程

Perf性能分析工具

Perf 是Linux kernel自带的系统性能优化工具。 Perf的优势在于与Linux Kernel的紧密结合,它可以最先应用到加入Kernel的new feature。pef可以用于查看热点函数,查看cashe miss的比率,从而帮助开发者来优化程序性能,也可以分析程序运行期间发生的硬件事件,比如 instructions retired ,processor clock cycles 等;您也可以分析
软件事件,比如 Page Fault 和进程切换,这使得 Perf 拥有了众多的性能分析能力,

通过它,应用程序可以利用 PMU,tracepoint 和内核中的特殊计数器来进行性能统计。它不但可以分析指定应用程序的性能问题 (per thread),也可以用来分析内核的性能问题,当然也可以同时分析应用代码和内核,从而全面理解应用程序中的性能瓶颈。

举例来说,使用 Perf 可以计算每个时钟周期内的指令数,称为 IPC,IPC 偏低表明代码没有很好地利用 CPU。Perf 还可以对程序进行函数级别的采样,从而了解程序的性能瓶颈究竟在哪里等等。Perf 还可以替代 strace,可以添加动态内核 probe 点,还可以做 benchmark 衡量调度器的好坏。

sudo perf list 列出所有采样事件

perf stat -p [port] 在中断执行

perf top -g实时显示当前系统的性能统计信息

perf record记录采集的数据:-F 每秒采样99个;-g表示记录程序的调用栈;-e 可选择采样事;

perf record -p 进程号 -F 99 --call-graph dwarf -- sleep 10记录

如果只使用了sudo perf report

可以查看当前perf.data的数据,但是当你代码调用很多时候不好进行分析查看,这个时候我们就可以选择我们需要关注的重点信息查看,提高效率。例如以下的futex_wait:

选中之后,使用

sudo perf report --call-graph ,,,,callee --symbol-filter=**futex_wait**

后面增加你需要筛选监控的类型就可以单独显示了。

LICENSED UNDER CC BY-NC-SA 4.0
Comment