为什么Linux性能在x86上将事件l1d.replacement用于“ L1 dcache丢失”?

时间:2018-09-04 20:20:02

标签: linux x86 profiling perf intel-pmu

在Intel x86上,Linux uses事件l1d.replacements用于实现其L1-dcache-load-misses事件。

此事件的定义如下:

  

计算L1D数据线的替换情况,包括机会   替代品,以及需要停顿换货或   替换区块。

我可能天真地希望perf使用mem_load_retired.l1_miss之类的东西,它支持PEBS,并且定义为:

  

计算至少有一个未完成的uop的退休加载指令   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                                     

mem_load_retired.l1_miss相比,l1d.replacement衡量的“ L1未命中”次数多于17次 。相反,您还可以找到l1d.replacementmem_load_retired计数器高得多的示例。

l1d.replacement到底是什么测量值,为什么要在内核中选择它,并且它是L1 d缓存未命中比mem_load_retired.l1_miss更好的代理?

0 个答案:

没有答案