c - 如何使内存总线饱和

标签 c optimization memory hardware

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

我的尝试是运行一个具有多个线程的进程,每个线程从一大块内存中进行随机读取。这似乎对我的程序没有太大影响。我的程序有很多内存操作,因此我预计会出现明显的明显干扰。 我想让总线饱和,但又不想使用太多 CPU 周期,这样任何性能下降都只会由总线争用引起。

注释:

  • 我使用的是 Xeon E5645 处理器、DDR3 内存

最佳答案

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

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

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

相关文章:

mysql - 大量sum()的SQL性能

android - Ice Cream Sandwich 是否更积极地在后台关闭应用程序?

c - 是否可以延迟解析 gcc-as 中的 .weakreference 直到链接时间? (海湾合作委员会)

c - 查看gdb中的寄存器在流程c之后没有改变

c++ - 如何在交叉编译期间强制链接到未安装的库

c++ - 最好的C++编译器?

c - 运行 portaudio 示例时 Ubuntu 中的错误

php - 更新数据库中序列化列的最佳方法

ios - 从 segue 返回时 ViewController 不释放

memory - 确定 node.js 内存泄漏的好方法是什么?