英伟达光模块速率提升研究

这两天在折腾两台算力舱之间的四条 25G 光口。四条线都通,测速却只有 12~14Gbps;另一组同样的机器能跑到 17~18Gbps,差得有点多。

对比后发现,驱动版本和物理链路速度都一样,网卡实际跑的参数却不一样。最明显的是 MTU,四条光口里有三条实际只有 1466。

这次主要调了四个地方:

  1. 四条光口的实际 MTU 统一到 8966。
  2. IOMMU 从 DMA 改成 DMA-FQ。
  3. 中断合并:接收从 512 微秒 / 64 帧调到 6 微秒 / 1 帧,发送从 256 微秒 / 16 帧调到 32 微秒 / 1 帧。
  4. 队列规则:从根队列 mq 改成 fq_codel,quantum 设为 8966。

重启后确认参数还在,接着逐口做双向测试,单位是 Gbps:

光口 调整前 A→B 调整后 A→B 调整前 B→A 调整后 B→A
0 12.31 17.47 12.17 17.45
1 14.05 17.95 13.92 17.86
2 12.13 17.55 12.18 17.51
3 12.27 17.56 12.20 17.51

搞定!