我有两个节点通过 IB 交换机与双端口 Mellanox Connext-X3 VPI HCA 连接。节点是两个插槽机器,每个插槽配备 Hasswell CPU 和 2 个 16GB DIMM(共计 64GB)。一切似乎都运行正常,除了性能数字似乎不太对劲。
当我运行ib_read_bw
基准测试时:
server# ib_read_bw --report_gbits
client# ib_read_bw server --report_gbits
---------------------------------------------------------------------------------------
#bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps]
65536 1000 37.76 37.76 0.072016
---------------------------------------------------------------------------------------
但是当我运行双端口时:
server# ib_read_bw --report_gbits -O
client# ib_read_bw server --report_gbits -O
---------------------------------------------------------------------------------------
#bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps]
65536 2000 52.47 52.47 0.100073
---------------------------------------------------------------------------------------
我只获得了不到 40% 的改善(我期望单端口带宽增加约 2 倍,这错了吗)?
我不知道这里的瓶颈是什么以及如何找到它。
其他可能有用的配置:
- 每个插槽有 8 个核心,每台机器总共有 32 个 HT
- 每个 DIMM 提供 ~14GB/s 带宽(每个插槽内存带宽:~28 GB/s,总体 ~56 GB/s)
- 我使用 Mellanox 的 Auto Tuning Utility 工具来调整中断。
- IB 链路为 4X 10.0 Gbps (FDR10) - 每个 40 Gb/s
- 我正在使用 Mellanox OFED 4.3。
答案1
我认为这里的瓶颈是 ConnectX 和主机之间的 PCIe 链路。ConnectX-3 有一个Gen.3 x8 PCIe 连接,理论最大值为 63.04 Gbps(根据这个答案),这还不包括管理费用(见这里)。
答案2
我有 (2) 个系统,每个系统都配有 Mellanox FDR MCX354A-FCBT CX354A (ConnectX-3 VPI)。只有 (2) 个系统使用 InfiniBand,我没有交换机,只是直接将它们连接起来。我运行的是双 Xeon(Sandy Bridge)。
我有一条 40Gb/秒的电缆,它阻止了 FDR 连接,并且得到:
#bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps]
65536 1000 31.11 31.11 0.059329
我买了一条 FDR(56Gb/秒)电缆,并开始获得:
#bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps]
65536 1000 49.58 49.58 0.094569
我一直想知道如果我使用这两个端口会怎么样,所以尝试了一下,得到了:
#bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps]
65536 2000 52.28 52.28 0.099717
算了。我可能不会再为这个目标而烦恼了。
我绝对认为 haggai_e 是对的,因为我的卡也是 PCI Express 3.0 x8。我认为为了更快地查看,我们需要 3.0 x16 或 4.0 卡。
双端口的另一个优点是它们可以直接连接到不同的网络或机器,并且如果它们不是持续传输,则每个端口都可以获得全速。