2010-08-02 35 views
8

我有一个高度线程化的程序,但我相信它无法在多个内核之间很好地扩展,因为它已经饱和了所有的内存带宽。如何测量Windows上的内存带宽利用率?

是否有出有任何工具,它允许多少来衡量内存带宽正在使用?

编辑:请注意,典型剖析展示之类的内存泄漏和内存分配,这我不感兴趣, 我的显存带宽只有是否被饱和或不。

+2

如果你想要一个系统管理员工具,你需要指定你的操作系统。你想要一个编程工具,你需要指定编程语言。 – 2010-08-02 08:13:22

+0

其实没有。内存带宽通过缓存到主存储器是一种低级概念,完全独立于编程语言。其窗户为 – MSalters 2010-08-02 08:36:22

+0

。 我编辑标题以反映这一点。 与msalters一致,编程语言与存储器带宽测量无关。 – pdeva 2010-08-02 10:13:41

回答

2

这将是很难找到一个工具,测量您的应用程序的内存带宽利用率。

但是由于您面临的问题是可疑的内存带宽问题,您可以尝试并测量您的应用程序是否产生大量页面错误/秒,这肯定意味着您不在理论内存带宽附近。

你还应该测量你的算法是如何缓存的。如果他们颠簸缓存,你的内存带宽利用将受到严重阻碍。谷歌“测量缓存未命中”,告诉你如何做到这一点。

9

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

+0

任何机会有一个工具,消耗这些数据并打印出来? – 2011-11-14 01:49:48

+0

英特尔性能计数器监视器已停用。相反,他们将更新和新功能贡献给github上的处理器计数器监视器:https://github.com/opcm/pcm。 – wenjianhn 2018-02-06 08:27:51