内存带宽使用情况

5

如何计算内存(RAM)带宽使用情况?需要哪些性能计数器?

我找到了一个工具可以完成这个任务,那就是“Rightmark多线程内存测试”。但与Rightmark的其他测试不同,我没有找到它的源代码,只有二进制文件。


为什么这被标记为C#、C++和C? - unwind
2个回答

2
如果您的代码可以在Linux上运行,请使用Cachegrind:
Cachegrind是一款缓存分析器。它对您CPU中的I1、D1和L2缓存进行详细模拟,因此可以准确地确定代码中缓存未命中的来源。它识别每行源代码的缓存未命中次数、内存引用次数和指令执行次数,并提供每个函数、每个模块和整个程序的总结。它适用于任何语言编写的程序。Cachegrind使程序运行速度变慢20-100倍。
您可能需要使用KCacheGrind GUI。

0

“计算”内存带宽使用率非常困难。需要处理大量复杂的缓存和MMU问题。唯一真正的方法是通过模拟或实际测量来完成。

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

这取决于您的目的。如果是为了获得猜测,您可以使用经验法则,即通用代码约有30%是内存加载和存储。如果您正在尝试获取最坏情况,则可以假设缓存始终未命中并进行计算。

您可以尝试查看虚拟化。有几个开源选项(例如QEMU)。可能可以从中导出某些硬件测量值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接