换了万兆网卡吞吐却不见涨,监控里一个 CPU 核心满载、其余空闲,这种局面多半是中断和多队列没配好。本文给出一条从定位到调优的路径。

先确认是不是单核瓶颈

压流量时运行 mpstat -P ALL 1,若某一个核的 %soft 接近打满而其他核几乎为 0,说明报文集中由单队列处理。再查 /proc/interrupts,网卡中断行按 ixgbe、i40e、ice 加队列名命名,观察计数是否集中在少数核上。确认瓶颈后再动手改配置,避免无差别调参。

队列与中断平衡两手抓

  • ethtool -l 查队列上限,ethtool -L 把 combined 调到与可用核心数匹配
  • 通用场景开 irqbalance 自动分散;NUMA 敏感业务建议手工把中断亲和绑到网卡所在节点的本地核
  • ethtool -X 查看 RSS 哈希分布,各队列计数差距过大说明流量本身集中少数流

再往细调聚合与拓扑

ethtool -c 与 -C 调整中断聚合,适当加大可提吞吐、代价是时延,时延敏感业务不要为跑分牺牲响应。网卡应插在 CPU 同一 NUMA 节点的 PCIe 插槽,跨节点访问内存会吃掉多队列带来的收益,PCI-EX16 100G双光口光纤网卡(英特尔Intel E810芯片) 这类高速卡尤其明显,华东某大数据中心楼宇间 100G 光纤互联升级 实施时也按此原则固定插槽。

中断理顺之后再评估链路容量是否需要升级。参数随发行版差异较大,可拨 EB-LINK 技术支持 0755-83179002,按网卡型号与系统环境核对调优清单。