RMDA 学习小结

  • paper: Design Guidelines for High Performance RDMA Systems
    • 选什么操作(SEND/RECV vs WRITE/READ)
    • 怎么发请求(一次发多大、一次发多少)
    • 怎么和 PCIe/NIC 互动(MMIO vs DMA、inline vs 非inline、doorbell、CPU 亲和等)

考虑问题

  1. PCIe 与主机侧交互(MMIO vs DMA、WQE 如何交给 NIC)
  2. 操作类型选择:一维(单边:WRITE/READ) vs 两边(SEND/RECV)
  3. 数据大小和传输方式:inline data vs 非 inline(DMA)
  4. NIC 架构与资源:队列(QP/CQ)、并发和调度
  5. CPU 使用模式:轮询 vs 中断、线程/核心亲和等

要点

  1. 减少 MMIO,使用 DMA:减少 doorbell 以及控制寄存器写 (这些占用 PCIe 带宽以及周期,数据量小)。构造大的请求,doorbell batching
  2. 单边操作处理不了复杂的语义,可能会增加额外的状态维护开销。
  3. 对很小的 payload(如几十字节内的控制信息、小 key、小 value),用 inline data 能省一次 DMA,减少延迟和总线占用。但 inline data 会增加 WQE 大小,从而增加从主机到 NIC 的 MMIO 的量。
  4. 在发送路径上构造合适的批次大小和 WQE 大小 (太小导致header 开销大,太大导致高延迟)——(小块数据合并,大块数据拆分)
  5. 高性能场景一般用轮询(polling),避免中断抖动。同时设计好回退策略。处理 RDMA 一般需要绑核。
posted @ 2026-01-07 12:03  light7an  阅读(2)  评论(0)    收藏  举报