perf 是一个强大的 Linux 命令行工具,用于分析应用程序和系统性能
安装 perf:
在大多数 Linux 发行版中,您可以使用包管理器安装 perf。例如,在 Ubuntu 或 Debian 上,可以使用以下命令安装:
sudo apt-get install linux-tools-common linux-tools-generic linux-tools-`uname -r`
收集性能数据:
要收集应用程序的性能数据,您需要运行它并使用 -e 选项指定要跟踪的事件。例如,要跟踪内核函数 sys_read 的调用次数,可以运行:
sudo perf event -e syscalls:sys_read -I 1000 ./your_application
这将每隔 1000 微秒记录一次 sys_read 事件的调用次数。您可以根据需要调整间隔。
输出结果:
默认情况下,perf 会将结果输出到标准输出。您可以使用 perf report 命令查看格式化后的结果:
sudo perf report -n --stdio
这将显示一个类似于以下的输出:
# Overhead Command Shared Object Symbol
# ........ ........ ............. ......
# Overhead Command Shared Object Symbol
# ........ ........ ............. ......
50.00% myapp myapp [.] my_function
|
|--50.00%-- main
start_thread
clone
这表示 my_function 函数占用了 50% 的时间,而 main 和 start_thread 函数各占用了 25%。
分析结果:
您可以使用 perf 提供的各种选项进一步分析结果。例如,要查看特定函数的源代码和行号,可以使用 -g 选项:
sudo perf report -g --stdio
要查看特定函数的调用图,可以使用 perf graph 命令:
sudo perf graph -f --stdio
这将显示一个调用图,帮助您了解函数之间的调用关系。
调试:
perf 还可以用于调试应用程序。例如,要跟踪特定函数的调用栈,可以使用 -F 选项:
sudo perf trace -F 99 ./your_application
这将每隔 99 毫秒记录一次函数调用栈。
这些只是 perf 的一些基本用法。您可以通过阅读 perf 手册页(man perf)和在线文档了解更多高级功能。