系统级性能优化通常包括两阶段:性能剖析和代码优化。
perf是内置于linux内核源码树中的性能剖析工具,它基于事件采样原理,以性能事件为基础,可用于性能瓶颈的查找与热点代码的定位。
主要作用:
perf工具可用于对软件进行优化,包括算法优化(空间复杂度、时间复杂度)和代码优化(提高执行速度、减少内存占用)。还可以评估程序对硬件资源的使用情况,例如各级cache的访问次数,各级cache的丢失次数、流水线停顿周期、前端总线访问次数等。也可以评估程序对操作系统资源的使用情况,系统调用次数、上下文切换次数、任务迁移次数等。
#记录httpd进程的性能数据
perf record -p `pgrep -d ',' httpd`
#默认会将记录写入perf.data文件中,分析perf.data文件,命令:
perf report -i perf.data
perf top的用法
perf top -e cache-misses -p 32479
perf top -e task-clock -p 32479
perf top -G // 得到函数调用关系图
perf top-e cache-misses -G // 得到调用关系图
perf top -e cycles // 指定性能事件
perf top -p 23015,32476 //查看这两个进程的cpu cycles使用情况
perf top -s comm,pid,symbol // 显示调用symbol的进程名和进程号
perf top --comms nginx,top // 仅显示属于指定进程的符号
perf top --symbols kfree // 仅显示指定的符号
perf top -e cpu-clock -p `pgrep -d '