【发布时间】:2018-12-28 20:28:45
【问题描述】:
我想编写一个 shell 脚本/命令,它使用常用的二进制文件、/sys 文件系统或其他工具来计算给定机器上可用 RAM 的理论最大带宽。
注意事项:
- 我不关心延迟,只关心带宽。
- 我对缓存的影响(例如 CPU 的最后一级缓存)不感兴趣,但对从 RAM 读取的带宽感兴趣。
- 如果有帮助,您可以假设一个“普通”英特尔平台,并且所有内存 DIMM 都是相同的;但我宁愿你不要做这个假设。
- 如果有帮助,您可以依赖 root 权限(例如使用
sudo)
【问题讨论】:
-
您对哪个带宽感兴趣? CPU 内存? I/O 内存? RAM 是指虚拟内存还是直接访问物理内存? L3(或最后一个)缓存呢?你看过superuser.com/questions/827207/…吗?
-
@diginoise:我问的是 RAM,而不是 CPU 缓存。我的意思是您可以从 RAM 读取到系统上的任何位置;通常这将是您可以从不同内存库读取到系统上各种 CPU 插槽的数量。
-
您是否想要基准测试,例如
time dd if=/dev/zero of=/dev/null bs=1g count=200之类的?如果没有,[benchmarking]标签就没有意义。 -
您说您想要“理论”最大带宽,这意味着不是基准,而是读取 DRAM 参数和总线速度并简单地乘以得到的带宽(可能是查找内存通道的数量)基于 CPU 型号)。如果您确实想要一个基准,STREAM 是一个事实上的标准。各种基准测试包提供自己的内存带宽测试。 TinyMemBench 是另一个。
-
@BeeOnRope:我明白你的意思。我正在删除
[benchmarking]标签。
标签: memory sysfs memory-bandwidth