JSOR と Java TCP 通信の比較 (Linux のみ)
TCP プロトコルはオペレーティング・システム・カーネルに依存しますが、RDMA プロトコルはオペレーティング・システム・カーネルをバイパスして、異なる RDMA 対応ホスト・システム上の Java™ アプリケーション間の直接通信を可能にします。 このため、RDMA ネットワーク操作では、必要なプロセッサー・リソースが少なくて済み、ネットワーク・スループットが向上します。
注意:
以前に非推奨とされた RDMA 実装は、IBM® SDK、Java Technology Edition、バージョン 8.
から削除されました


Java TCP ソケット処理の従来のモデルでは、ホスト・オペレーティング・システム・カーネルが重要な役割を果たします。 すべての共通ネットワーク操作 (例えば以下のネットワーク操作) に対して、オペレーティング・システム呼び出しが必要です。
- ソケットの作成
- ポートへのバインド
- よく知られたアドレスの listen
- リモート・ホストへの接続
- 着信接続要求の受け入れ
- 接続されたエンドポイント間でのデータ転送
- Java アプリケーション・バッファーから Java ソケット・バッファーへ
- Java ソケット・バッファーからオペレーティング・システム・ソケット・バッファーへ
- オペレーティング・システムのソケット・バッファーからネットワーク・インターフェース・ドライバーのバッファー
TCP プロトコルとは異なり、RDMA プロトコルは、オペレーティング・システム・カーネルから独立した高速スイッチ・ファブリック (InfiniBand など) 上に定義されます。 代わりに、ネットワーク処理の負荷が専用 RDMA ネットワーク・インターフェース・アダプターに移行されます。 RDMA プロトコルにより、1 つのホスト上の Java アプリケーションは、別のホスト上の Java アプリケーションのメモリーに直接アクセスできます。 この機能により、Java アプリケーション間でデータを直接転送できます。
次の図は、TCP/IP 通信および RDMA 通信のために Java クライアントとサーバー・アプリケーションの間で必要な接続を示しています。

TCP 処理と比べて、RDMA では、使用されるプロセッサー・リソースが少なくなります。また、ハイパフォーマンス・スイッチ・ファブリックを利用して、RDMA 対応システム間のデータ・スループットを最大化できます。