プロトコルスタックの統計、アクティブな接続、および基盤となる RDMA デバイスの状態を追跡することで、Shared Memory Communication (SMC) のヘルス状態をモニターします。すべてのメトリックは、smc-tools パッケージのツールを使用して収集されます。
前提条件
開始する前に、次のものが揃っていることを確認してください:
ご利用のインスタンスに Alibaba Cloud Linux 3 がインストールされていること
smc-tools(ユーザーモードの SMC メンテナンツールセット) がインストールされていること
smc-tools をインストールするには、以下を実行します:
sudo yum install -y smc-toolsプロトコルスタックのモニタリング
SMC スタックは、netlink を介して接続、トラフィック、および共有メモリのメトリックをユーザースペースに公開します。smcr コマンドは、これらのメトリックを読み取り、解釈します。
SMC-R スタック統計のクエリ
smcr stats を実行して、現在のネット名前空間にある Remote Direct Memory Access (SMC-R) 経由の SMC スタックに関する統計をクエリします:
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 handled | SMC-R スタックによって処理された総接続数。SMC connections、Handshake errors、および TCP fallback の合計に等しくなります。 |
SMC connections | SMC-R に正常に変換された接続数。 |
Handshake errors | ハンドシェイクフェーズ中に失敗した接続 (例:ピアからの応答がない)。 |
Avg requests per SMC conn | SMC 接続ごとに送受信されたリクエストの平均数。 |
TCP fallback | SMC ネゴシエーションが失敗した後に TCP/IP にフォールバックした接続数。 |
Rx/Data transmitted (Bytes) | SMC-R 接続で受信した合計バイト数。 |
Rx/Total requests | SMC-R 接続で受信した合計リクエスト数。 |
Rx/Buffer usage (Bytes) | 現在使用中の Rx バッファーの合計サイズ。単位:バイト。 |
Rx/Buffer full | Rx バッファーがフルになった回数。Rx バッファーがフルになると、送信者にバックプレッシャーがかかり、新しいデータが到着しなくなります。このカウントを減らすには、アプリケーションが Rx バッファーからより早く読み取るように構成するか、Rx バッファーサイズを増やしてください。 |
Rx/Bufs | SMC-R 接続に割り当てられた Rx バッファーサイズのディストリビューション。SMC-R はリンクグループごとにメモリプールを維持します。接続が開かれると、SMC-R はプールから適切なサイズのアイドルブロックを割り当てるか (または新しいブロックを作成します)。接続が閉じられると、ブロックはプールに戻ります。このカウンターは、作成されたブロックと再利用されたブロックの両方を含む合計割り当て数を追跡し、アクティブにメモリを消費しているバッファーの数ではありません。 |
Rx/Reqs | SMC-R 接続で受信したリクエストのサイズディストリビューション。 |
Tx/Data transmitted (Bytes) | SMC-R 接続で送信された合計バイト数。 |
Tx/Total requests | SMC-R 接続で送信された合計リクエスト数。 |
Tx/Buffer full | SMC-R スタックが時間内にデータをリンクにフラッシュできなかったために Tx バッファーがフルになった回数。この割合が高い場合は、Tx バッファーサイズを増やしてください。 |
Tx/Buffer full (remote) | ピアの Rx バッファーがフルだったため、ローカル側が送信できなかった回数。この割合が高い場合は、ピアの Rx バッファーサイズを増やしてください。 |
Tx/Buffer too small | 送信リクエストが Tx バッファー容量を超えた回数。この割合が高い場合は、Tx バッファーサイズを増やしてください。 |
Tx/Buffer too small (remote) | 送信リクエストがピアの Rx バッファー容量を超えた回数。この割合が高い場合は、ピアの Rx バッファーサイズを増やしてください。 |
Tx/Bufs | SMC-R 接続に割り当てられた Tx バッファーサイズのディストリビューション。Rx/Bufs と同じプールロジックに従います。アクティブに割り当てられメモリを消費しているバッファーではなく、合計割り当て数を追跡します。 |
Tx/Reqs | SMC-R 接続で送信されたリクエストのサイズディストリビューション。 |
リンクグループ統計のクエリ
デフォルトでは、各リンクグループには 1 つのリンクが含まれ、最大 32 の SMC-R 接続を伝送できます。リンクグループは、キューペア (QP)、保護ドメイン (PD)、メモリ登録 (MR) などの RDMA リソースのセットを管理します。
smcr linkgroup を実行して、現在のネット名前空間でアクセス可能な RDMA デバイスに関連付けられているすべての SMC-R リンクグループをリストします:
smcr linkgroup出力例:
# smcr linkgroup
LG-ID LG-Role LG-Type VLAN #Conns PNET-ID
00000300 SERV SINGLE 0 0リンクグループの数 (使用中の QP の数に等しい) と #Conns フィールドをモニターします:
| パラメーター | 説明 |
|---|---|
#Conns | リンクグループによって伝送される 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
CNY : 8388608 B| パラメーター | 説明 |
|---|---|
Sndbuf | リンクグループによって維持される Tx バッファープールが占有する合計メモリ。単位:バイト。 |
CNY | リンクグループによって維持される Rx バッファープールが占有する合計メモリ。単位:バイト。 |
RDMA デバイス情報のクエリ
smcr device を実行して、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-Dev | RDMA デバイスの名前。 |
IB-P | RDMA デバイスのポート。 |
IB-State | RDMA デバイスのステータス。 |
Type | RDMA デバイスのタイプ。Alibaba Cloud elastic Remote Direct Memory Access (eRDMA) デバイスは 0x107f を表示します。 |
#Links | RDMA デバイスに関連付けられているリンクの数。 |
PNET-ID | RDMA デバイスの物理ネットワーク (PNET) ID。構成の詳細については、「PNET ID パラメーターの構成」をご参照ください。 |
接続のモニタリング
smcss は、ss コマンドと同様に、SMC ソケットに関する情報を表示します。netlink からソケット情報を取得し、SMC のネゴシエーションに成功したソケットと TCP にフォールバックしたソケットの両方をカバーします。
デフォルトでは、smcss は現在のネット名前空間で接続中、切断中、および接続済みの SMC ソケットをリストします。
基本ソケット情報のクエリ
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| パラメーター | 説明 |
|---|---|
State | ソケットのステータス。有効な値:INIT (初期化中)、CLOSED (クローズ)、LISTEN (リスニング中)、ACTIVE (接続確立)、PEERCLW1 (ピアへのデータ送信なし)、PEERCLW2 (ピアとのデータ送受信なし)、APPLCLW1 (ピアからのデータ受信なし)、APPLCLW2 (ピアとのデータ送受信なし)、APPLFINCLW (ピアがソケットをクローズ)、PEERFINCLW (ソケットがローカルでクローズ)、PEERABORTW (ソケットが異常状態でローカルでクローズ)、PROCESSABORT (ピアがソケットを異常終了)。 |
Local Address | ローカルの IPv4 または IPv4 マップされた IPv6 アドレスとポート。SMC は IPv4 のみをサポートします。 |
Peer Address | ピアの IPv4 または IPv4 マップされた IPv6 アドレスとポート。SMC は IPv4 のみをサポートします。 |
Mode | 通信モード。SMCR は接続が SMC-R スタック上で実行されていることを意味します。TCP <fallback reason> は接続が TCP/IP にフォールバックしたことを意味します。数値コードはフォールバックの理由を示します。フォールバックコードの完全なリストについては、「SMC 有効化後の TCP/IP へのフォールバック」をご参照ください。 |
リスニングソケットのクエリ
smcss -l出力フィールドは smcss と同じです。
SMC-R ソケット詳細のクエリ
smcss -Rサンプル出力:
# smcss -R
状態 UID inode ローカルアドレス ピアアドレス インターフェイス モード ロール IB デバイス ポート リンク ID GID ピア 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 フィールドに加えて、smcss -R は以下を追加します:
| パラメーター | 説明 |
|---|---|
IB-device | 接続に使用する RDMA デバイスの名前です。 |
Port | 接続に使用する RDMA デバイスのポート番号です。 |
GID | 接続に使用する RDMA デバイスのグローバル ID(GID)です。 |
Peer-GID | ピア RDMA デバイスの GID です。 |
すべてのソケットのクエリ
smcss -a出力フィールドは smcss と同じです。
デバイスのモニタリング
SMC-R は、基盤となる RDMA インフラストラクチャとして Alibaba Cloud eRDMA デバイスを使用します。eRDMA は、RDMA リソースとデバイスの状態に関する統計を収集するためのユーザーモードツールを提供します。詳細については、「eRDMA のモニタリングと診断」をご参照ください。
smc_monitor_ex による統合モニタリング
smc_monitor_ex は smc-tools に含まれるモニタリングスクリプトです。内部で smcr と smcss を呼び出し、SMC のトラフィックレート、接続数、メモリ使用量を単一のビューでレポートします。
smc_monitor_ex は実験的なツールです。そのインターフェイスは将来のリリースで変更される可能性があります。
smc_monitor_ex -h を実行して、利用可能なサブコマンドを確認します:
# 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トラフィックレートのモニタリング
speed サブコマンドは、現在のネット名前空間における SMC のトラフィックレートと 1 秒あたりのリクエスト数 (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'たとえば、SMC-R のトラフィックレートと RPS を 1 秒ごとにクエリするには、次のようにします:
# 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接続数のモニタリング
connection サブコマンドは、現在のネット名前空間におけるアクティブな 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'たとえば、SMC-R 接続の数を 1 秒ごとにクエリするには、次のようにします:
# 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メモリ使用量のモニタリング
memory サブコマンドは、現在のネット名前空間で 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'たとえば、SMC-R リングバッファーの使用量を 1 秒ごとにクエリするには、次のようにします:
# 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すべての統計の一括表示
base サブコマンドは、トラフィックレート、接続数、メモリ使用量を単一の出力にまとめます。
たとえば、すべての SMC-R 統計を 1 秒ごとにクエリするには、次のようにします:
# 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