1

我有两台通过 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。

那么,为什么禁用这些中断会导致这些操作失败呢?

4

1 回答 1

1

并非所有事务都是 RDMA 事务。

此外,当您写入另一台机器的内存时,您需要中断来通知写入何时完成(以便您知道何时可以重用自己的内存),并通知另一台机器新数据已出现在其记忆。

于 2015-09-23T10:10:43.860 回答