1. RDMA Send/Receive(双端)与 RDMA Write/Read(单端)verb 的工程价值?
RDMA 的 Send/Receive(双端)与 Write/Read(单端)两类 verb 各自解决了什么问题,在工程上有何价值?
- 双端(two-sided)与单端(one-sided)操作语义的本质区别
- 对端 CPU 参与程度与同步语义
- 适用场景与延迟特征
Send/Receive 是双端操作,发送端不能直接访问接收端内存,必须通过 descriptors 交换数据,接收端需要预先投递 Receive WR 描述接收缓冲区,因此需要双方 CPU 参与控制消息的传递,具有明确的同步语义。Write/Read 是单端操作,本地端直接读写对端预先注册的内存区域,无需对端 CPU 参与数据搬运,对端只负责内存注册和可访问性授权,因此被称为对端 CPU 免打扰(peer CPU offload)的操作。工程上,Send/Recv 适合需要显式同步、流程控制或消息投递语义的场景(如 RPC、控制平面),而 Write/Read 适合大规模数据搬运、后台拷贝、分布式事务日志等对端 CPU 繁忙、希望省去对端中断开销的场景。
单端操作的价值在于数据路径完全绕过对端 CPU,可降低对端延迟并释放其计算资源;双端操作则以消息语义提供了更自然的同步与流控。选择取决于数据是否需要对端感知。