原文地址:http://blog.csdn.net/zhangskd/article/details/37902159
从2.6.31内核开始,linux内核自带了一个性能分析工具性能,能够进行函数级与指令级的热点查找。
,
性能
,
Linux的性能分析工具。
性能计数器为Linux是一种新的基于子系统,对所有事物提供了一个框架
性能分析。它涵盖了硬件级(CPU/PMU,性能监控单元)和特性
软件功能(软件计数器,tracepoints)。
,
性能是内置于Linux内核源码树中的性能剖析(分析)工具。
它基于事件采样原理,以性能事件为基础,支持针对处理器相关性能指标与操作系统相关性能指标的性能剖析。
常用于性能瓶颈的查找与热点代码的定位。
,
CPU周期(CPU周期)是默认的性能事件,所谓的CPU周期是指CPU所能识别的最小时间单元,通常为亿分之几秒,
是CPU执行最简单的指令时所需要的时间,例如读取寄存器中的内容,也叫做时钟周期。
,
性能是一个包含22种子工具的工具集,以下是最常用的5种:
perf-list
perf-stat
perf-top
perf-record
perf-report
,
perf-list
,
Perf-list用来查看性能所支持的性能事件,有软件的也有硬件的。
,
列出所有象征性的事件类型。
穿孔列表缓存(hw | sw | | tracepoint | event_glob]
,
<强>(1)性能事件的分布强>
hw:硬件事件,9个
西南:软件事件,9个
缓存:硬件缓存事件,26个
tracepoint: tracepoint事件,775个
,
sw实际上是内核的计数器,与硬件无关。
hw和缓存是CPU架构相关的,依赖于具体硬件。
tracepoint是基于内核的ftrace,主线2.6.3x以上的内核版本才支持。
,
<强>(2)指定性能事件(以它的属性)强>
- e & lt; event>:u//用户空间
- e & lt; event>:k//内核
- e & lt; event>:h//管理程序
- e & lt; event>:G//客人计数(KVM的客人)
- e & lt; event>:H//主机数(不是KVM的客人)
,
<强>(3)使用例子强>
显示内核和模块中,消耗最多CPU周期的函数:
#性能最高- e周期:k
显示分配高速缓存最多的函数:
#性能最高- e kmem: kmem_cache_alloc
,
perf-top
,
对于一个指定的性能事件(默认是CPU周期),显示消耗最多的函数或指令。
,
系统分析工具。
生成并显示实时性能计数器概要文件。
性能最高[- e & lt; EVENT>|——事件=事件][& lt; options>]
,
性能最高的主要用于实时分析各个函数在某个性能事件上的热度,能够快速的定位热点函数,包括应用程序函数,
模块函数与内核函数,甚至能够定位到热点指令。默认的性能事件为cpu周期。
,
<强>(1)输出格式强>
#性能最高
(平原),普通视图-
<李类=癮lt”>
李>
<李类=" ">
李>
<李类=癮lt”>
李>
<李类=" ">
李>
<李类=癮lt”>
李>
<李类=" ">
李>
<李类=癮lt”>
李