當我輸入perf list
命令時,發現有兩種事件:Hardware event
和Hardware cache Event
。兩者有什麼區別 ?硬件事件和硬件緩存事件在perf中有什麼區別?
cache-misses
和LLC-misses
有什麼區別?緩存未命中是否包含LLC未命中?
perf
工具是否會在測試程序時降低總體性能?
當我輸入perf list
命令時,發現有兩種事件:Hardware event
和Hardware cache Event
。兩者有什麼區別 ?硬件事件和硬件緩存事件在perf中有什麼區別?
cache-misses
和LLC-misses
有什麼區別?緩存未命中是否包含LLC未命中?
perf
工具是否會在測試程序時降低總體性能?
按照perf_event_open
系統調用的man page(由perf
用戶級實用程序內部使用):
更多了,我想知道,這與所謂的[英特爾®64和IA-32架構軟件開發手冊3B]英特爾®64和IA-32架構軟件開發的非建築和建築活動的一些鏈接手冊3B 2。
無論這個分類的確切含義如何,cache-misses
如here in a previous question以及我在上面提到的手冊頁中表示任何緩存都無法提供的內存訪問次數。換句話說,它意味着最後一級緩存中的緩存未命中數量。因此,我想這與LLC-misses
相同,但不幸的是我無法確認在我的筆記本電腦上,因爲LLC-misses
不受支持。
關於你的最後一個問題,性能監控引起的開銷應該很低。事實上,開銷主要是由於讀取計數器值,並且使用perf stat
我猜這個讀數在執行結束時應該只執行一次(考慮到計數器不會溢出)
問題2: 如果我看ARM內核代碼(「弓/ ARM /內核/ perf_event_v7.c」)的PERF
緩存缺失意味着ARMV7_PERFCTR_L1_DCACHE_REFILL這意味着一級數據緩存未命中 所以LLC可能意味着低級別的高速緩存未命中(L3可能)
您可以看看體系結構特定的內核代碼ARMV7_PERFCTR_L1_DCACHE_REFILL具有哪些值 以及技術參考手冊,以瞭解該值的含義。 http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0388i/BEHCCEAE.html
問題3: 我相信PERF讀取硬件寄存器計數器(ATLEAST爲HW性能計數器),所以不會真正影響你的代碼的性能。因爲它不會真的把代碼掛在你的代碼中。但是有些論文表示,如果在代碼中使用perf,則性能會降低5%。