我想测试具有各种内存总线使用级别的程序。例如,当其他进程使用50%的内存总线时,我想了解我的程序是否按预期工作。
我将如何模拟这种干扰?

我的尝试是使用多个线程运行一个进程,每个线程都从一大块内存中进行随机读取。这似乎对我的程序没有太大影响。我的程序有很多内存操作,因此,我希望会引起严重的干扰。
我想使总线饱和,但不使用太多的CPU周期,因此任何性能下降都将仅由总线争用引起。

笔记:


我正在使用至强E5645处理器,DDR3内存

最佳答案

“进程使用内存总线的50%”的思维模型并不是一个好模型。已获取内核并访问不在缓存中的内存的线程使用内存总线。

让线程饱和总线很简单,只需使用memcpy()即可。复制数倍于最后一个缓存的容量,并通过多次运行来对其进行预热,这样就不会出现页面错误来减慢代码速度。

关于c - 如何使内存总线饱和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11226812/

10-11 22:45
查看更多