17.1 NAPI:中断与轮询的平衡艺术NAPI(New API)是 Linux 网络子系统中最早引入的优化机制之一。它的核心思想很简单:高流量时不要每个包都触发中断,改成轮询。为什么这么做?中断虽然响应快,但开销大——保存上下文、执行中断处理函数、恢复上下文,一套下来几百个 CPU 周期就没了。如果每秒百万个包,CPU 光处理中断就忙不过来。NAPI 的工作流程是这样的:第一个包到达时,正常触发中断中断处理函数中,关闭该网卡的中断,把设备加入轮询列表内核在软中断上下文中轮询设备,批量收包收完一批包后,重新开启中断代码层面,驱动需要实现一个poll回调:static int my_poll(struct napi_struct *napi, int budget) { struct my_priv *priv = container_of(napi, struct my_priv, napi); int work_done = 0; while (work_done budget) { struct sk_buff *skb = rx_next_packet(priv); if (!skb) break; napi_gro_receive(napi, skb); work_done++; } if (work_done