本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
對eRDMA進行監測和診斷可以幫助您及時發現和解決問題,確保系統安全,并有效管理和優化系統資源。本文主要介紹幾種可用于eRDMA監測的工具和方法,以便您對eRDMA的運行狀態進行監控。
前提條件
待監測實例已安裝和部署eRDMA。具體操作,請參見ECS實例使能eRDMA。
使用云監控監測eRDMA的運行狀態
您可以通過阿里云的云監控產品來監測eRDMA的運行狀態,您也可以根據自己的監控需求對相應的監控數據進行加工、監控或者告警。詳細信息,請參見自定義監控。
查看eRDMA支持的監控指標項
登錄云監控控制臺。
在指標列表搜索框中輸入eri,可以篩選出當前eRDMA支持的監控指標。
使用eadm工具進行eRDMA故障診斷和排查
eadm是eRDMA驅動程序默認自動部署的一個用戶態的管理工具,無需手動安裝,它是自研的ECS內部的診斷與實時監測工具,便于在遇到故障時快速進行定位。eadm工具的主要功能包括:
流量監控、問題輔助診斷等功能:整個設備的實時流量統計功能。
配置的查詢與設置功能:包括delay ack功能的配置、擁塞控制算法CC(Congestion Control)的配置等。
以下主要針對eadm工具常見的命令做說明,其他命令可以參考eadm工具的使用幫助(通過eadm -h
命令獲取幫助)。
本工具僅用于診斷與調試,工具未來可能發生變化,并不保證命令在任何情況/場景下均可用。
查看
eadm
命令的幫助信息eadm -h
實時監測eRDMA設備的實時流量信息
eRDMA設備的驅動版本在
0.2.34
及以后,均支持流量的監控統計功能。eadm stat -d <ibdev_name> -l
其中
<ibdev_name>
是指待查詢的eRDMA設備名稱(通過ibv_devinfo
命令查詢),您需要根據實際環境替換。如果環境中僅有一個eRDMA設備,-d <ibdev_name>
參數可省略。獲取eRDMA設備的統計信息(例如cm和verebs消息的計數、流量計數等)
eadm stat -d <ibdev_name>
其中
<ibdev_name>
是指待查詢的eRDMA設備名稱(通過ibv_devinfo
命令查詢),您需要根據實際環境替換。如果環境中僅有一個eRDMA設備,-d <ibdev_name>
參數可省略。獲取當前eRDMA驅動的版本信息
eadm ver
其余命令,例如info
、dump
、conf等,
會有使用方面的約束限制,不建議您自行使用。
使用iproute2監控和診斷eRDMA
iproute2是一套用于配置和管理Linux網絡的工具集,它提供了一系列的命令行工具(如ip、ss等),用于網絡接口、路由表和流量控制等方面的管理和配置,還可以幫助管理員快速定位和解決網絡連接問題,其自帶的rdma
命令可以對RDMA子系統做一些相應的監控和診斷。
大多數Linux發行版在較新的版本中通常已默認安裝iproute2,如Alibaba Cloud Linux 3、Ubuntu20及以上等,具體情況請參閱相應操作系統官方文檔。
查詢當前eRDMA設備的狀態信息
rdma link
查詢eRDMA設備當前資源使用情況(如CQ數、QP數、MR數等)
說明在RDMA網絡通信中,QP(Queue Pair)、CQ(Completion Queue)、MR(Memory Region)和verbs Opcode是幾個核心的組件,它們在RDMA通信中扮演著重要的角色,共同確保了RDMA網絡通信的高效性和低延遲性。
詳細信息,請參見彈性RDMA的基礎能力和規格。
rdma res
查詢eRDMA設備的性能統計信息(例如連接次數、連接狀態、發送/接收的數據包數量等)
rdma -p stat
使用diagnose進行eRDMA的故障診斷和性能評估
diagnose診斷工具支持eRDMA基礎功能檢測、eRDMA HPC環境檢測和eRDMA基礎延遲檢測,可以幫助您更好地使用eRDMA。
diagnose檢測可能存在以下幾種結果
PASS
:通過當前檢測。SKIP
:當前系統版本不支持該檢測,跳過該檢測。FAIL
:相應檢測工具未安裝或檢測失敗,檢測命令會在fail info
中列出。其他INFO信息:eRDMA相關配置信息,如安裝模式、驅動版本以及CC算法等。
安裝diagnose
在已配置eRDMA的實例上,執行以下命令,獲取diagnose工具。
從內網地址獲取
wget http://mirrors.cloud.aliyuncs.com/erdma/tools/diagnose.py
從公網地址獲取
wget https://mirrors.aliyun.com/erdma/tools/diagnose.py
python diagnose.py -h
eRDMA基礎功能診斷
您可以通過diagnose進行eRDMA的基礎功能診斷測試,包括驅動是否正確安裝、網絡連通性是否正確、eRDMA內核驅動的安裝模式等,以確保 eRDMA 功能可以正常運行并發揮其高吞吐量和低延遲的優勢。
檢測項 | 說明 | 期望輸出 | 異常輸出及解決方案 |
| eRDMA設備是否存在 |
|
|
| 是否正確安裝eRDMA驅動 |
|
|
| 是否正確加載eRDMA驅動 |
|
|
| 是否正確加載ib_verbs驅動 |
|
|
| 檢測eRDMA相關工具是否安裝 |
|
|
| 用戶態驅動是否正確檢測eRDMA設備 |
|
|
| 是否使能當前設備 |
|
|
| eRDMA設備是否存在錯誤計數 |
|
|
| 網絡連通性是否正常 |
|
|
| 是否存在eRDMA相關內核告警 |
|
|
| eRDMA設備是否支持RDMA ATOMIC操作 |
|
說明 ATOMIC操作指的是一種對內存進行原子級別操作的功能,它可以保證操作的完整性和一致性,僅適用于部分應用場景。如果您不需要使用,請忽略相關報錯。 |
| eRDMA設備是否支持Go-back-N功能 |
|
說明 Go-back-N為eRDMA擴展功能,僅適用于部分應用場景。如果您不需要使用,請忽略相關報錯。 |
| eRDMA內核驅動安裝模式 |
|
|
| eRDMA內核驅動版本 | eRDMA當前的內核驅動版本,例如 |
|
| eRDMA用戶態驅動版本 | eRDMA用戶態驅動版本,例如 |
|
| eRDMA當前使用的CC算法 | eRDMA CC算法,例如 |
|
具體操作如下所示:
遠程登錄已配置eRDMA的實例。
具體操作,請參見使用Workbench工具以SSH協議登錄Linux實例。
執行以下命令,獲取diagnose工具。
從內網地址獲取
wget http://mirrors.cloud.aliyuncs.com/erdma/tools/diagnose.py
從公網地址獲取
wget https://mirrors.aliyun.com/erdma/tools/diagnose.py
執行以下命令,檢測eRDMA基礎功能。
python diagnose.py -d
結果如下所示,可以看到本示例中測試項結果。關于診斷項說明,請參見eRDMA基礎功能診斷項說明。
eRDMA HPC環境診斷
如果您需要在eRDMA的環境下運行HPC應用,您可能需要安裝一些額外的依賴和配置,diagnose工具提供eRDMA HPC環境依賴項檢測功能。
當前eRDMA HPC環境依賴項檢測主要包括當前eRDMA使用的CC算法、是否開啟Go-back-N、DAPL 1.0和DAPL 2.0相關檢測。如您不需要使用相關依賴項,請忽略相關報錯,比如您只需要使用DAPL 2.0,那么請忽略DAPL 1.0相關報錯。
檢測項 | 說明 | 期望輸出 | 異常輸出及解決方式 |
| eRDMA當前使用的CC算法 | eRDMA CC算法,例如hpcc_rtt |
|
| eRDMA設備是否支持Go-back-N功能 |
|
該特性缺失可能會對HPC類型應用產生影響。如您不需要,請忽略該報錯。 |
| 是否正確安裝dapl1 |
|
|
| 是否在dapl1配置文件中配置eRDMA |
|
|
| 是否正確安裝dapl2 |
|
|
| 是否在dapl2配置文件中配置eRDMA |
|
|
| 是否正常運行dapl2 dtest |
|
|
具體操作如下所示:
遠程登錄已配置eRDMA的實例。
具體操作,請參見使用Workbench工具以SSH協議登錄Linux實例。
執行以下命令,獲取diagnose工具。
從內網地址獲取
wget http://mirrors.cloud.aliyuncs.com/erdma/tools/diagnose.py
從公網地址獲取
wget https://mirrors.aliyun.com/erdma/tools/diagnose.py
執行如下命令,檢測eRDMA HPC環境依賴項。
python diagnose.py --hpc-check
正常情況下,執行上述檢測命令的輸出結果如下。關于診斷項說明,請參見eRDMA HPC環境檢測依賴項說明。
eRDMA網絡性能評估
您可以使用diagnose的perftest功能進行不同實例之間的網絡性能測試。
前提條件
在執行檢測之前,您需要確保:
已在所有待檢測節點上正確安裝和部署eRDMA。具體操作,請參見ECS實例使能eRDMA。
已配置所有待檢測節點之間可通過SSH免密連接。具體操作,請參見配置SSH免密登錄。
已在所有待檢測節點上安裝Python paramiko依賴包。
說明diagnose利用paramiko實現遠程連接。
您可以參考如下命令安裝Python paramiko依賴包。如果您對Python版本沒有要求,推薦您默認使用Python3以減少配置工作量。
Alibaba Cloud Linux/Centos
# python3 sudo python3 -m pip install --upgrade pip sudo python3 -m pip install paramiko # python2 # 如果當前python2未安裝pip模塊,請安裝python2-pip sudo yum -y install python2-pip sudo python2 -m pip install --upgrade pip==20.3.4 sudo python2 -m pip install paramiko
Ubuntu
# python3 sudo python3 -m pip install --upgrade pip sudo python3 -m pip install paramiko # python2 # 如果當前節點未安裝python2-pip sudo apt install software-properties-common sudo add-apt-repository universe sudo apt update sudo apt install python2 sudo curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py sudo python2 get-pip.py sudo python2 -m pip install --upgrade pip==20.3.4 sudo python2 -m pip install paramiko
示例操作
遠程登錄已配置eRDMA的實例。
具體操作,請參見使用Workbench工具以SSH協議登錄Linux實例。
執行以下命令,獲取diagnose工具。
從內網地址獲取
wget http://mirrors.cloud.aliyuncs.com/erdma/tools/diagnose.py
從公網地址獲取
wget https://mirrors.aliyun.com/erdma/tools/diagnose.py
執行如下命令,進行eRDMA延遲檢測。
python diagnose.py --perftest --hosts <n1> <n2> --user <username> --key-file </path/to/private_key>
各參數說明如下:
--hosts <n1> <n2>
:待檢測的各節點,彼此之間通過空格分隔。您需要將<n1> <n2>
替換為檢測節點上的eRDMA彈性網卡對應的私有IP地址。--user <username>
:SSH免密登錄用戶名,請根據實際環境替換。--key-file </path/to/private_key>
:SSH免密登錄所使用的私鑰文件路徑(絕對路徑),請根據實際環境替換。
檢測結果示例如下,顯示了兩臺實例之間的網絡延遲測試。詳細信息,請參見eRDMA網絡性能測試。
每個表格展示了不同操作下的延遲情況。表格中的行代表發起請求的一方,列代表響應請求的一方。每個單元格內的數值表示平均延遲(單位為微秒),括號內是第99.9百分位的延遲時間。