我有两台通过 Mellanox infiniband HCA 连接的主机。我正在执行一个简单的 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 读/写操作可以在远程机器上生成 irqs?我认为如果他们不涉及远程 CPU,那么他们将不会执行任何类型的 IRQ。
那么,为什么禁用这些中断会导致这些操作失败呢?