我正在尝试比较集群的不同节点互连的延迟。目标是最小化内存访问延迟。
我已经获得了一些关于具有许多 CPU 的 NUMA 架构的硬件实现之一的基准测试。这表明:
- 直接连接到 CPU 的 socket 的内存访问延迟约为 90ns。
- 通过UPI连接到CPU套接字的其他CPU套接字的内存访问延迟约为140ns(因此UPI的一“跳”增加了约50ns)。
- 通过所考虑的 NUMA 互连访问内存的延迟为 370ns(因此该互连的一“跳”增加了大约 280ns)。
NUMA 互连是非常专业的解决方案,无法与大多数硬件供应商一起使用。“标准”互连器是 InfiniBand、以太网和 FibreChannel。
我正在寻找这些互连器为内存访问提供的延迟。
例如,在 EDR Infiniband 交换机之一的规范中,它声明它提供“90ns端口到端口延迟”。如果我理解正确,端口到端口延迟是指交换机本身引入的延迟。对于这个延迟,我们应该加上大约 600ns 的 NIC 延迟(根据这个),所以这大约是 90+2x600=1290[ns] 的互连器相关延迟。(顺便说一句,与 90ns 相比,600ns 的值似乎高得可疑。为什么这么高?)
我们还应该预期电缆(无源铜缆或光纤)会引入一些延迟。我想这取决于它的长度,但我不确定它的顺序是什么。光在 3ns 左右传播 1 米,这是一个好的估计吗?
缺少的部分是网卡访问内存的时间。我想我们应该考虑使用 RDMA 和通过 CPU 的不同情况。我还缺少其他东西吗?我的上述推理是否正确?
我的主要问题是:使用 InfiniBand、以太网或 FibreChannel 等“标准”互连器访问集群不同节点内的内存的预期延迟是多少?
我问的原因是我试图将当前单一系统映像解决方案中描述的问题分解为较小的子问题。