jVerbs トレース・オプション (Linux のみ)

ファイルへのトレース出力の送信を含め、標準のトレース・オプションを使用して、jVerbs ランタイム呼び出しをネイティブ・レベルまでトレースできます。

注: サービス・リフレッシュ 8 フィックスパック 30 の変更点の始まり以前非推奨であった RDMA 実装は、 IBM® SDK, Java™ Technology Edition, Version 8 から削除されました。サービスリフレッシュ8 フィックスパック30の変更終了について

ネイティブの jVerbs インターフェース実装環境が提供されます。 アプリケーションからの各 Java 呼び出しは、Java Native Interface (JNI) を使用してリモート直接メモリー・アクセス (RDMA) 操作を行うために、 rdmacm または ibverbs ライブラリーへのネイティブ呼び出しを行います。 Java 呼び出しは、内部のネイティブ・ディスパッチャー・クラスによってネイティブ層にルーティングされます。

Java メソッド呼び出しおよびネイティブ・メソッド呼び出しをトレースできます。

Java メソッド呼び出しのトレース

jVerbs インターフェースには、以下の Java パッケージが含まれています。
com.ibm.net.rdma.jverbs.cm
rdmacmライブラリーにアクセス接続管理クラス。
com.ibm.net.rdma.jverbs.verbs
ibverbsライブラリーにアクセスする動詞クラス。
com.ibm.net.rdma.jverbs.endpoints
cm パッケージと verbs パッケージからクラスを使用するエンドポイント抽象化クラス。
Java コマンド行で標準の -Xtrace オプションを使用して、これらのパッケージ内のクラスをトレースできます。 例えば、すべての jVerbs Java メソッドをトレースするには、以下のコマンド行オプションを使用します。
-Xtrace:methods={com.ibm.net.rdma.jverbs.*},print=mt
必要とするレベルでクラスをトレースするには、より具体的なパターンを使用します。 例えば、すべての接続管理ネイティブ・クラスからのメソッドをトレースするには、以下のコマンド行オプションを使用します。
-Xtrace:methods={com.ibm.net.rdma.jverbs.cm.Native*},print=mt

ネイティブ・メソッド呼び出しのトレース

JVERBS トレース・ポイント・コンポーネントを使用して、ランタイム環境内のネイティブ・メソッド呼び出しをトレースします。 ネイティブ・メソッドの入り口、パラメーター、および通常の出口と、エラー番号付きの異常出口をトレースできます。 例:
-Xtrace:print=JVERBS
このコマンド行オプションは、次のテキストのような出力を生成します。
06:22:48.672 0x21b21100          JVERBS.4        > NativeRdmaCM_createEventChannel()
06:22:48.674 0x21b21100          JVERBS.5        < NativeRdmaCM_createEventChannel(channel->fd=41,
 channel=00007F9A643427A0) event channel created
06:22:48.675 0x21b21100          JVERBS.7        > NativeRdmaCM_createId(channel->fd=41, rdma_ps=262)
06:22:48.675 0x21b21100          JVERBS.8        - NativeRdmaCM_createId(channel=00007F9A643427A0, rdma_ps=262) Calling 
rdma_create_id
06:22:48.675 0x21b21100          JVERBS.9        < NativeRdmaCM_createId(listen_id=00007F9A6433CB20) listen id created
06:22:48.685 0x21b21100          JVERBS.18       > NativeRdmaCM_bindAddr(id=00007F9A6433CB20, address=00007F9A643415E0)
06:22:48.685 0x21b21100          JVERBS.19       - NativeRdmaCM_bindAddr(cm_listen_id=00007F9A6433CB20) Calling 
rdma_bind_addr
06:22:48.685 0x21b21100          JVERBS.20       < NativeRdmaCM_bindAddr() Passed
06:22:48.685 0x21b21100          JVERBS.23       > NativeRdmaCM_listen(id=1681115936, backlog=10)
06:22:48.685 0x21b21100          JVERBS.24       - NativeRdmaCM_listen(cm_listen_id=00007F9A6433CB20) Calling rdma_listen
06:22:48.685 0x21b21100          JVERBS.25       < NativeRdmaCM_listen() Passed
06:22:48.685 0x21b21100          JVERBS.38       > NativeRdmaCM_getCmEvent(channel=41, event=00007F9A643414D0, 
listen_id=00007F9A643414D4, client_id=00007F9A643414DC)
06:22:48.685 0x21b21100          JVERBS.39       - NativeRdmaCM_getCmEvent(cm_channel=00007F9A643427A0) Calling 
rdma_get_cm_event
06:23:32.329 0x21b21100          JVERBS.40       < NativeRdmaCM_getCmEvent(_event=4, _client_id=00007F9A64342930, 
_listen_id=00007F9A6433CB20, cm_event->id->verbs->cmd_fd=39, cm_event->id->verbs=00007F9A6433D090, 
cm_event=00007F9A643427C0) Passed
06:23:32.330 0x21b21100          JVERBS.92       > NativeRdmaCM_getContext(id=00007F9A6433CB20)
06:23:32.330 0x21b21100          JVERBS.93       - NativeRdmaCM_getContext(cm_listen_id=00007F9A6433CB20)
06:23:32.330 0x21b21100          JVERBS.94       < NativeRdmaCM_getContext(context=00007F9A6433D090, context->cmd_fd=39) 
Passed
以下の例に示すように、Java メソッド・トレースとネイティブ・メソッド・トレースを組み合わせることができます。
-Xtrace:methods={com.ibm.net.rdma.jverbs.*},print=mt,print=JVERBS
トレース、トレース・コンポーネント、およびトレース・ポイントについて詳しくは、次のトピックを参照してください。