Perf
全称Performance Event,是随着 Linux 2.6+ 一同发布的性能分析工具。通过它,应用程序可以利用 PMU,tracepoint 和内核中的特殊计数器来进行性能统计。它不但可以分析指定应用程序的性能问题 (per thread),也可以用来分析内核的性能问题,当然也可以同时分析应用代码和内核,从而全面理解应用程序中的性能瓶颈。
安装
perf
工具在 linux-tools 下面,安装如下三个包即可
apt-get install linux-tools-common linux-tools-generic linux-tools-`uname -r`
Perf 能触发的事件分为三类:
- hardware : 由 PMU 产生的事件,比如 cache-misses、cpu-cycles、instructions、branch-misses …等等,通常是当需要了解程序对硬件特性使用情况时使用
- software : 是核心程序产生的事件,比如 context-switches、page-faults、cpu-clock、cpu-migrations …等等
- tracepoint : 是核心中的静态 tracepoint 所触发的事件,这些 tracepoint 用來判断在程序执行时期核心的行为
使用
当通过非 root 用户执行 perf 时会遇到权限不足的错误,需要 sudo -i
切换到 root 用户来执行
打印出 perf 可触发的 event
perf list
实时显示当前系统的性能统计信息
perf top
通过概括精简的方式提供被调试程序运行的整体情况和汇总数据
perf stat ./test
perf 命令过于复杂,他有很多子命令集,更多的信息可以参考下面的链接。