摘要:如果遇到IB網路不通,可以試著從高層往底層逐步分析看看,
本文分享自華為云社區《常見IB網路不通問題記錄》,作者: tsjsdbd ,
如果遇到IB網路不通,可以試著從高層往底層逐步分析看看,僅記錄下,供難友參考:
一、NCCL不通
報錯:
machine-19: [0] transport/net_ib.cc:839 NCCL WARN NET/IB : Got completion with error 12, opcode 0, len 0, vendor err 129
原因:錯誤12,說明RDMA網路不通,
需要分析底層網路為什么不通,
比如:
- 是否單純網路不通
- pfc流控不對導致丟包,
如果是(2)這種偶現不通的話,可以參考pfc設定規則:《為什么華為云上AI訓練必須設定NCCL_IB_TC=128》
二、ib_write_bw不通
報錯1:
root@tsjsdbd:~# ib_write_bw ---------------------------------------------------------- RDMA_Write BW Test Dual-port : OFFDevice : mlx4_0 Number of qps : 1Transport type : IB Connection type : RCUsing SRQ : OFF CQ Moderation : 100 Mtu : 2048[B] Link type : IB Max inline data : 0[B] rdma_cm QPs : OFF Data ex. method : Ethernet -------------------------------------------------------- local address: LID 0x81 QPN 0x160b3 PSN 0xa072 RKey 0x68010802 VAddr 0x007f184171a000 remote address: LID 0x35 QPN 0xc5a0b PSN 0xaa465a RKey 0x20010802 VAddr 0x007f3ca2b9c000 --------------------------------------------------------------------------------------- #bytes #iterations BW peak[MB/sec] BW average[MB/sec] MsgRate[Mpps] ethernet_read_keys: Couldn't read remote address Unable to read to socket/rdam_cm Failed to exchange data between server and clients
報錯2:
root@tsjsdbd:~# ib_write_bw -F 29.26.130.185 -d mlx5_5 ---------------------------------------------------------- RDMA_Write BW Test Dual-port : OFF Device : mlx5_5 Number of qps : 1 Transport type : IB Connection type : RC Using SRQ : OFF PCIe relax order: ON ibv_wr* API : ON TX depth : 128 CQ Moderation : 1 Mtu : 2048[B] Link type : Ethernet GID index : 3 Max inline data : 0[B] rdma_cm QPs : OFF Data ex. method : Ethernet -------------------------------------------------------- local address: LID 0x81 QPN 0x160b3 PSN 0xa072 RKey 0x68010802 VAddr 0x007f184171a000 GID: 00:00:00:00:00:00:00:00:00:00:255:255:29:26:130:235 remote address: LID 0x35 QPN 0xc5a0b PSN 0xaa465a RKey 0x20010802 VAddr 0x007f3ca2b9c000 GID: 00:00:00:00:00:00:00:00:00:00:255:255:29:26:130:185 --------------------------------------------------------------------------------------- #bytes #iterations BW peak[MB/sec] BW average[MB/sec] MsgRate[Mpps] Completion with error at client Failed status 12: wr_id 0 Syndrom 0x81 scnt=128, ccnt=0 Failed to complete run_iter_bw function successfully
說明網路不通,需要繼續分析RDMA鏈路,
三、ibv_rc_pingpong不通
報錯:
ibv_rc_pingpong -d mlx5_bond_0 -g 3 29.28.195.228 local address: LID 0x0000, QPN 0x01417f, PSN 0x63d7fa, GID ::ffff:29.28.201.21 remote address: LID 0x0000, QPN 0x00132d, PSN 0x8c0a5b, GID ::ffff:29.28.195.228 Failed status transport retry counter exceeded (12) for wr_id 2 parse WC failed 1
說明網路不通,需要分析IP網路為什么不通,
四、rping不通
報錯1:
rping -c -a 29.28.195.228 -v -C 10 cma event RDMA_CM_EVENT_ADDR_ERROR, error -110 waiting for addr/route resolution state 1
說明地址連不上,需要繼續判斷IP鏈路是否通,
報錯2:
rping -c -a 29.28.197.165 -C 10 -v cma event RDMA_CM_EVENT_REJECTED, error 8 wait for CONNECTED state 4 connect error -1
這個Reject表示連接被拒絕了,只是單純的因為 rping 作業時需首先啟動一個 server side 行程,然后從 client side 試圖向 server side 發起連接,
所以要先啟動Server端,
rping -s 29.28.201.211 -v
五、ping不通
報錯:
ping 29.28.195.228 PING 29.28.195.228 (29.28.195.228) 56(84) bytes of data. From 29.28.204.80 icmp_seq=1 Destination Host Unreachable From 29.28.204.80 icmp_seq=2 Destination Host Unreachable From 29.28.204.80 icmp_seq=3 Destination Host Unreachable From 29.28.204.80 icmp_seq=4 Destination Host Unreachable ^C --- 29.28.195.228 ping statistics --- 5 packets transmitted, 0 received, +4 errors, 100% packet loss, time 4045ms
這個估計就快到根錯誤了,假設交換機連接都是OK的,那基本就是路由設定問題:
可以用
# ip route get 29.28.204.80 from 29.28.201.211 29.28.204.80 from 29.28.201.211 dev enp137s0f0 uid 0
來確認發送報文的網卡是否選擇正確,
如果是「同網段多IB網卡」的情況,如A100 或者 A800服務,帶8個IB網卡,并都在同一個網段,則需要通過策略路由設定「源地址路由」規則來解決各個IP互通的問題,見:《RoCE多網卡時,報文可以過去,但是回不來》
六、ARP表不對
如果ping是通的,但是rping又不通, 那就還要再底層看一看了(你也算天選之子了,跑這么底層定位錯誤),
正常情況,學習到的arp表,一個IP地址對應一個網卡的MAC地址,
如下:
/home/tsj # arp -n | grep 29.28.201.211 29.28.201.211 ether 08:c0:eb:8c:10:6d C enp137s0f1
兩端同時查看,如果發現一個IP地址,學習到的arp記錄有多條不一樣的,說明arp設定不對,
需要
- 先清空arp表
- 設定arp應答規則
其中,
(1)清空arp表有2種方式:
- 指定某個IP清空:
arp -d 192.168.1.1
- 清空所有arp:(咱們直接執行這個就行)
ip -s -s neigh flush all
(2)設定arp應答規則:
sysctl -w net.ipv4.conf.all.arp_ignore=1 sysctl -w net.ipv4.conf.all.arp_announce=2
意思是只答復對應網卡的arp回應,
設定完后,再ping一次后,確認兩邊學習到的arp表是正確的,
點擊關注,第一時間了解華為云新鮮技術~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/556022.html
標籤:其他
上一篇:自然語言處理 Paddle NLP - 檢索式文本問答-理論
下一篇:返回列表
