我試圖在我的設備上使用perf
以及AMD cpu,但我無法真正找到任何有關如何從AMD獲得的信息,例如cache-misses
。我讀到您需要編寫-e rNNN
,其中NNN
是事件的十六進制代碼,但我沒有設法找到任何表或其他代碼來查看這些代碼。你能幫我解決這個問題嗎?因爲在互聯網上似乎沒有任何信息!實際上,在perf
手冊中有一些鏈接,但它們無效:(AMD perf events
回答
檢查perf list
輸出,在現代Linux內核版本中,它可能會報告一些架構特定的硬件事件。通過perf list
(特別是對於較舊的內核),但並非所有的都映射到某個真實的硬件事件。cache-misses
和cycles
是這樣的通用perfww事件,並不總是映射(映射位於amd的http://elixir.free-electrons.com/linux/latest/source/arch/x86/events/amd/core.c附近的perf源代碼 - 與cache-misses
映射到[PERF_COUNT_HW_CACHE_MISSES] = 0x077e,
)
也嘗試從perf列表中的不同事件與perf stat -e event1,cycles,instructions,cpu-clock
其中事件1是你想檢查的事件,並且有一些工作事件。
要編碼原始事件,它可以更容易地使用處理器文檔,perf源(精確的十六進制編碼)和some external tools。對於英特爾,ocperf.py
來自http://github.com/andikleen/pmu-tools網站;並且在perfmon2/libpfm4中有通用的原始生成器,在「如何通過Bojan Nikolic與showevtinfo
util監視CPU性能事件的全部範圍」進行了描述(這也是獲得常見問題的rXXXX代碼的建議方法:http://web.eece.maine.edu/~vweaver/projects/perf_events/faq.html#q2e Q2e。如何確定合適的「原始」活動值):
爲了充分利用這些計數器,一個目前已經向他們指定的
perf
工具作爲原料的十六進制代碼(-e rXXXX
其中XXXX
是代碼)。這引出了兩個明顯的問題:
- 需要使用什麼編碼?
- 這些信息是什麼意思?
我將這些在以後的文章第二,但目前這裏是如何找出原始代碼使用方法:
獲取最新版本的
perfmon2
/libpfm
(H/t這個developerworks文章):git clone git://perfmon2.git.sourceforge.net/gitroot/perfmon2/libpfm4; cd libpfm4; 使
運行
showevtinfo
程序(examples
子目錄),以獲得所有可用事件的列表,以及所支持的面具和修飾符(請參閱下面的輸出爲全輸出的例子)找出你想要使用哪些事件以及掩碼和修飾符。掩碼的前綴爲
Umask
,並以十六進制數字形式給出,並且在方括號中也包含符號名稱。修飾符的前綴爲Modif
,它們的名字也放在方括號中。使用
check_events
程序(也以實例子目錄)到event
,umask
和modifiers
轉換成原始代碼。您可以通過運行以下命令來執行此操作:check_events <event name>:<umask>[(:modifers)*]
即,您提供的事件名稱,umask和多個修飾符全部由冒號字符分隔。通過0x531003- 這十六進制碼可被用作參數的GNU/Linux
perf
工具,例如以perf stat
:然後該程序將打印出來,除其他事項外,一個原始事件規範,例如:代碼供應
-e r531003
選件
- 1. 在debian 8上沒有顯示StackTraces的perf-events jessie
- 2. asp.net - events
- 3. 無法在perf命令中使用--exclude-perf選項
- 4. 將「require('events')。eventEmitter」更改爲「require('events')」?
- 5. Array.prototype vs [] perf
- 6. Oprofile vs perf
- 7. ui-grid enableFiltering events
- 8. iTunes Apple Events API
- 9. Ionic 3 - Pan Events
- 10. JQueryUI .selectable events
- 11. NodeJS - Singleton + Events
- 12. Pre_和Post_ Events
- 13. jQuery Events加載
- 14. ical file recurring events
- 15. JQuery events + IPhone
- 16. CSS Click Events
- 17. $()。ajax events problem
- 18. jquery ui events
- 19. LinkedIn add events API
- 20. PHP SQL Events?
- 21. c#winforms events
- 22. Jquery onfocus/onchange events
- 23. FF mouseleave/mouseenter events
- 24. React Events行爲
- 25. Python Turtle - Click Events
- 26. KeyBoard Stroke Events
- 27. USphereComponent and Overlap Events
- 28. py-appscript&events
- 29. jquery select events
- 30. Debouncing Openlayers Events