首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于缓存引用的Linux perf命令

用于缓存引用的Linux perf命令
EN

Stack Overflow用户
提问于 2014-06-07 03:43:11
回答 3查看 5.2K关注 0票数 5

我想要测量我的代码的缓存失分率。我们可以使用perf列表来显示受支持的事件。我的桌面上有一个Intel(R) Core(TM) i5-2400 CPU @ 3.10GHz处理器,perf列表包含缓存-refrences和高速缓存-错过,如下所示:

代码语言:javascript
复制
  cpu-cycles OR cycles                               [Hardware event]
  stalled-cycles-frontend OR idle-cycles-frontend    [Hardware event]
  stalled-cycles-backend OR idle-cycles-backend      [Hardware event]
  instructions                                       [Hardware event]
  cache-references                                   [Hardware event]
  cache-misses                                       [Hardware event]

我认为根据英特尔架构软件开发人员手册,cache-misses被映射到硬件事件LLC(我通过比较perf stat -e r412eperf stat r412eperf stat -e cache-错过了,它们给出了几乎相同的结果)。但是缓存引用是如何计算的呢?我没有找到使用现有硬件事件获取全部缓存引用的事件或方法。所以我在想在我的电脑上这个缓存引用是否准确?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-11 09:36:35

在Intel上,我认为perf没有提供事件来度量总的缓存引用,因为在硬件级别上不存在这样的事件。您应该能够使用perf list报告的硬件缓存事件自己计算这些信息。

代码语言:javascript
复制
L1-dcache-loads                                    [Hardware cache event]
L1-dcache-load-misses                              [Hardware cache event]
L1-dcache-stores                                   [Hardware cache event]
L1-dcache-store-misses                             [Hardware cache event]
L1-dcache-prefetches                               [Hardware cache event]
L1-dcache-prefetch-misses                          [Hardware cache event]
L1-icache-loads                                    [Hardware cache event]
L1-icache-load-misses                              [Hardware cache event]
L1-icache-prefetches                               [Hardware cache event]
L1-icache-prefetch-misses                          [Hardware cache event]
LLC-loads                                          [Hardware cache event]
LLC-load-misses                                    [Hardware cache event]
LLC-stores                                         [Hardware cache event]
LLC-store-misses                                   [Hardware cache event]
LLC-prefetches                                     [Hardware cache event]
LLC-prefetch-misses                                [Hardware cache event]

没有用-misses标记的事件表示关联缓存中引用的数量。

注意:以前的问题和关于perf_event_open的手册页 (perf在内部使用)可能会有所帮助。

票数 4
EN

Stack Overflow用户

发布于 2014-06-10 09:04:39

如果您在内核代码中查看arch/x86/内核/cpu/perf_EventIntel.c。你会看到的

代码语言:javascript
复制
"PERF_COUNT_HW_CACHE_REFERENCES = 0x4f2e". 

何地as

代码语言:javascript
复制
"PERF_COUNT_HW_CACHE_MISSES= 0x412e"

X86体系结构手册上说,0x4f2e是“此事件计数来自引用上一级缓存中的缓存行的核心的请求”。所以我认为这是正确的。

票数 6
EN

Stack Overflow用户

发布于 2014-06-11 07:41:47

我尝试了英特尔的一个名为Vtune的工具,我得到了一些关于如何测量总的缓存引用的线索。它们可以测量微操作代码,过滤加载或存储的指令,从而获得总的缓存引用。但我不确定perf工具是否也使用这种方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24093416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档