3

rdma_disconnect() を呼び出すとき、rdma_disconnect() が戻る前にポストされたすべての recv 作業要求の完了キュー イベントを取得しますか? それとも rdma_disconnect() が戻った後にそれらが来ると期待すべきですか?

4

1 に答える 1

2

受信は、rdma_disconnect() が戻った後、(おそらく) 非同期的に (「フラッシュ エラー」ステータスで) 完了します。rdma_disconnect() のソースからわかるように、これが行うことは、QP をエラー状態に遷移させ、切断要求を反対側に送信することだけです。

QP をエラー状態に移行すると、QP にポストされたすべての保留中の作業要求がエラー状態で完了することが保証されますが、QP の変更操作は、キューが排出されるのを待たずにすぐに戻ります。同様に、rdma_disconnect() は、保留中のすべての作業要求が完了するのを待ちません。実際、RDMA CM にはキューに入れられている作業要求の数を知る方法がないため、どのようにできるかを理解するのは難しいでしょう。関連する CQ を単独で覗いて、それらがすべて完了するタイミングを確認します。

IB 仕様のボリューム 1 の第 10 章では、エラー状態への移行時に処理中のリクエストに関するコーナー ケースについて知りたい場合などに、作業リクエストの処理について詳しく説明しています。

于 2011-05-21T05:12:06.740 に答える