英特爾PMU可以用於測量每核心讀/寫內存帶寬使用情況嗎?這裏「存儲器」意味着DRAM(即,不擊中任何高速緩存級別)。英特爾性能監視器計數器可用於測量內存帶寬嗎?
回答
是的,這是可能的,但它不一定像編程通常的PMU計數器一樣簡單。
一種方法是使用通過PCI空間訪問的可編程內存控制器計數器。一個好的開始是通過檢查英特爾自己在pcm-memory
的執行pcm-memory.cpp。此應用程序向您顯示每個插槽或每個內存控制器的吞吐量,這適用於某些用途。特別是,所有內核之間共享帶寬,因此在一臺安靜的機器上,您可以假定大部分帶寬都與被測進程相關聯,或者如果您想在套接字級別進行監視,則它正是您想要的。
另一種選擇是使用「offcore repsonse」計數器的仔細編程。據我所知,這些涉及L2(最後的核心 - 私有緩存)和系統其餘部分之間的流量。您可以通過offcore響應的結果進行過濾,因此可以組合各種「L3未命中」事件並乘以高速緩存行大小以獲得讀取和寫入帶寬。這些事件是相當精細的,所以你可以進一步將它分解爲什麼導致訪問的第一個地方:指令提取,數據需求請求,預取等,等等。
offcore響應計數器通常滯後於支持工具如perf
和likwid
,但至少最近的版本似乎有合理的支持,即使像SKL這樣的客戶端部件。
我不確定英特爾PMU,但我認爲你可以使用英特爾VTune放大器(https://software.intel.com/en-us/intel-vtune-amplifier-xe)。這個有很多用於性能監視的工具(內存,cpu緩存,cpu)。也許這會爲你工作。
是(ish),間接。您可以使用計數器之間的關係(包括時間戳)推斷其他數字。例如,如果您採樣1秒的時間間隔,並且有N個最後一級(3)緩存未命中,則可以非常確信您每秒鐘佔用N * CacheLineSize字節。
它變得有點棘手把它與準確地計劃活動,因爲這些缺失可能反映CPU預取,中斷活動等
還有的「此CPU不計泥沼(MMX, SSE,AVX等),除非該配置位處於此狀態';從而滾動你自己的是繁瑣的....
- 1. 監視性能計數器
- 2. 帶寬監視器
- 3. 英特爾酷睿雙核上的硬件性能計數器
- 4. 英特爾性能基元只能在基於英特爾處理器的設備上工作嗎?
- 5. 性能監視計數器閾值
- 6. 使用性能計數器監視特定端口
- 7. Windows性能監視器中的性能計數器計時器值不準確
- 8. .NET性能計數器監視計算機的計算能力
- 9. 英特爾編譯器值得嗎?
- 10. 初始化CPU上的性能計數器監視器控制寄存器
- 11. Windows XP性能監視器應用程序(perfmon)中缺少處理器/內存計數器
- 12. 監測Azure存儲帶寬使用
- 13. OpenCL:NVIDIA的矢量寄存器(float4,float8,..)VS英特爾的矢量寄存器
- 14. react-native性能監視器
- 15. ZK性能監視器
- 16. eclipse mtj內存監視器
- 17. Android內存監視器
- 18. 應用程序和SQL Server中的性能計數器監視
- 19. 英特爾8086處理器
- 20. ARM;性能監視器單元(PMU);訪問th /內存映射寄存器;
- 21. 在interrup內寫入eip寄存器。英特爾IA32 PC架構
- 22. 32位英特爾處理器上的內存對齊
- 23. 英特爾編譯器:「無法得到映射內存」
- 24. 在Android上使用英特爾XDK進行應用內付款可能嗎?
- 25. 英特爾的開源UPnP庫可以用於VB6嗎?
- 26. 用於VBScript性能測量的細粒度計時器
- 27. 要監視的最佳ASP.NET性能計數器是什麼?
- 28. 與英特爾XDK不同的性能
- 29. 如何在英特爾圖形上創建「監視器插入」回調?
- 30. 英特爾tbb內存開銷
VTune是一個使用硬件性能計數器(即PMU =性能監視單元)的工具。除非你能解釋*如何讓VTune測量內存帶寬,否則這不是一個有用的答案。 (VTune是一個有用的工具,可以幫助找到cache-miss熱點和類似的東西,顯然遠不止是簡單地記錄perf計數器,但這不是這個問題所要求的。) –