好像perf
尚未更新以了解 Ivy Bridge 支持的所有性能监控事件。幸运的是,有一个通用的(尽管很麻烦)界面允许您访问性能监控事件的完整列表。我没看到stalled-cycles-backend
当我快速浏览一下时,它就在列表中,但也许我错过了,或者也许他们已经通过所有可能阻碍后端的不同事件将其分解了。
我们从
perf list --help
...显示以下内容NOTE
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
...配备了您最终进入的 URL
http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-vol-3b-part-2-manual.pdf
...你想要第 19.3 节
19.3 第三代的性能监控事件
英特尔® 酷睿™ 处理器第三代英特尔® 酷睿™ 处理器和英特尔至强处理器 E3-1200 v2 产品系列基于代号为 Ivy Bridge 的英特尔微架构。它们支持表 19-1 中列出的架构性能监控事件。表 19-5 列出了处理器内核中的非架构性能监控事件。表 19-5 中的事件适用于具有 DisplayFamily_DisplayModel 编码的 CPUID 签名且具有以下值的处理器:06_3AH。
...因此对于architectural
您需要的事件 表 19-1
19.1 架构性能监控事件英特尔酷睿单核和英特尔酷睿双核处理器中引入了架构性能事件。基于 Intel Core 微架构的处理器也支持它们。表 19-1 列出了可以使用通用性能计数器和相关事件选择寄存器进行配置的预定义架构性能事件。
**表 19-1。建筑表演活动
...现在是棘手的部分,你采取UMask Value
作为上面 2 个十六进制数字和Event Num
是要赋予的 4 个十六进制数字硬件寄存器号的低 2 个十六进制数字perf stat
.
perf stat --help
-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
$
正如您所看到的,两者报告了相同的数字,到目前为止一切顺利。现在我们来看表 19-5 的非架构硬件寄存器,其中的寄存器太多了,这里无法列出,但我只列出一些: