2013-11-21 100 views
1

我嘗試爲英特爾至強E5系列使用性能計數器(linux perf)。英特爾至強處理器緩存事件的性能計數器

我對緩存未命中的解釋頗爲困惑。雖然L1和LLC值易於訪問,但L2的信息必須通過-rNNN事件從寄存器中讀取。但在文檔中,我還沒有找到如何將帶有掩碼字段的事件編號合併爲NNN值。在perf help中只有一個例子顯示值A8和01的掩碼導致1a8。但是掩蔽的一般規則是什麼?它不應該寫在文檔中,或者它是一個標準的OR函數什麼的?

另外我還沒有從文檔或其他相關主題的回覆中瞭解到Xeon案例中測量的LLC值是L3還是L2。當硬件有第三級緩存時會發生什麼? LLC是否仍然測量最後一級,即L3事件?

有人清除了嗎?

+0

使用['perf'的'ocperf.py'包裝器](https://github.com/andikleen/pmu-tools)爲uarch特定的事件獲取符號名稱,如'mem_load_retired.l2_hit','l2_lines_in .all','l2_rqsts.all_demand_data_rd'(需求加載到L2)Skylake上。 –

回答

0

也許你可以查看內核並找出Xeon的事件編號。

以下是我發現手臂V7 A8

弓/ ARM /內核/ perf_event_v7.c:168

[C(LL)] = { 
    [C(OP_READ)] = { 
     [C(RESULT_ACCESS)]  = ARMV7_A8_PERFCTR_L2_CACHE_ACCESS, 
     [C(RESULT_MISS)]  = ARMV7_A8_PERFCTR_L2_CACHE_REFILL, 
    }, 

和ARCH/ARM /內核/ perf_event_v7.c:75

ARMV7_A8_PERFCTR_L2_CACHE_ACCESS    = 0x43, 
ARMV7_A8_PERFCTR_L2_CACHE_REFILL    = 0x44, 

所以在ARM的TRM看着事件數×43和0×44後,您可以知道究竟他們的意思

1

「LLC」代表最後一級緩存。大多數現代英特爾系統有3級緩存,所以在你的處理器上,LLC是L3緩存。

相關問題