内存带宽使用情况

时间:2009-05-28 13:54:01

标签: c# c++ c hardware performancecounter

如何计算使用的内存(RAM)带宽?需要哪些性能指标?

我遇到了一个能够做到这一点的工具,即“Rightmark多线程内存测试”。但与Rightmark的其他测试不同,我还没有找到它的源代码,只是二进制文件

3 个答案:

答案 0 :(得分:1)

“计算”内存带宽使用非常困难。有很多非平凡的缓存和MMU问题需要解决。唯一真正的方法是使用模拟或实际测量。

您可以通过调试代码并计算执行的内存加载和存储操作的数量来获得“粗略”的想法。但是,知道它是否是缓存命中/未命中是另一个问题。

这取决于你的目的。如果要获得猜测,您可以使用经验法则,即大约30%的通用代码是内存加载和存储。如果你试图得到一个最坏的情况,你可以假设缓存一直错过并解决它。

您可以做的一件事是查看虚拟化。有几种开源选项(QEMU可以想到)。可以从中导出某些硬件测量值。

答案 1 :(得分:1)

巧合的是,MSDN杂志6月刊中的CLR Inside Out文章是关于分析.NET应用程序中的内存使用情况。

http://msdn.microsoft.com/en-us/magazine/dd882521.aspx

答案 2 :(得分:1)

如果您的代码可以在Linux上运行,请使用Cachegrind

  

Cachegrind是一个缓存探查器。它   执行详细的模拟   I1,D1和L2缓存在你的CPU和   所以可以准确地确定来源   缓存未命中代码。它   标识缓存未命中数,   记忆参考和说明   为每行源代码执行,   每个功能,每个模块和   整个计划摘要。它是有益的   使用任何语言编写的程序。   Cachegrind运行程序   比正常情况慢20-100倍。

您可能想要使用KCacheGrind GUI