我们正在建立一个基于 Linux 的基准测试集群。每个节点都将是一个无头、无盘的机器,通过 tftp 启动,将操作系统复制到本地 ramdrive,并且相同的 ramdrive 被基准测试应用程序用作本地驱动器。我的问题如下:
这些机器有 2 个 CPU,每个 CPU 都有自己的内存条,并有 4 个通往这些内存条的内存通道(因此内存条中装有 4 个内存芯片的倍数,以获得最大的内存吞吐量)。如果我无法控制 ramdisk 使用哪些内存区域,那么它可能会在一个单通道上的区域中创建,并使用该芯片上的所有内存。这意味着当我的应用程序运行时,在从其内存组中获取 ramdisk 的 CPU 上运行的线程到其“本地”内存的内存带宽将比其他 CPU 上的线程少 25%。那太糟糕了。因此希望控制 ramdisk 使用哪些内存区域。
或者这不是问题,我可以相信内存控制器在 4 个通道上的芯片之间以跨步方式布置连续的内存地址?这是有道理的,因为这将在将大块内存拉入缓存时最大化内存带宽。
我只是不知道这些东西是如何工作的,希望得到一些启发......