我有应该通过 IB 网络交换文件的补充流程。然后这些文件将被其他进程使用。
工作流程如下:
- 在 /dev/shm 中创建文件
- 适当调整文件大小
- 映射进程虚拟机中的文件
- 使用 ibv_reg_mr 注册映射区域
- 为数据传输启动 RDMA 操作
原来我的方案的瓶颈是 ib_reg_mr(我单独测量了注册 3Gb 内存需要 1.78 秒)。似乎它触发了内存区域到进程地址空间的映射。不幸的是,不需要这个操作,因为接收进程不使用这块内存。该内存应该稍后被其他进程映射和使用。
因此,我认为避免更改接收过程的页表是明智之举,但我根本无法找到它是否可能。
您能否建议我,如果有一种方法可以在内存区域上启动数据传输而不将其映射到进程的地址空间?