3

JSOR と jVerbs の両方の基本的な理解があります。

どちらも JNI の制限を処理し、高速パスを使用して待ち時間を短縮します。どちらも、ユーザー動詞 RDMA インターフェイスを使用して、コンテキスト スイッチを回避し、高速パス アクセスを提供します。どちらにも、ゼロコピー転送のオプションがあります。

違いは、JSOR がまだ Java Socket インターフェースを使用していることです。jVerbs は新しいインターフェースを提供します。jVerbs には、Stateful Verbs Call と呼ばれるものもあり、RDMA リクエストのシリアル化の繰り返しを回避します。これにより、レイテンシが短縮されると言われています。jVerbs はよりネイティブなインターフェースを提供し、アプリケーションはこれらを直接使用できます。jVerbs SoCC 2013 の論文を読んで、jVerbs の上に jverbsRPC を構築し、Zookeeper と memcache 操作のレイテンシを大幅に短縮することを示しました。

どちらのドキュメントも、TCP/IP、SDP、および IPoIB に基づく通常の Java ソケットよりもパフォーマンスが優れていることを示しています。

JSOR と jVerbs のパフォーマンス比較はありません。jVerbs は JSOR よりもパフォーマンスが良いと思います。しかし、JSOR を使用すると、同じ Java ソケット インターフェイスを引き続き使用するため、既存のコードを変更する必要はありません。私の質問は、JSOR と比べて jVerbs を使用した場合のパフォーマンスの向上は何かということです。誰かがこの2つを扱ったことを知っているか経験がありますか? 比較データがあれば大変助かります。何も見つかりませんでした。

4

2 に答える 2

5

以下は、IBM の jVerbs の後継として新たにオープン ソース化された DiSNI と、DiSNI使用した低レイテンシ RPC ライブラリである DaRPC を使用した数値です。

  • 64 バイトの DiSNI RDMA 読み取りレイテンシは 2 マイクロ秒未満
  • 64 バイト (要求と応答) の DaRPC RDMA 送信/受信レイテンシーは約 5 マイクロ秒です。
  • 一方的な操作では、Java/DiSNI と C ネイティブ RDMA の違いは無視できます。

これらのベンチマークは、Mellanox ConnectX-3 ネットワーク インターフェイスを使用して接続された 2 つのホストで実行されました。

ベンチマークを実行するコマンドは次のとおりです。

(1) ベンチマークを読む

サーバ:

java -cp disni-1.0-jar-with-dependencies.jar:disni-1.0-tests.jar com.ibm.disni.examples.benchmarks.AppLauncher -t java-rdma-server -a <address> -o read -s 64 -k 100000 -p

クライアント:

java -cp disni-1.0-jar-with-dependencies.jar:disni-1.0-tests.jar com.ibm.disni.examples.benchmarks.AppLauncher -t java-rdma-client -a <address> -o read -s 64 -k 100000 -p

(2) 送受信ベンチマーク

サーバ:

java -cp darpc-1.0-jar-with-dependencies.jar:darpc-1.0-tests.jar com.ibm.darpc.examples.server.DaRPCServer -a <address> -d -l 64 -r 64 

クライアント:

java -cp darpc-1.0-jar-with-dependencies.jar:darpc-1.0-tests.jar com.ibm.darpc.examples.client.DaRPCClient -a <address> -k 1000000 -l 64 -r 64 -b 1

ここに画像の説明を入力

于 2016-08-08T16:20:50.357 に答える