NAME
ibv_query_device - RDMA デバイスの属性情報を取得する
SYNOPSIS
#include <infiniband/verbs.h> int ibv_query_device(struct ibv_context *context, struct ibv_device_attr *device_attr);
DESCRIPTION
ibv_query_device()
は context で指定される RDMA デバイスの属性情報を device_attr が指す領域にコピーする。
context は ibv_open_device() でオープンした RDMA デバイスを指定する。
メンバ変数 | 型 | 解説 | 典型的な値 | ||||||
---|---|---|---|---|---|---|---|---|---|
fw_ver | char [64] | HCA のファームウェアバージョン | |||||||
node_guid | uint64_t | ノード GUID は HCA に割り当てられた GUID。 Subnet Manager が DrSMP でサブネットを探索する際に、ポート GUID とノード GUID は別々に取得できる。マルチポート HCA の場合、ポート GUID はポート毎に別々だが、ノード GUID は同一のものが割り当てられる。Subnet Manager から見ると、あるポートが同一の HCA に属しているかどうかを判定可能になる。 | |||||||
sys_image_guid | uint64_t | ||||||||
max_mr_size | uint64_t | ibv_reg_mr() で登録できる最大のメモリ長。これが 0xffffffffffffffff に設定されている場合、最大メモリ長に制限はないことになる。 | 0xffffffffffffffff | ||||||
page_size_cap | uint64_t | Supported memory shift sizes | 0xfffffe00 | ||||||
vendor_id | uint32_t | Vendor ID, per IEEE | |||||||
vendor_part_id | uint32_t | Vendor supplied part ID | |||||||
hw_ver | uint32_t | Hardware version | |||||||
max_qp | int | 同時に存在できる最大の QP 数。ただしパラメータによってはこれ以下の数の QP しか生成できないことがある。 | 131,008 | ||||||
max_qp_wr | int | QP に設定できる最大 WR 数。ibv_create_qp() 呼び出し時に qp_init_attr->cap の中の max_send_wr、max_recv_wr はこの値を越えて設定することができない。その他、IBV_QP_CAP を指定した ibv_modify_qp() にもリミッターを掛ける。 | 16,351 | ||||||
device_cap_flags | int | HCA デバイスのケーパビリティ。 | Table 2 を参照。 | ||||||
max_sge | int | QP に設定できる最大 Scatter/Gather 組数。ibv_create_qp() 呼び出し時に qp_init_attr->cap の中の max_send_sge、max_recv_sge はこの値を越えて設定することができない。その他、IBV_QP_CAP を指定した ibv_modify_qp() にもリミッターを掛ける。 | 32 | ||||||
max_sge_rd | int | 0 | |||||||
max_cq | int | 同時に存在できる最大の CQ 数。ただしパラメータによってはこれ以下の数の CQ しか生成できないことがある。 | 65,408 | ||||||
max_cqe | int | CQ に設定できる最大 CQE 数。ibv_create_cq() 呼び出し時に引数 cqe はこの値を越えて設定することができない。その他、ibv_resize_cq() にもリミッターを掛ける。 | 4,194,303 | ||||||
max_mr | int | 同時に存在できる最大の Memory Region(MR) 数。ただしパラメータによってはこれ以下の数の MR しか生成できないことがある。 | 524,272 | ||||||
max_pd | int | 同時に存在できる最大の Protection Domain(PD) 数。 | 32,764 | ||||||
max_qp_rd_atom | int | QP に設定できる RDMA READ と Atomic 操作の最大同時発行数。 ibv_modify_qp() 呼び出し時に引数 attr->max_dest_rd_atomic はこの値を越えて設定することができない。 | 16 | ||||||
max_ee_rd_atom | int | 0 | |||||||
max_res_rd_atom | int | HCA 全体での RDMA READ と Atomic 操作の最大値。最大同時発行数なのか最大同時受信数なのか不明。 | 20,961,280 | ||||||
max_qp_init_rd_atom | int | QP に設定できる RDMA READ と Atomic 操作の最大同時受信数。ibv_modify_qp() 呼び出し時に引数 attr->max_rd_atomic はこの値を越えて設定することができない。 | 128 | ||||||
max_ee_init_rd_atom | int | 0 | |||||||
atomic_cap | enum iv_atomic_cap |
Atomic 操作がどの範囲で Atomicity を保証するかを表示。
|
ATOMIC_HCA(1) | ||||||
max_ee | int | 0 | |||||||
max_rdd | int | 0 | |||||||
max_mw | int | 0 | |||||||
max_raw_ipv6_qp | int | 0 | |||||||
max_raw_ethy_qp | int | 0 | |||||||
max_mcast_grp | int | 作成可能なマルチキャストグループの最大数 | 8,192 | ||||||
max_mcast_qp_attach | int | 1 つのマルチキャストグループに参加させることができる QP の最大数。 この制限は ibv_attach_mcast() を実行する際に問題になる。 | 248 | ||||||
max_total_mcast_qp_attach | int | HCA 全体で QP のマルチキャスト参加を許す最大数。 この制限も ibv_attach_mcast() を実行する際に問題になる。 | 2,031,616 | ||||||
max_ah | int | 同時に存在できる最大の Address Handle 数。 ただし Mellanox ConnectX-3 はこの値が 0 だが、ibv_create_ah() で AH は作成可能。 | 0 | ||||||
max_fmr | int | 0 | |||||||
max_map_per_fmr | int | 0 | |||||||
max_srq | int | 同時に存在できる最大の SRQ 数。 | 65,472 | ||||||
max_srq_wr | int | SRQ に設定できる最大 WR 数。ibv_create_srq() 呼び出し時に srq_init_attr->cap の中の max_wr はこの値を越えて設定することができない。その他、ibv_modify_srq() にもリミッターを掛ける。 | 16,383 | ||||||
max_srq_sge | int | SRQ に設定できる最大 Scatter/Gather 組数。ibv_create_srq() 呼び出し時に srq_init_attr->cap の中の max_sge はこの値を越えて設定することができない。その他、ibv_modify_srq() にもリミッターを掛ける。 | 31 | ||||||
max_pkeys | uint16_t | Partition Key Table のエントリ数となる。 ただし Partition Key Table はポート毎にあるものなので、ibv_query_pkey() を使う場合の最大インデックス数は ibv_query_port() で取得できる pkey_tbl_len を参照すべき。 | 128 | ||||||
local_ca_ack_delay | uint8_t | RC QP に設定する Local ACK Timeout の時間間隔の最小分解能。 ibv_modify_qp() の attr->timeout で指定した値に対応する時間が local_ca_ack_delay の最小分解能時間よりを下回っている場合、Local ACK Timeout 時間は最小分解能時間となる。 詳細は 「InfiniBandの再送制御を理解する」 2.1 Local ACK Timeoutを参照のこと。 | 15 | ||||||
phys_port_cnt | uint8_t | HCA の物理ポートの数 | 1 or 2 |
ビット | マクロ名 | 解説 | 典型的な値 |
---|---|---|---|
0 | IBV_DEVICE_RESIZE_MAX_WR | 既存の QP の WR パラメータを変更に対応。 IBV_QP_CAP を指定し ibv_modify_qp() を呼ぶことができる。 | |
1 | IBV_DEVICE_BAD_PKEY_CNTR | 入力パケットの P_Key の不一致をカウントする。 このカウンター値は ibv_query_port() を実行し、bad_pkey_cnt として取り出すことができる。 | Supported |
2 | IBV_DEVICE_BAD_QKEY_CNTR | 入力 UD パケットの Q_Key の不一致をカウントする。 このカウンター値は ibv_query_port() を実行し、qkey_viol_cnt として取り出すことができる。 | Supported |
3 | IBV_DEVICE_RAW_MULTI | RAW パケットでマルチキャストに対応する。 | |
4 | IBV_DEVICE_AUTO_PATH_MIG | Autopath Migration に対応する。 | Supported |
5 | IBV_DEVICE_CHANGE_PHY_PORT | QP が SQD に遷移した時に primary port number の変更に対応。 IBV_QP_PORT を指定し ibv_modify_qp() を呼ぶことができる。 | Supported |
6 | IBV_DEVICE_UD_AV_PORT_ENFORCE | Supported | |
7 | IBV_DEVICE_CURR_QP_STATE_MOD | ibv_modify_qp() で IBV_QP_CUR_STATE を指定し、遷移元の QP ステートを指定できる。 「InfiniBand の QP ステートの遷移を理解する」 3. QP ステートの遷移も参照のこと。 | |
8 | IBV_DEVICE_SHUTDOWN_PORT | Shutdown Port indicator。 | |
9 | IBV_DEVICE_INIT_TYPE | InitType オプション。これは SM が動作する前のポートの自動初期化に関する機能。 | |
10 | IBV_DEVICE_PORT_ACTIVE_EVENT | ポートに関する非同期イベントを生成する。 詳細は「エラーハンドリングのモデルを理解する」 3.5 ポートのリンク状態に関係するものを参考のこと。 | Supported |
11 | IBV_DEVICE_SYS_IMAGE_GUID | System Image GUID support indicator | Supported |
12 | IBV_DEVICE_RC_RNR_NAK_GEN | RC サービスで受信側の Receive Queue/Shared Receive Queue に Receive WR が空になっている場合に RNR-NAK を応答する。 | Supported |
13 | IBV_DEVICE_SRQ_RESIZE | 既存の SRQ の最大 Receive WR 数を変更に対応。 IBV_SRQ_MAX_WR を指定し ibv_modify_srq() を呼ぶことができる。 「InfiniBand の QP ステートの遷移を理解する」 3. QP ステートの遷移も参照のこと。 | |
14 | IBV_DEVICE_N_NOTIFY_CQ | CQ に指定数の completion が溜まるまで、completion channel が notification を起こすのを抑止する機能に対応。 | |
16 | (LOCAL_DMA_LKEY) | DMA 転送を行う場合の専用 L_Key を提供する機能。 これはカーネルの内部だけ有効な機能。 | |
17 | (MEM_WINDOW) | Memory Window 機能。 | |
18 | (UD_IP_CSUM) | IPoIB checksum 機能。 | Supported |
19 | (UD_TSO) | IPoIB で HCA の TSO オフロード機能を利用する。 | Supported |
20 | IBV_DEVICE_XRC | Extended Reliable Connection(XRC) サービスのサポート。 | Supported |
21 | (MEM_MGT_EXTENSIONS) | iSER で有効な Fast Memory Registration mode(FRWR) をサポート。 | Supported |
22 | (BLOCK_MULTICAST_LOOPBACK) | マルチキャストメッセージを送信した QP 自身がメッセージを受信しないようにブロックする機能。 | Supported |
23 | (MEM_WINDOWS_TYPE_2A) | Type 2A Memory Window 機能 | |
24 | (MEM_WINDOWS_TYPE_2B) | Type 2B Memory Window 機能 | |
29 | IBV_DEVICE_MANAGED_FLOW_STEERING |
- マクロ名を括弧で囲っているものは uVerbs では定義されていない。
- IBV_DEVICE_XRC と IBV_DEVICE_MANAGED_FLOW_STEEARING は libibverbs 1.1.8 で定義された。
RETURN VALUE
ibv_query_device()
は成功すれば 0 を返す。
失敗した場合は、エラーの原因を示す値(errno と同じ)を返す。
NOTES
TBD
SEE ALSO
InfiniBand Verbs API Reference、ibv_open_device(3)、ibv_query_port(3)、ibv_query_pkey(3)
AUTHORS
コメント
コメントを書き込む