我想测试具有不同内存总线使用级别的程序。例如,我想了解当其他进程使用 50% 的内存总线时,我的程序是否按预期工作。 我如何模拟这种干扰?
我的尝试是运行一个具有多个线程的进程,每个线程从一大块内存中进行随机读取。这似乎对我的程序没有太大影响。我的程序有很多内存操作,因此我预计会出现明显的明显干扰。 我想让总线饱和,但又不想使用太多 CPU 周期,这样任何性能下降都只会由总线争用引起。
注释:
- 我使用的是 Xeon E5645 处理器、DDR3 内存
最佳答案
“进程使用 50% 的内存总线”的心理模型并不是一个很好的模型。已获取核心并访问不在缓存中的内存的线程使用内存总线。
让线程饱和总线很简单,只需使用 memcpy() 即可。复制几次适合最后一个缓存的数量,并通过多次运行来预热它,这样就不会出现页面错误来减慢代码速度。
关于c - 如何使内存总线饱和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11226812/