Performance-Tuning
雙埠 RDMA 吞吐量問題
我有兩個節點通過 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 倍單埠頻寬)?
我不知道這裡的瓶頸是什麼以及如何找到它。
其他可能有用的配置:
- 每個socket有8個核心,每台機器總共有32個HT
- 每個 DIMM 提供 ~14GB/s bw(每個插槽 mem-bw:~28 GB/s,總體 ~56 GB/s)
- 我使用 Mellanox 的 Auto Tuning Utility 工具來調整中斷。
- IB 鏈路是 4X 10.0 Gbps (FDR10) – 每個 40 Gb/s
- 我正在使用 Mellanox OFED 4.3。
我認為這裡的瓶頸是 ConnectX 和主機之間的 PCIe 鏈路。ConnectX-3 有一個Gen. 3 x8 PCIe 連接,理論上最大 63.04 Gbps(根據這個答案),不包括成本(見這裡)。
我有 (2) 個系統,每個系統都有一個 Mellanox FDR MCX354A-FCBT CX354A (ConnectX-3 VPI)。只有 (2) 個使用 InfiniBand,我沒有開關,只是直接連接它們。我正在執行雙 Xeons(桑迪橋。)
我有一根 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 卡。
雙埠的另一個優點是它們可以直接連接到不同的網路或機器,並且如果它們不經常傳輸,它們都可以全速執行。