为什么 Linux perf 使用事件 l1d.replacement 来处理 x86 上的“L1 dcache misses”?

2024-05-17

在英特尔 x86 上,Linux用途 https://stackoverflow.com/a/52172985/149138事件l1d.replacements来实施其L1-dcache-load-misses event.

该事件定义如下:

计数 L1D 数据线更换,包括机会性更换 替换,以及需要停顿替换或 块替换。

或许我天真地以为perf使用类似的东西mem_load_retired.l1_miss,支持 PEBS 并定义为:

计算至少有一个微指令丢失的退休加载指令 L1 缓存。 (支持PEBS)

事件值通常不是非常接近,有时差异很大。例如:

$ocperf stat -e mem_inst_retired.all_loads,l1d.replacement,mem_load_retired.l1_hit,mem_load_retired.l1_miss,mem_load_retired_fb_hit head -c100M /dev/urandom > /dev/null 

 Performance counter stats for 'head -c100M /dev/urandom':

       445,662,315      mem_inst_retired_all_loads                                   
            92,968      l1d_replacement                                             
       443,864,439      mem_load_retired_l1_hit                                     
         1,694,671      mem_load_retired_l1_miss                                    
            28,080      mem_load_retired_fb_hit                                     

有超过17个times更多“L1 未命中”的测量结果为mem_load_retired.l1_miss相比于l1d.replacement。相反,您还可以找到以下示例:l1d.replacement远高于mem_load_retired柜台。

到底是什么l1d.replacement测量,为什么在内核中选择它,以及它是否比 L1 d-cache 未命中更好的代理mem_load_retired.l1_miss?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Linux perf 使用事件 l1d.replacement 来处理 x86 上的“L1 dcache misses”? 的相关文章

随机推荐