如何衡量Windows上的内存带宽利用率?

pde*_*eva 12 windows performance profiling

我有一个高度线程化的程序,但我相信它无法在多个内核中很好地扩展,因为它已经使所有内存带宽饱和.

是否有任何工具可以测量使用多少内存带宽?

编辑:请注意,典型的分析器显示内存泄漏和内存分配等内容,我不感兴趣.我只是内存带宽是否饱和.

Rom*_*iev 10

如果您有最近的英特尔处理器,您可能会尝试使用英特尔(r)性能计数器监视器:http://software.intel.com/en-us/articles/intel-performance-counter-monitor/它可以直接测量消耗内存控制器的内存带宽.

  • 英特尔性能计数器监视器已停产。相反,他们为 github 上的 fork Processor Counter Monitor 提供更新和新功能:https://github.com/opcm/pcm。 (2认同)

com*_*ife 2

很难找到一个可以测量应用程序内存带宽利用率的工具。

但是,由于您面临的问题是可疑的内存带宽问题,因此您可以尝试测量应用程序是否每秒生成大量页面错误,这肯定意味着您距离理论内存带宽还很远。

您还应该衡量您的算法对缓存的友好程度。如果他们破坏缓存,您的内存带宽利用率将受到严重阻碍。谷歌“测量缓存未命中”的好消息来源告诉你如何做到这一点。