Infiniband OpenSM N 对 N 端口路由配置

Infiniband OpenSM N 对 N 端口路由配置

我有 10 台服务器,每台服务器有两个 CPU,每个 CPU 有一个 Mellanox 100G Infiniband NIC。每个 NIC 都连接到单个 Mellanox 36 端口 100G IB 交换机。

我的 RDMA 应用程序在每个 NUMA 节点上作为一个进程运行,并绑定到本地 NIC 以避免跨 CPU 流量。每个节点/进程都需要使用 RC 模式连接到其他每个节点。

我遇到的问题是,默认的 OpenSM 路由似乎迫使我使用某个 NIC 来到达某个目标节点。因此,我必须使用两个 NUMA 节点的两个 NIC 来到达所有其他节点。这意味着我还需要两个 PD,必须将所有内存注册两次。

有没有什么办法可以让单个 NIC 能够连接到网络上的任何其他 NIC/端口?

本质上,我想让 OpenSM 认为每个 NIC 都在它自己的服务器上,即假装不可能存在 QPI 流量。

看:https://docs.mellanox.com/display/MLNXOFEDv461000/OpenSM

一旦 MinHop 矩阵存在,就会访问每个交换机,并且对于每个目标 LID,会决定应该使用哪个端口来到达该 LID。

相关代码:https://github.com/linux-rdma/opensm/blob/844ab3b7edaad983449b5d3a4a773088b8daa299/opensm/osm_ucast_mgr.c#L201

答案1

https://community.mellanox.com/s/question/0D51T00006RVtlU/rdmacm-connection-setup-issues

据记录显示,通过确保 ibacm 服务(Infiniband 助理通信管理器)在所有服务器上运行,该问题已基本得到解决。

在所有服务器上运行sudo ibacm解决了这个问题,不要问我为什么......

相关内容