我试图弄清楚为什么修改后的C程序比未修改的计数器部分运行得更快(我添加了很少的代码行来执行一些其他工作)。在这种情况下,我怀疑“ 缓存效果
”是主要的解释(指令缓存)。因此,我到达了perf
(https://perf.wiki.kernel.org/index.php/Main_Page)分析工具,但是不幸的是,我无法理解其有关缓存未命中的输出的含义。
提供了有关缓存的几个事件:
cache-references [Hardware event]
cache-misses [Hardware event]
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]
dTLB-loads [Hardware cache event]
dTLB-load-misses [Hardware cache event]
dTLB-stores [Hardware cache event]
dTLB-store-misses [Hardware cache event]
dTLB-prefetches [Hardware cache event]
dTLB-prefetch-misses [Hardware cache event]
iTLB-loads [Hardware cache event]
iTLB-load-misses [Hardware cache event]
branch-loads [Hardware cache event]
branch-load-misses [Hardware cache event]
node-loads [Hardware cache event]
node-load-misses [Hardware cache event]
node-stores [Hardware cache event]
node-store-misses [Hardware cache event]
node-prefetches [Hardware cache event]
node-prefetch-misses [Hardware cache event]
在哪里可以找到有关这些领域的解释?高速缓存未命中事件始终小于其他事件。此事件衡量什么?
在下面的示例中,如何解释ls的26,760 L1-icache-load-miss与5708的cache-miss?
perf stat -e L1-icache-load-misses ls
caches caches~ out
Performance counter stats for 'ls':
26,760 L1-icache-load-misses
0.002816690 seconds time elapsed
perf stat -e cache-misses ls
caches caches~ out
Performance counter stats for 'ls':
5,708 cache-misses
0.002822122 seconds time elapsed
您似乎以为该cache-misses
事件是所有其他类型的缓存未命中之L1-dcache-load-misses
和(等等)。这实际上是不正确的。
该cache-misses
事件表示任何高速缓存无法提供的内存访问次数。
我承认perf的文档资料不是最好的。
但是,通过阅读perf_event_open()函数的文档(假设您已经非常了解CPU和性能监视单元的工作原理,这显然不是计算机体系结构课程),您可以学到很多东西。
http://web.eece.maine.edu/~vweaver/projects/perf_events/perf_event_open.html
例如,通过阅读它,您可以看到性能cache-misses
列表显示的事件对应于PERF_COUNT_HW_CACHE_MISSES
问题内容: 运行时,我看到了一系列的 硬件缓存事件 ,如下所示: 这些事件似乎大多基于测试返回合理的值,但是我想知道如何确定将这些事件映射到系统上的硬件性能计数器事件? 也就是说,这些事件肯定是在Skylake CPU上使用一个或多个基础x86 PMU计数器实现的-但是我怎么知道哪个? 您可以查找其他硬件事件,但不能查找“硬件缓存事件”。 问题答案: 用户@Margaret指出注释中的合理答案-阅
本文向大家介绍什么是LRU缓存?相关面试题,主要包含被问及什么是LRU缓存?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: LRU(最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高 实现:使用一个链表保存缓存数据,将新数据插入到头部,每当缓存命中时,则将命中的数据移动到链表头部,当链表满的时候,将链表尾部的数据丢弃。
使用指南 - 数据报告 - 访问分析 - 什么是事件 事件是网页内部某个可以点击的交互元素的点击。 如下载、移动广告点击、小工具、Flash 元素、AJAX 嵌入式元素以及视频播放等。 利用百度统计的“事件分析”报告(点此了解事件分析报告如何使用),可以对事件的点击情况进行跟踪。如何安装高级事件跟踪代码请参考链接:https://www.wenjiangs.com/doc/nqW2asFX。 如果
C++ 程序员偏爱性能,所以这里是一个性能专题。 由于 Hana 运行时和编译时计算处于前沿领域,我们不仅对运行时性能感兴趣,而且对编译时性能也感兴趣。 由于这两个主题是相当不相交的,我们在下面分别对待。 注意: 当我们推送到存储库时,本节中提供的基准会自动更新。 如果您发现不能承受此处声明的结果,请开一个GitHub issue; 它可能是一个性能回归。 警告: 在写这篇文章的时候,并不是所有的
我必须使用StackExhange.redis C#在redis缓存中频繁添加N个(独立的)项,每个项都有不同的过期时间,以便在客户端有最小的时间,在服务器端有最小的阻塞和成本。Redis服务器每秒将收到数百个get请求,所以我不想打乱get时间。 我已经阅读了这里的文档并在这里回答。我找不到一个执行此操作的方法。考虑到不同的选择: null
ES 内针对不同阶段,设计有不同的缓存。以此提升数据检索时的响应性能。主要包括节点层面的 filter cache 和分片层面的 request cache。下面分别讲述。 filter cache ES 的 query DSL 在 2.0 版本之前分为 query 和 filter 两种,很多检索语法,是同时存在 query 和 filter 里的。比如最常用的 term、prefix、rang