主要观点:现代网卡实现中断请求(IRQ)合并,以延迟接收/发送中断来批量处理帧,此方式在系统吞吐量和延迟间权衡;普遍认为包率越高越需批量处理,由此产生自适应 IRQ 合并想法,但它并非万能,因有预设值范围且持续计算更新速率需额外 CPU 处理;实际上网卡有 RX 和 TX 两组 IRQ 合并设置,RX 合并影响延迟更明显,TX 合并影响较小;通过简单的bpftrace
命令可检查 NAPI 轮询时的 RX 数据包合并情况;理想情况下希望 TX 处理搭在 RX 中断上,TX 合并参数可根据 TCP 小队列等设置调整,如近期内核 TSQ 为 1MB,对 50GB 网卡延迟 350us 以内应可;设置 150us/128 帧的合并参数后,bpftrace
命令结果显示@[0]
出现次数减少,系统吞吐量有一定提升,但要注意有厂商会忽略 TX 合并设置。
关键信息:IRQ 合并原理及影响、自适应 IRQ 合并优缺点、RX 和 TX 合并设置差异、bpftrace
命令用途及结果、TX 合并参数设置依据及效果、厂商可能忽略 TX 合并设置。
重要细节:网卡通过ethtool -c/-C
实现 IRQ 合并;自适应 IRQ 合并有预设值范围和额外 CPU 开销;通过bpftrace
命令可观察 RX 数据包合并情况;TX 合并参数需考虑 TCP 小队列等因素;设置不同合并参数后bpftrace
结果对比等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。