【Linux】软件性能分析工具:perf

1、简介

Perf 是用来进行软件性能分析的工具。

Linux性能计数器是一个基于内核的子系统,它提供一个性能分析框架,比如硬件(CPU、PMU)功能和软件(软件计数器、tracepoint)功能。

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

Perf 可以对程序进行函数级别的采样,从而了解程序的性能瓶颈在哪里。其基本原理是:每隔一个固定时间,就是CPU上产生一个中断,看当前是哪个进程、哪个函数,然后给对应的进程和函数加一个统计值,这样就知道CPU有多少时间在某个进程或某个函数上了。

2、名词解释

2.1 PMU

PMU(performance monitor unit) 性能监测单元。
PMU允许软件针对某种硬件事件设置 counter,此后处理器便开始统计该事件的发生次数,当发生的次数超过 counter 内设置的值后,便产生中断。比如 cache miss 达到某个值后,PMU 便能产生相应的中断。捕获这些中断,便可以考察程序对这些硬件特性的利用效率了。

2.2 tracepoint

Tracepoint 是散落在内核源代码中的一些 hook,一旦使能,它们便可以在特定的代码被运行到时被触发,这一特性可以被各种 trace/debug 工具所使用。Perf 就是该特性的

猜你喜欢

转载自blog.csdn.net/u010168781/article/details/129591865