- paper: Design Guidelines for High Performance RDMA Systems
- 选什么操作(SEND/RECV vs WRITE/READ)
- 怎么发请求(一次发多大、一次发多少)
- 怎么和 PCIe/NIC 互动(MMIO vs DMA、inline vs 非inline、doorbell、CPU 亲和等)
考虑问题
- PCIe 与主机侧交互(MMIO vs DMA、WQE 如何交给 NIC)
- 操作类型选择:一维(单边:WRITE/READ) vs 两边(SEND/RECV)
- 数据大小和传输方式:inline data vs 非 inline(DMA)
- NIC 架构与资源:队列(QP/CQ)、并发和调度
- CPU 使用模式:轮询 vs 中断、线程/核心亲和等
要点
- 减少 MMIO,使用 DMA:减少 doorbell 以及控制寄存器写 (这些占用 PCIe 带宽以及周期,数据量小)。构造大的请求,doorbell batching
- 单边操作处理不了复杂的语义,可能会增加额外的状态维护开销。
- 对很小的 payload(如几十字节内的控制信息、小 key、小 value),用 inline data 能省一次 DMA,减少延迟和总线占用。但 inline data 会增加 WQE 大小,从而增加从主机到 NIC 的 MMIO 的量。
- 在发送路径上构造合适的批次大小和 WQE 大小 (太小导致header 开销大,太大导致高延迟)——(小块数据合并,大块数据拆分)
- 高性能场景一般用轮询(polling),避免中断抖动。同时设计好回退策略。处理 RDMA 一般需要绑核。
posted @
2026-01-07 12:03
light7an
阅读(
2)
评论()
收藏
举报