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 も実行しないと思いました。
では、なぜこれらの割り込みを無効にすると、これらの操作が失敗するのでしょうか?