我正在尝试比较集群中不同节点互连的延迟。目标是最小化内存访问延迟。
我获得了一些有关 NUMA 架构的硬件实现(具有多个 CPU)的基准测试。这表明:
- 直接连接到CPU插槽的内存访问延迟约为90ns。
- 通过 UPI 连接到 CPU 插槽的其他 CPU 插槽的内存访问延迟约为 140ns(因此 UPI 的一个“跳跃”增加了约 50ns)。
- 通过考虑的 NUMA 互连进行内存访问的延迟为 370ns(因此该互连的一个“跳跃”增加了约 280ns)。
NUMA 互连是相当专业的解决方案,大多数硬件供应商无法使用。“标准”互连器包括 InfiniBand、以太网和光纤通道。
我正在寻找这些互连器为内存访问提供的延迟。
例如,在 EDR Infiniband 交换机的规格中,它指出它提供“90ns港对港如果我理解正确的话,港对港延迟是指交换机本身引入的延迟。在这个延迟中,我们应该加上网卡延迟,大约 600 纳秒(根据这),因此与互连器相关的延迟约为 90+2x600=1290[ns]。(顺便说一句,与 90ns 相比,600ns 这个值似乎高得可疑。为什么这么高?)
我们还应该预计电缆(无源铜缆或光纤)会引入一些延迟。我猜这取决于电缆的长度,但我不确定它的顺序是什么。光传播 1 米需要大约 3 纳秒,这是一个好的估计吗?
缺少的部分是 NIC 访问内存的时间。我想我们应该分别考虑 RDMA 和通过 CPU 的情况。我是否遗漏了其他内容?我上述推理正确吗?
我的主要问题是:使用“标准”互连器(例如 InfiniBand、以太网或光纤通道)访问集群中不同节点内的内存的预期延迟是多少?
我之所以问这个问题,是因为我想分解我在当前的单一系统映像解决方案到更小的子问题。
答案1
您的单节点数为 90 ns 本地 vs 370 ns 其他套接字,这似乎是合理的。但是,我认为 Infiniband 的 600 ns 应该是端到端的,通过交换机连接到不同的框架。
远程数据报 600 纳秒非常快。本地内存访问通常约为 100 纳秒。而同一节点的不同套接字可能多 200 纳秒。
单一映像多节点计算机可以通过软件中的 RDMA 或 NUMA 系统中的硬件互连进行内存访问。
InfiniBand 是 RDMA 的一种传输方式。2014 年左右,Mellanox 声称Infiband EDR 端到端为 500 ns。这只是猜测,但他们的营销可能会混淆数字。NIC 上引用的典型端到端时间为 600 纳秒,加上路径上每个额外交换机的 150 纳秒。
或者,是的,NUMA 互连对于多节点系统来说是一种特殊的东西,但它们确实存在。对于 x86,有 SGI UV 系列。 NUMAlink 7 互连声称实现 500 ns 远程节点访问在 POWER 平台上,IBM 可以使用 NVLink 连接节点,尽管我不知道它的延迟。
关于您对以太网或 Infiniband 商品传输的选择,这很可能限制了您使用 RDMA 感知应用程序。支持透明单映像系统的 NUMA 硬件往往是定制的。