我有两台主机由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
在服务器计算机上,我已经尝试在这4个中断上使用函数__disable_irq()
导致客户端执行的所有RDMA读/写操作都失败,并显示错误消息" transport retry超过了#34;。
我的问题是为什么以及RDMA读/写操作何时可以在远程计算机上生成irq?我认为如果他们不涉及远程CPU,那么他们就不会执行任何类型的IRQ。
那么,为什么禁用这些中断会导致这些操作失败?
答案 0 :(得分:1)
并非所有交易都是RDMA交易。
此外,当您正在写入另一台计算机的内存时,您需要中断以便在写入完成时注意(以便您知道何时可以重用自己的内存),并通知其他人新数据显示在其内存中的机器。