本文將介紹SMC營運過程中需要關注的各類指標,以判斷網路健康狀態。
前提條件
已安裝Alibaba Cloud Linux 3提供的SMC營運工具集smc-tools。
如未安裝,執行以下命令安裝smc-tools工具集。
sudo yum install -y smc-tools協議棧監控
SMC協議棧在串連、流量以及共用記憶體等方面提供了統計指標,通過netlink方式傳遞到使用者態。使用者態工具smc-tools提供的smcr指令基於netlink接收並解析各類統計資訊。
查看SMC-R協議棧統計資訊
執行以下命令,查看SMC-R協議棧在當前
net namespace下的各類統計資訊。smcr stats輸出結果樣本:
# smcr stats SMC-R Connections Summary Total connections handled 5076 SMC connections 5076 Handshake errors 0 Avg requests per SMC conn 1977.0 TCP fallback 0 RX Stats Data transmitted (Bytes) 200705600 (200.7M) Total requests 5017741 Buffer usage (Bytes) 0 (0) Buffer full 0 (0.00%) 8KB 16KB 32KB 64KB 128KB 256KB 512KB >512KB Bufs 0 0 0 0 0 5.076K 0 0 Reqs 5.018M 0 0 0 0 0 0 0 TX Stats Data transmitted (Bytes) 1194173445 (1.194G) Total requests 5017640 Buffer usage (Bytes) 0 (0) Buffer full 0 (0.00%) Buffer full (remote) 0 (0.00%) Buffer too small 0 (0.00%) Buffer too small (remote) 0 (0.00%) 8KB 16KB 32KB 64KB 128KB 256KB 512KB >512KB Bufs 0 0 0 0 0 5.076K 0 0 Reqs 5.018M 0 0 0 0 0 0 0 Extras Special socket calls 5可主要關注如下參數:
參數
說明
Total connections handledSMC-R協議棧處理的串連數量累加值,為
SMC connections、Handshake errors、TCP fallback數量之和。SMC connections成功轉化為SMC-R串連的數量累加值。
Handshake errors握手階段出現錯誤的串連數量累加值,比如對端無響應等。
Avg requests per SMC conn平均每條SMC串連接收/發送請求數量。
TCP fallback回退到TCP/IP協議棧串連數量的累加值。
Rx/Data transmitted (Bytes)SMC-R串連接收資料累加值(單位:位元組)。
Rx/Total requestsSMC-R串連接收請求累加值。
Rx/Buffer usage(Bytes)SMC-R串連正在使用的接收緩衝區總和(單位:位元組)。
Rx/Buffer fullSMC-R串連接收緩衝區已滿次數累加值,表示使用者態程式未及時從接收緩衝區讀取資料。此時需要使用者態程式儘快讀取資料或在此情境下增大接收緩衝區容量,否則會反壓發送端,無法接收新的資料。
Rx/BufsSMC-R串連使用的接收緩衝區分布圖。SMC-R在每個Link Group維度維護一個記憶體池,建立串連時從記憶體池中擷取符合大小的、閒置記憶體塊複用。如果不存在則建立新的記憶體塊,串連斷開後將記憶體塊還回記憶體池以供後續複用。此處統計值為串連從記憶體池中擷取接收緩衝區的次數累加值與大小分布(包括緩衝區建立和複用次數),不代表實際佔用記憶體的接收緩衝區數量。
Rx/ReqsSMC-R串連接收請求實際擷取資料大小的分布。
Tx/Data transmitted (Bytes)SMC-R串連發送資料累加值(單位:位元組)。
Tx/Total requestsSMC-R串連發送請求累加值。
Tx/Buffer fullSMC-R串連發送緩衝區已滿次數累加值,表示SMC-R協議棧未及時將發送緩衝區中的資料發送到鏈路上。如果佔比較高則考慮在此情境下增大發送緩衝區容量。
Tx/Buffer full (remote)SMC-R串連的對端接收緩衝區已滿次數累加值,表示因對端接收緩衝區已滿而無法將資料發送到對端。若佔比較高則考慮在此情境下增大對端接收緩衝區容量。
Tx/Buffer too smallSMC-R串連發送請求大小超過發送緩衝區大小的次數累加值,表示發送緩衝區設定過小。若佔比較高則考慮在此情境下增大發送緩衝區容量。
Tx/Buffer too small (remote)SMC-R串連發送請求大小超過對端接收緩衝區大小的次數累加值,表示對端接收緩衝區設定過小。若佔比較高則考慮在此情境下增大對端接收緩衝區容量。
Tx/BufsSMC-R串連使用的發送緩衝區分布圖。SMC-R在每個Link Group維度維護一個記憶體池,建立串連時從記憶體池中擷取符合大小的、閒置記憶體塊複用。如果不存在則建立新的記憶體塊,串連斷開後將記憶體塊還回記憶體池以供後續複用。此處統計值為串連從記憶體池中擷取發送緩衝區的次數累加值與大小分布(包括緩衝區建立和複用次數),不代表實際佔用記憶體的發送緩衝區數量。
Tx/ReqsSMC-R串連發送請求資料大小的分布。
查看SMC-R Link Group統計資訊
說明Link Group(LGR)預設包含一個Link,在SMC-R中用於維護一組RDMA資源集合,包括QP(Queue Pair)、PD(Protection Domain)、MR(Memory Region)等,一個Link Group承載預設32個SMC-R串連的流量。
執行以下命令,查看SMC-R Link Group(LGR)相關統計。統計維度為當前net namespace可訪問的RDMA裝置所關聯的所有LGR。
smcr linkgroup輸出結果樣本:
# smcr linkgroup LG-ID LG-Role LG-Type VLAN #Conns PNET-ID 00000300 SERV SINGLE 0 0可主要關注
Link Group數量(意味著使用多少QP資源)以及以下參數:參數
說明
#Connslink group承載的SMC串連數量。進一步可以通過執行
smcr -d linkgroup命令查看更詳細資料。輸出結果樣本:
LG-ID : 00000500 LG-Role : CLNT LG-Type : SINGLE VLAN : 0 PNET-ID : Version : 2 Peer-Rel : 1 Peer-Host: Peer-OS : LINUX Direct : Yes EID : SMCV2-DEFAULT-UEID #Conns : 32 Sndbuf : 8388608 B RMB : 8388608 B可主要關注如下參數。
參數
說明
SndbufLGR維持的發送緩衝池佔用記憶體總和(單位:位元組)。
RMBLGR維持的接收緩衝池佔用記憶體總和(單位:位元組)。
查看SMC-R裝置統計資訊
執行以下命令,查看SMC-R協議棧所用RDMA裝置的資訊。
smcr device輸出結果樣本:
# smcr device Net-Dev IB-Dev IB-P IB-State Type Crit #Links PNET-ID eth1 erdma_0 1 ACTIVE 0x107f No 0可主要關注如下參數:
參數
說明
Net-Dev乙太網路網路裝置名稱。
IB-DevRDMA網路裝置名稱。
IB-PRDMA網路裝置連接埠。
IB-StateRDMA網路裝置狀態。
TypeRDMA網路裝置類型,使用阿里雲eRDMA網路裝置時此處顯示
0x107f。#LinksRDMA網路裝置所關聯Link數量。
PNET-ID關於RDMA網路裝置PNET ID相關資訊,請參見配置PNET ID參數。
串連監控
類似ss,SMC在smc-tools中提供了監控SMC socket的使用者態工具smcss,通過netlink擷取socket資訊,包括協商後使用SMC或是協商後回退到TCP的socket資訊。
查看SMC socket基礎統計
執行以下命令,查看正在建連、正在斷連、完成建連等狀態的,運行於SMC協議棧或是回退到TCP協議棧的SMC socket基礎資訊。統計維度為當前
net namespace。smcss輸出結果樣本:
# smcss State UID Inode Local Address Peer Address Intf Mode ACTIVE 00994 2954337 xxx.xxx.x.xx:80 xxx.xxx.x.xx:36000 0000 SMCR ACTIVE 00994 2953297 xxx.xxx.x.xx:80 xxx.xxx.x.xx:35948 0000 TCP 0x03010000可主要關注如下參數:
參數
說明
StateINIT:初始化中。CLOSED:已關閉。LISTEN:監聽中。ACTIVE:已建立串連。PEERCLW1:不再向對端發送資料。PEERCLW2:不再向對端發送或從對端接收資料。APPLCLW1:不再從對端接收資料。APPLCLW2:不再從對端接收或向對端發送資料。APPLFINCLW:對端已關閉。PEERFINCLW:本端已關閉。PEERABORTW:本端異常關閉。PROCESSABORT:對端異常關閉。
Local Address本地IPv4或IPv4-mapped IPv6地址與連接埠,目前SMC僅支援IPv4協議。
Peer Address對端IPv4或IPv4-mapped IPv6地址與連接埠,目前SMC僅支援IPv4協議。
Mode通訊模式。
SMCR:使用SMC-R協議棧通訊。
TCP <fallback reason>:回退使用TCP/IP協議棧通訊數字代碼錶示回退原因。關於數字代碼的具體含義,請參見啟用SMC後回退無法使用RDMA加速。
查看監聽狀態的SMC socket統計
執行以下指令,查看處在監聽狀態(LISTEN)的SMC socket。統計維度為當前
net namespace。smcss -l輸出參數與
smcss的輸出參數相同。查看運行在SMC-R協議棧的SMC socket統計
執行以下指令,查看運行在SMC-R協議棧的SMCsocket。統計維度為當前
net namespace。smcss -R輸出結果樣本:
# smcss -R State UID Inode Local Address Peer Address Intf Mode Role IB-device Port Linkid GID Peer-GID ACTIVE 00000 1833669 xxx.xxx.x.xx:33618 xxx.xxx.x.xx:80 0000 SMCR CLNT erdma_0 01 01 0000:0000:0000:0000:0000:xxxx:xxxx:xxxx 0000:0000:0000:0000:0000:xxxx:xxxx:xxxx除前述
smcss提到的基礎欄位外,可額外關注如下欄位:參數
說明
IB-device
串連所用RDMA裝置名稱。
Port
串連所用RDMA裝置連接埠。
GID
串連所用RDMA裝置GID(Global ID)。
Peer-GID
對端所用RDMA裝置GID。
查看所有SMC socket統計
執行以下指令,查看所有SMC socket。統計維度為當前
net namespace。smcss -a輸出參數與
smcss的輸出參數相同。
裝置監控
SMC-R使用阿里雲eRDMA作為底層RDMA裝置。eRDMA提供了多種使用者態工具,用於採集RDMA資源和裝置相關的統計資訊。具體操作,請參見監控和診斷eRDMA。
整合監控工具
smc_monitor_ex是由smc-tools提供的一個整合SMC流量統計、串連統計以及記憶體使用量統計的監控工具指令碼。該指令碼內部調用了smc-tools的原子指令(如smcr,smcss等)採集統計資料。
工具用法
執行以下命令,查看
smc_monitor_ex具體用法。警告smc_monitor_ex目前為實驗性工具,使用方式在未來可能發生變化。
# smc_monitor_ex -h usage: smc_monitor_ex [-h] {speed,s,connection,c,memory,m,base,b} ... SMC Monitor Tool (Experimental) positional arguments: {speed,s,connection,c,memory,m,base,b} commands speed (s) View transfer rates connection (c) View connection counts memory (m) View memory usages base (b) View transfer rates, connection counts, and memory usages optional arguments: -h, --help show this help message and exit流量統計
smc_monitor_ex中的speed子命令用於查看當前net namespace中SMC流量速率和RPS。# smc_monitor_ex speed -h usage: smc_monitor_ex speed [-h] [-i INTERVAL] [-r] [-m {smcr,smcd,smc}] optional arguments: -h, --help show this help message and exit -i INTERVAL, --interval INTERVAL Interval in seconds to display transfer rates. -r, --raw Display rates in B/s without converting units. -m {smcr,smcd,smc}, --mode {smcr,smcd,smc} Mode to check, either 'smc', 'smcr' or 'smcd', default is 'smc'例如,每隔1秒列印當前
net namespace的SMC-R流量:# smc_monitor_ex speed -m smcr -i 1 Date Mode Rx Rate Rx Rps Tx Rate Tx Rps 2025-02-21 14:01:48 smcr 0.0 B/s 0.0 /s 0.0 B/s 0.0 /s Date Mode Rx Rate Rx Rps Tx Rate Tx Rps 2025-02-21 14:01:49 smcr 0.0 B/s 0.0 /s 0.0 B/s 0.0 /s Date Mode Rx Rate Rx Rps Tx Rate Tx Rps 2025-02-21 14:01:50 smcr 0.0 B/s 0.0 /s 0.0 B/s 0.0 /s串連統計
smc_monitor_ex中的connection子命令用於查看當前net namespace中成功使用 SMC 或回退到TCP協議的串連數量。# smc_monitor_ex connection -h usage: smc_monitor_ex connection [-h] [-i INTERVAL] [-m {smc,smcr,smcd,fallback,all}] optional arguments: -h, --help show this help message and exit -i INTERVAL, --interval INTERVAL Interval in seconds to display connections. -m {smc,smcr,smcd,fallback,all}, --mode {smc,smcr,smcd,fallback,all} Mode to check, either 'all', 'smc', 'smcr', 'smcd' or 'fallback', default is 'all'例如,每隔1秒列印當前
net namespace中成功使用SMC-R通訊的串連數量:# smc_monitor_ex connection -m smcr -i 1 Date Mode #Conn 2025-02-21 14:06:47 smcr 0 Date Mode #Conn 2025-02-21 14:06:48 smcr 0 Date Mode #Conn 2025-02-21 14:06:49 smcr 0記憶體統計
smc_monitor_ex中的memory子命令用於查看當前net namespace中SMC串連所用環形緩衝區總和。# smc_monitor_ex memory -h usage: smc_monitor_ex memory [-h] [-i INTERVAL] [-r] [-m {smcr,smcd,smc}] optional arguments: -h, --help show this help message and exit -i INTERVAL, --interval INTERVAL Interval in seconds to display ringbuf usages. -r, --raw Display memory usages in bytes without converting units. -m {smcr,smcd,smc}, --mode {smcr,smcd,smc} Mode to check, either 'smcr', 'smcd' or 'smc', default is 'smc'例如,每隔1秒列印當前
net namespaceSMC-R串連所用環形緩衝區總和:# smc_monitor_ex memory -m smcr -i 1 Date Mode Rx Bufs Tx Bufs 2025-01-06 15:14:20 smcr 512.00 KB 512.00 KB Date Mode Rx Bufs Tx Bufs 2025-01-06 15:14:21 smcr 512.00 KB 512.00 KB全量統計
smc_monitor_ex中的base子命令用於查看當前net namespace中上述所有SMC相關統計。例如,每隔1秒列印當前
net namespace中SMC-R所有相關資訊:# smc_monitor_ex base -m smcr -i 1 Date Mode Rx Rate Rx Rps Tx Rate Tx Rps #Conn Rx Bufs Tx Bufs 2025-01-06 15:17:23 smcr 1.81 GB/s 21.66 K/s 0 B/s 0 /s 2 512.00 KB 512.00 KB Date Mode Rx Rate Rx Rps Tx Rate Tx Rps #Conn Rx Bufs Tx Bufs 2025-01-06 15:17:24 smcr 1.82 GB/s 21.81 K/s 0 B/s 0 /s 2 512.00 KB 512.00 KB