1

Mellanox インフィニバンド HCA で接続された 2 台のホスト マシンがあります。あるマシン (クライアント) から別のマシン (サーバー) で RDMA 書き込みおよび RDMA 読み取り操作を実行する単純な RDMA アプリケーションを実行しています。各マシンの HCA カードに関連する割り込みを確認するために、次のコマンドを実行しました。

  less proc/interrupts

  67:   475880  50253       0       0   PCI-MSI-edge    mlx4-async@pci:0000:01:00.0
  68:   399002      0       73      0   PCI-MSI-edge    mlx4_0-0
  69:       0   3264        23      0   PCI-MSI-edge    mlx4_0-1
  70:       0       0       0       0   PCI-MSI-edge    mlx4_0-2
  71:       0       0       0       0   PCI-MSI-edge    mlx4_0-3

__disable_irq()サーバー マシンで、これら 4 つの割り込みで関数を使用すると、クライアントによって実行されるすべての RDMA 読み取り/書き込み操作が失敗し、「トランスポート リトライ カウンターが超過しました」というエラー メッセージが表示されることを実験しました。

私の質問は、RDMA 読み取り/書き込み操作がリモート マシンで irq を生成できる理由と時期です。リモート CPU が関与しなければ、いかなる種類の IRQ も実行しないと思いました。

では、なぜこれらの割り込みを無効にすると、これらの操作が失敗するのでしょうか?

4

1 に答える 1

1

すべてのトランザクションが RDMA トランザクションであるとは限りません。

さらに、別のマシンのメモリに書き込みを行っているときは、書き込みが終了したことを通知し (自分のメモリをいつ再利用できるかを知るため)、別のマシンに新しいデータが表示されたことを通知するために割り込みが必要です。メモリー。

于 2015-09-23T10:10:43.860 に答える