oli*_*ver 26 linux cpu performance perf
跑步perf stat ls
显示:
Performance counter stats for 'ls':
1.388670 task-clock # 0.067 CPUs utilized
2 context-switches # 0.001 M/sec
0 cpu-migrations # 0.000 K/sec
266 page-faults # 0.192 M/sec
3515391 cycles # 2.531 GHz
2096636 stalled-cycles-frontend # 59.64% frontend cycles idle
<not supported> stalled-cycles-backend
2927468 instructions # 0.83 insns per cycle
# 0.72 stalled cycles per insn
615636 branches # 443.328 M/sec
22172 branch-misses # 3.60% of all branches
0.020657192 seconds time elapsed
Run Code Online (Sandbox Code Playgroud)
为什么stalled-cycles-backend显示为"不支持"?我需要什么样的CPU,硬件,内核或用户空间软件才能看到这个值?
目前从事Linux 3.12试过这种对RHEL的x86_64的,相匹配的"PERF"版本,在不同的英特尔酷睿i5和i7系统(Ivy Bridge的类型).他们都没有支持陷入停滞的周期后端.
更多信息:
$ perf list | grep stalled
stalled-cycles-frontend OR idle-cycles-frontend [Hardware event]
stalled-cycles-frontend OR cpu/stalled-cycles-frontend/ [Kernel PMU event]
$ ls /sys/devices/cpu/events/
branch-instructions bus-cycles cache-references instructions mem-stores
branch-misses cache-misses cpu-cycles mem-loads stalled-cycles-frontend
$ cat /sys/bus/event_source/devices/cpu/events/stalled-cycles-frontend
event=0x0e,umask=0x01,inv,cmask=0x01
Run Code Online (Sandbox Code Playgroud)
编辑:刚刚在AMD Phenom II X6 1045T CPU上使用Linux 3.2(32位)在Ubuntu 12.04下进行了尝试 - 在这里它确实显示了停滞循环前端和停滞循环后端的值.
amd*_*mdn 23
看起来perf
还没有更新,以了解Ivy Bridge支持的所有性能监控事件.幸运的是,有一个通用的,虽然繁琐的界面,允许您访问完整的性能监视事件列表.stalled-cycles-backend
当我快速浏览时,我没有在列表中看到,但也许我错过了,或者他们可能已经将所有可能阻碍后端的不同事件打破了.
我们一开始
perf list --help
Run Code Online (Sandbox Code Playgroud)
...显示以下注意事项
1. Intel(R) 64 and IA-32 Architectures Software Developer's Manual
Volume 3B: System Programming Guide
http://www.intel.com/Assets/PDF/manual/253669.pdf
Run Code Online (Sandbox Code Playgroud)
......拥有你最终进入的网址
http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-vol-3b-part-2-manual.pdf
Run Code Online (Sandbox Code Playgroud)
......你想要第19.3节
19.3 第三代INTEL®CORE™处理器的性能监控事件第三代Intel®Core ™处理器和Intel Xeon处理器E3-1200 v2产品系列基于Intel微体系结构代码名称Ivy Bridge.它们支持表19-1中列出的体系结构性能监视事件.表19-5中列出了处理器内核中的非架构性能监视事件.表19-5中的事件适用于具有以下值的DisplayIDamily_DisplayModel编码的CPUID签名的处理器:06_3AH.
...所以对于architectural
你需要的事件表19-1
19.1架构性能监控事件 架构性能事件在Intel Core Solo和Intel Core Duo处理器中引入.基于英特尔酷睿微体系结构的处理器也支持它们.表19-1列出了可以使用通用性能计数器和相关事件选择寄存器配置的预定义体系结构性能事件.
**表19-1.建筑表演活动
...现在是棘手的部分,你取UMask Value
上面的2位十六进制数字,并且Event Num
是要给出的4位十六进制数字硬件寄存器编号的低2位十六进制数字perf stat
.
perf stat --help
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)-e, --event= Select the PMU event. Selection can be a symbolic event name (use perf list to list all events) or a raw PMU event (eventsel+umask) in the form of rNNN where NNN is a hexadecimal event descriptor.
......它说,NNN
但你可以给它NNNN
.让我们验证这是否有效,让我们要求perf stat
缓存未命中作为符号事件名称和表19-1中的十六进制数字.date
为简单起见,我们将调用该命令.
$ perf stat -e r412e -e cache-misses date
Fri Mar 28 09:28:52 CDT 2014
Performance counter stats for 'date':
2292 r412e
2292 cache-misses
0.003322663 seconds time elapsed
$
Run Code Online (Sandbox Code Playgroud)
你可以看到两者都报告了相同的数字,到目前为止一直很好.现在我们转到表19-5了解非架构硬件寄存器,其中列表太多了,但我会列出一些:
osg*_*sgx 14
该perf
(或其在内核部分)没有更新,以支持你的CPU,所以PERF无法映射通用事件名称"停顿周期-后端"实际硬件事件.
在这种情况下,可以更容易地找到事件名称; 例如,对于英特尔CPU - 来自英特尔的优化手册http://www.intel.com/content/dam/doc/manual/64-ia-32-architectures-optimization-manual.pdf(按类型对事件进行分组并解释如何用它们来测量各个部分).没有AMD的类似文件.
要将事件名称与perf无需手动转换为原始事件ID(如amdn在其答案中所述),您可以使用转换器脚本showevtinfo
和check_events
perfmon2(libpfm4 ;示例文件夹),如文章" 如何监控全部范围CPU性能事件 "由Bojan Nikolic http://www.bnikolic.co.uk/blog/hpc-prof-events.html提供.perfmon2
了解AMD和Intel CPU,并用C/C++编写
对于英特尔CPU,最简单的方法是使用来自英特尔开源python项目的ocperf
包装器,安装perf
在github https://github.com/andikleen/pmu-tools上的Andi Kleen"pmu-tools",并在这里介绍ML:https:/ /lwn.net/Articles/556983/和Andi的博客http://halobates.de/blog/p/245
在ocperf
了解英特尔的优化手册中的所有英特尔事件名称.
ocperf
还将支持旧Linux内核的每个HW事件.它有自己的tsv或json格式数据库,所有硬件事件及其代码都在https://download.01.org/perfmon/(pmu-tools中有自动下载程序),英特尔不断更新数据库雇主.数据库格式记录在自述文件中:https://download.01.org/perfmon/readme.txt
对于Sandy Bridge/Ivy Bridge或Haswell以及内核3.10或更新版本,您还可以使用"pmu-tools"中的toplev.py
脚本来调查性能.下面是它的作者,安迪Kleen的,说明http://halobates.de/blog/p/262 " PMU的工具,第二部分:toplev "的基础上,从艾哈迈德·亚辛"自上而下"方法" 如何调优应用程序使用顶部- 微架构问题的下降特征和" 自上而下的分析".永远不会失去性能指标 "
归档时间: |
|
查看次数: |
11016 次 |
最近记录: |