英特尔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计数器,但这不是这个问题所要求的。) –