對eRDMA進行監測和診斷可以協助您及時發現和解決問題,確保系統安全,並有效管理和最佳化系統資源。本文主要介紹幾種可用於eRDMA監測的工具和方法,以便您對eRDMA的運行狀態進行監控。
前提條件
待監測執行個體已安裝和部署eRDMA。具體操作,請參見在企業級執行個體上配置eRDMA。
使用CloudMonitor監測eRDMA
您可以通過阿里雲的CloudMonitor產品來監測eRDMA的運行狀態。eRDMA支援的監控指標項可以通過如下步驟查詢:
在指標列表搜尋方塊中輸入eri,可以篩選出當前eRDMA支援的監控指標。
說明您也可以根據自己的監控需求對相應的監控資料進行加工、監控或者警示。更多資訊,請參見自訂監控。
使用eadm監測eRDMA
eadm是eRDMA驅動程式預設自動部署的一個使用者態的管理工具,無需手動安裝,它是自研的ECS內部的診斷與即時監測工具,便於在遇到故障時快速進行定位。eadm工具的主要功能包括:
流量監控、問題輔助診斷等功能:整個裝置的即時資料流量統計功能。
配置的查詢與設定功能:包括debug功能的開啟、擁塞控制演算法CC(Congestion Control)的配置等。
以下主要針對eadm工具常見的命令做說明,其他命令可以參考eadm工具的使用協助(通過eadm -h
命令擷取協助)。
本工具僅用於診斷與調試,工具未來可能發生變化,並不保證命令在任何情況/情境下均可用。
擷取當前支援的主命令字
eadm -h
擷取eRDMA裝置的即時資料流量資訊
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中管理控制TCP/IP網路和流量控制的新一代工具包,eRDMA的高版本已預設安裝iproute2,iproute2內建的rdma命令也可以對RDMA子系統做一些相應的監控和診斷。
iproute2工具用完整而有機制的簡單命令替代了ifconfig、arp、route、netstat等命令的功能,可用於管理網路介面、路由表和流量控制,協助管理員快速定位和解決網路連接問題。
查詢eRDMA裝置的統計資訊(例如cm和verebs訊息的計數、流量計數等)
rdma -p stat
查詢eRDMA裝置當前的資源使用方式
rdma res
查詢當前的eRDMA裝置的狀態資訊
rdma link
使用diagnose工具檢測eRDMA
diagnose診斷工具支援eRDMA基礎功能檢測、eRDMA HPC環境檢測和eRDMA基礎時延檢測,可以協助您更好地使用eRDMA。
運行如下命令,擷取diagnose工具。
wget https://mirrors.aliyun.com/erdma/tools/diagnose.py # 查看diagnose工具使用方法 python diagnose.py -h
檢測eRDMA。
基礎功能檢測
運行如下任意一條命令,檢測eRDMA基礎功能。
python diagnose.py -d
或者
python diagnose.py --diagnose
當前檢測項存在如下四種不同的檢測結果,含義如下:
PASS
:通過當前檢測。SKIP
:當前系統版本不支援該檢測,跳過該檢測。FAIL
:相應偵查工具未安裝或檢測失敗,檢測命令會在fail info
中列出。其他INFO資訊:eRDMA相關配置資訊,如安裝模式、驅動版本以及CC演算法等。
正常情況下執行diagnose工具的效果如下,表示所有檢測均通過。
當前eRDMA基礎功能檢測包含如下16個檢測項,如果某一項出錯,請按照如下方式解決:
檢測項
說明
期望輸出
異常輸出及解決方案
erdma device
eRDMA裝置是否存在
PASS
FAIL
:可能是您在購買執行個體時,沒有選中eRDMA功能或者沒有添加帶有eRDMA功能的輔助網卡。如何購買或者使能eRDMA,請參見在企業級執行個體上配置eRDMA。erdma installed
是否正確安裝eRDMA驅動
PASS
FAIL
:未正確安裝驅動。請確認您在配置eRDMA過程中的驅動安裝步驟是否正確,或者嘗試重新安裝驅動。具體操作,請參見在企業級執行個體上配置eRDMA。erdma loaded
是否正確載入eRDMA驅動
PASS
FAIL
:未正確載入驅動,可能發生在安裝完驅動但是尚未重啟主機的階段。請嘗試通過modprobe erdma
命令解決該問題。ibverbs loaded
是否正確載入ib_verbs驅動
PASS
FAIL
:請嘗試通過modprobe ib_uverbs
命令解決該問題。erdma tools
檢測eRDMA相關工具是否安裝
PASS
FAIL
:通過eadm|rdma|ibv_devinfo
命令判斷哪些工具缺失,這些工具通常會隨eRDMA驅動一同安裝,請確認您在配置eRDMA過程中的驅動安裝步驟是否正確,或者嘗試重新安裝驅動。具體操作,請參見在企業級執行個體上配置eRDMA。hca detected
使用者態驅動是否正確檢測eRDMA裝置
PASS
FAIL
:該問題是由於erdma device
、erdma installed
、erdma loaded
、ibverbs loaded
檢測項未滿足導致,請確認eRDMA驅動已安裝並正確載入。hca active
是否使能當前裝置
PASS
FAIL
:該問題是由於eRDMA裝置對應的ENI裝置沒有變為running
狀態。這種情況可能出現在某些較舊版本的核心中,需要先通過dhclient -v ethx
命令將對應的eth裝置使能後,再檢查eRDMA裝置是否處於ACTIVE
狀態。erdma stats
eRDMA裝置是否存在錯誤計數
PASS
SKIP
:可能是因為作業系統不支援rdma stat
命令。FAIL
:可能是出現了某些錯誤的計數。在尋求支援人員時,建議帶上rdma -p stat
命令的輸出結果。
network config
網路連通性是否正常
PASS
FAIL
:一般是由於當前有多個網卡的IP地址在同一個子網內,會導致某些情境下eRDMA功能異常。erdma dmesg
是否存在eRDMA相關核心警示
PASS
FAIL
:核心出現eRDMA相關警示。您可以檢查相關的警示錯誤,並嘗試重新載入驅動解決。atomic support
eRDMA裝置是否支援RDMA ATOMIC操作
PASS
FAIL
:當前eRDMA裝置不支援RDMA ATOMIC操作。如您不需要使用RDMA ATOMIC操作,請忽略該報錯。說明ATOMIC操作指的是一種對記憶體進行原子層級操作的功能,它可以保證操作的完整性和一致性,僅適用於部分應用情境。如果您不需要使用,請忽略相關報錯。
go-back-n support
eRDMA裝置是否支援Go-back-N功能
PASS
SKIP
:可能是當前eRDMA裝置不支援查詢Go-back-N配置資訊。FAIL
:可能是未正確安裝eadm工具或當前eRDMA裝置不支援Go-back-N功能。
說明Go-back-N為eRDMA擴充功能,僅適用於部分應用情境。如果您不需要使用,請忽略相關報錯。
erdma install mode
eRDMA核心驅動安裝模式
Standard
:表示標準模式,僅支援RDMA_CM建鏈。Compat
:相容模式,支援RDMA_CM和OOB建鏈,但是會額外佔用0x7790-0x779F範圍內的TCP連接埠。
FAIL
:未查詢到eRDMA核心驅動安裝模式,該問題可能是由於前述erdma loaded
檢測項未滿足導致,請嘗試重新安裝eRDMA驅動。具體操作,請參見在企業級執行個體上配置eRDMA。kernel driver version
eRDMA核心驅動版本
eRDMA當前的核心驅動版本,例如
0.2.38
。FAIL
:未查詢到eRDMA核心態驅動版本。可能是由於erdma loaded
或erdma tools
檢測項未滿足導致,請確認eRDMA驅動已安裝並正確載入。具體操作,請參見在企業級執行個體上配置eRDMA。rdma-core version
eRDMA使用者態驅動版本
eRDMA使用者態驅動版本,例如
44.3-1
。FAIL
:未查詢到eRDMA使用者態驅動版本。可能是未正確安裝eRDMA使用者態驅動,請嘗試重新安裝eRDMA驅動。具體操作,請參見在企業級執行個體上配置eRDMA。cc algorithm
eRDMA當前使用的CC演算法
eRDMA CC演算法,例如
cubic
。FAIL
:未查詢到當前eRDMA CC演算法。可能是由於erdma loaded
或erdma tools
檢測項未滿足導致,請確認eRDMA驅動已安裝並正確載入。HPC環境檢測
如果您需要在eRDMA的環境下運行HPC應用,您可能需要安裝一些額外的依賴和配置,diagnose工具提供eRDMA HPC環境依賴項檢測功能。如果您不是HPC情境使用者,可以忽略本小節內容。
運行如下命令,檢測eRDMA HPC環境依賴項。
python diagnose.py --hpc-check
正常情況下,執行上述檢測命令的輸出結果如下。
當前eRDMA HPC環境依賴項檢測主要包括當前eRDMA使用的CC演算法、是否開啟Go-back-N、DAPL 1.0和DAPL 2.0相關檢測。如您不需要使用相關依賴項,請忽略相關報錯,比如您只需要使用DAPL 2.0,那麼請忽略DAPL 1.0相關報錯。
檢測項
說明
期望輸出
異常輸出及解決方式
cc algorithm
eRDMA當前使用的CC演算法
eRDMA CC演算法,例如cubic
FAIL
:未查詢到當前eRDMA CC演算法,可能是未正確安裝eadm工具或當前eadm工具不支援查詢eRDMA CC演算法。go-back-n support
eRDMA裝置是否支援Go-back-N功能
PASS
SKIP
:可能是當前eRDMA裝置不支援查詢Go-back-N配置資訊。FAIL
:可能是未正確安裝eadm工具或當前eRDMA裝置不支援Go-back-N功能。
該特性缺失可能會對HPC類型應用產生影響。如您不需要,請忽略該報錯。
dapl1 install
是否正確安裝dapl1
PASS
FAIL
:dapl1相關共用庫或設定檔不存在,請檢查當前dapl1是否正確安裝。如果您不需要dapl1,請忽略該報錯。dapl1 config
是否在dapl1設定檔中配置eRDMA
PASS
FAIL
:未在dapl1設定檔中檢測到eRDMA相關配置,請檢查當前dapl1設定檔並加入eRDMA相關配置。如果您不需要dapl1,請忽略該報錯。dapl2 install
是否正確安裝dapl2
PASS
FAIL
:dapl2相關共用庫或設定檔不存在,請檢查當前dapl2是否正確安裝。如果您不需要dapl2,請忽略該報錯。dapl2 config
是否在dapl2設定檔中配置eRDMA
PASS
FAIL
:未在dapl2設定檔中檢測到eRDMA相關配置,請檢查當前dapl2設定檔並加入eRDMA相關配置。如果您不需要dapl2,請忽略該報錯。dapl2 test
是否正常運行dapl2 dtest
PASS
FAIL
:運行dtest失敗,可能是未正確安裝或配置dapl2。時延檢測
檢測前提
在執行時延檢測之前,您需要確保:
已在所有待檢測節點上正確安裝和部署eRDMA。具體操作,請參見在企業級執行個體上配置eRDMA。
已配置所有待檢測節點之間可通過SSH免密串連。具體操作,請參見搭建Hadoop環境。
已在所有待檢測節點上安裝Python paramiko依賴包。
檢測步驟
運行如下命令,進行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免密登入所使用的私密金鑰檔案路徑(絕對路徑),請根據實際環境替換。
檢測結果樣本如下。