問題タブ [infiniband]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux-kernel - Linux で IRQ を無効にすると rdma_read と rdma_write が失敗するのはなぜですか?
Mellanox インフィニバンド HCA で接続された 2 台のホスト マシンがあります。あるマシン (クライアント) から別のマシン (サーバー) で RDMA 書き込みおよび RDMA 読み取り操作を実行する単純な RDMA アプリケーションを実行しています。各マシンの HCA カードに関連する割り込みを確認するために、次のコマンドを実行しました。
__disable_irq()
サーバー マシンで、これら 4 つの割り込みで関数を使用すると、クライアントによって実行されるすべての RDMA 読み取り/書き込み操作が失敗し、「トランスポート リトライ カウンターが超過しました」というエラー メッセージが表示されることを実験しました。
私の質問は、RDMA 読み取り/書き込み操作がリモート マシンで irq を生成できる理由と時期です。リモート CPU が関与しなければ、いかなる種類の IRQ も実行しないと思いました。
では、なぜこれらの割り込みを無効にすると、これらの操作が失敗するのでしょうか?
c - リモート メモリ バッファが OS によってピン留めされていない場合、RDMA WRITE/READ はどのように動作しますか?
2 台のマシンで 2 つのインフィニバンド プロセスを実行します。1 つのプロセスが終了すると、すべてのリソース (割り当てられたファイル、バッファーなど) が解放され、プロセスがRDMA
WRITE/READ 操作用に登録したメモリも解放されます。
他のプロセスのリモートチャネルアダプタがバッファメモリが解放されたことをどのように知っているかについて、誰かが参照できますか? これはインフィニバンド スタックのどの要素をいつ制御しますか?
operating-system - Mellanox 割り込み mlx4-async@pci:0000 とは何を意味しますか?
[ConnectX VPI PCIe 2.0 5GT/s - IB QDR / 10GigE]
4コアのx86_64コンピューターで実行されているubuntu 3.13.0で、OFEDバージョン4-1.0.0のInfiniBand Mellanoxカードを使用しています。
ibstat
これが私のコンピューターでの結果です
と私のように/proc/interrupts
見える:
mlx4_0-x
各割り込みが各 CPU に関連付けられていることを読みました。私の質問は次のとおりです。最初の割り込みはどういうmlx4-async@pci:0000:01:00.0
意味ですか? opensm
デーモンがまだ実行されていないときに、この割り込みが 5 分ごとに発生することを実験します。
infiniband - Mellanox ドライバーは契約が必要ですか?
ESXi ラボ用に小さな Mellanox SAN を使用しています。私はこれまで ESXi 5.1 を実行してきたので、経験を積むために 5.5 と 6.0 を試してみることにしました。http://www.mellanox.com/page/products_dyn?product_family=36でドライバーにアクセスすると、次のように表示されました。
注: ESXi 5.X v1.8.2.4 用のドライバーを入手するには、support@mellanox.com にお問い合わせください。
そこで、サポートに問い合わせたところ、次のような回答がありました。
弊社の記録によると、お客様の有効な契約を見つけることができませんでした。
非営利目的のサポート契約なしで合法的にドライバーを入手するにはどうすればよいですか?
infiniband - RDMA WRITE: ibv_wc.byte_len が、書き込もうとしているものと一致しません
私は、Mellanox Infiniband ハードウェアで RDMA を使用している Infiniband/RDMA 初心者です。ここでソースコードを使用しました。このプログラムは、一見したところごく普通に実行されます。サーバーは、RDMA_WRITE 操作を使用してクライアント メモリに数バイトを書き込みます。しかし、後で、書き込み完了構造体 (ibv_wc) によって示される転送バイト数が、ibv_send_wr 構造体に入れたデータの量と一致しないことがわかりました。以下は、rdma_write() での ibv_send_wr 初期化のコードです。
次に、書き込み完了キューに書き込み完了エントリを取得した後、ibv_wc.byte_len を読み取ります。32537、32743、32533 の乱数が表示されます。ibv_wc.status が IBV_WC_SUCCESS と等しいため、転送は成功したと思います。私は何か間違ったことをしましたか?
java - Java Sockets on RDMA (JSOR) と Infiniband での jVerbs のパフォーマンス
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つを扱ったことを知っているか経験がありますか? 比較データがあれば大変助かります。何も見つかりませんでした。
api - タグマッチングインターフェースとは?
PSMはタグマッチングをサポートするライブラリだと聞きました。タグマッチングインターフェースとは?MPI のコンテキストでタグマッチングがパフォーマンスにとって重要なのはなぜですか?
c - Linux カーネル モジュールを InfiniBand HCA ポートにバインドして、このモジュールを介してメッセージを送受信するにはどうすればよいですか?
カーネル モジュールを InfiniBand ポートにバインドし、クエリ、送信、受信などの今後の操作のためにサブネット管理者に登録する必要があります。
ネットで調べてみましたが、残念ながら情報がほとんどありません。
現在、IPoIB の実装について言及していますが、私のカーネル モジュールとは関係のない構造や機能がたくさんあるようです。
そのため、モジュールを InfiniBand SA に登録するための最小限の最適化された手順を探しています。