全部產品
Search
文件中心

Elastic Compute Service:監測和診斷eRDMA

更新時間:Sep 21, 2024

對eRDMA進行監測和診斷可以協助您及時發現和解決問題,確保系統安全,並有效管理和最佳化系統資源。本文主要介紹幾種可用於eRDMA監測的工具和方法,以便您對eRDMA的運行狀態進行監控。

前提條件

待監測執行個體已安裝和部署eRDMA。具體操作,請參見在企業級執行個體上配置eRDMA

使用CloudMonitor監測eRDMA

您可以通過阿里雲的CloudMonitor產品來監測eRDMA的運行狀態。eRDMA支援的監控指標項可以通過如下步驟查詢:

  1. 登入CloudMonitor控制台

  2. 在指標列表搜尋方塊中輸入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
說明

其餘命令,例如infodumpconf等,會有使用方面的約束限制,不建議您自行使用。

使用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。

  1. 運行如下命令,擷取diagnose工具。

    wget https://mirrors.aliyun.com/erdma/tools/diagnose.py
    # 查看diagnose工具使用方法
    python diagnose.py -h
  2. 檢測eRDMA。

    基礎功能檢測

    運行如下任意一條命令,檢測eRDMA基礎功能。

    python diagnose.py -d

    或者

    python diagnose.py --diagnose

    當前檢測項存在如下四種不同的檢測結果,含義如下:

    • PASS:通過當前檢測。

    • SKIP:當前系統版本不支援該檢測,跳過該檢測。

    • FAIL:相應偵查工具未安裝或檢測失敗,檢測命令會在fail info中列出。

    • 其他INFO資訊:eRDMA相關配置資訊,如安裝模式、驅動版本以及CC演算法等。

    image.png

    正常情況下執行diagnose工具的效果如下,表示所有檢測均通過。

    image.png

    當前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 deviceerdma installederdma loadedibverbs 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 loadederdma 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 loadederdma tools檢測項未滿足導致,請確認eRDMA驅動已安裝並正確載入。

    HPC環境檢測

    如果您需要在eRDMA的環境下運行HPC應用,您可能需要安裝一些額外的依賴和配置,diagnose工具提供eRDMA HPC環境依賴項檢測功能。如果您不是HPC情境使用者,可以忽略本小節內容。

    運行如下命令,檢測eRDMA HPC環境依賴項。

    python diagnose.py --hpc-check

    正常情況下,執行上述檢測命令的輸出結果如下。

    image.png

    當前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依賴包。

      安裝Python paramiko依賴包

      說明

      您可以參考如下命令安裝Python paramiko依賴包。對於預設使用Python3的發行版,如果您對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時延檢測。

    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免密登入所使用的私密金鑰檔案路徑(絕對路徑),請根據實際環境替換。

    檢測結果樣本如下。

    image.png

常見問題及解決方案

如何查詢當前使用的eRDMA核心驅動版本?

通過標準方式安裝的eRDMA,會自動部署eadm工具,通過eadm工具的ver命令,可以查詢當前的核心驅動版本號碼。

eadm ver

如何擷取當前系統中的eRDMA裝置列表?

  • 方式一:通過ibv_devinfo命令可以詳細輸出當前系統中可見的所有eRDMA裝置。

  • 方式二:通過rdma dev命令(需要作業系統支援)查詢當前系統中的eRDMA裝置列表。

如何查詢eRDMA裝置的流量?

在eRDMA裝置的驅動版本在0.2.34及以後,均支援流量的監控統計功能。

  1. 運行如下命令,確認驅動版本是否支援流量查詢功能,即驅動版本是否在0.2.34及以後。

    eadm ver
  2. 運行如下命令,查詢當前裝置的即時資料流量。

  • 僅有一個eRDMA裝置

    eadm stat -l
  • 有多個eRDMA裝置

    eadm stat -d <ibdev_name> -l

    其中<ibdev_name>是指待查詢的eRDMA裝置名稱(通過ibv_devinfo命令查詢),您需要根據實際環境替換。