Perf 是用来进行软件性能统计和分析的工具,它是一款随 Linux 内核代码一同发布和维护的性能诊断分析工具,Perf 既可以对应用程序的性能进行统计和分析,也可以对内核代码的性能进行统计和分析,从而全面分析和找到应用程序中的性能瓶颈所在,号称进行性能分析的 “瑞士军刀”。
举例:
测试程序代码见下图
1、perf stat 对 test.c 程序进行整体的分析
perf stat ./test
task-clock(msec):CPU 使用用率,该值越高,说明耗费的 CPU 越多
context-switches:进程切换的次数,应该避免过高的进程切换次数。
CPU-migrations: CPU 迁移的次数,即被调度器从一个 CPU 转移到另一个 CPU 上运行的次数。
page-faults:处理器中产生的 “页面错误” 的数量
cycles:CPU时钟,即程序运行需要多少个时钟,
instructions: 程序运行执行机器指令的数量。
branches:处理器分支预测的使用率情况
branch-misses: 处理器分支预测的失败率,该值越高CPU性能使用越低
2、perf top 可以查看当前系统最耗时的内核函数或某个进程信息情况
3、perf record 和 perf report 根据 CPU 使用率情况更加细粒度的进行性能的分析
perf record –e cpu-clock ./test
perf -g report
小结:
perf性能调优工具功能非常的强大,子命令也非常的多,大家可以 man perf 和 perf --help 仔细研究学习下,当需要优化程序的时候非常的实用
作者简介:
AnyTopOne 是一个开源软件(Free and Open-Source Software) 爱好者,先后从事Linux系统管理、程序开发、大规模平台架构设计、团队管理等工作,从业经验13年有余,具有丰富的IT行业从业经验,喜欢与其大家干货经验分享与交流。
作者:AnyTopOne