33.2.3. NAPI 轮询
新的 API (NAPI)是处理框架的设备驱动程序数据包的扩展,以提高传入网络数据包的效率。
硬中断非常昂贵,因为它们通常会导致上下文在内核空间和用户空间之间来回切换,并且不能中断自己。即使中断合并,中断处理器也会完全独占 CPU 核。使用 NAPI 时,驱动程序可以对每个接收的数据包使用轮询模式,而不是内核发起的硬中断。
在正常操作下,内核会发出一个初始硬中断,后跟软中断请求(SoftIRQ)处理程序,该处理程序使用 NAPI 例程轮询网卡。为防止 SoftIRQ 独占 CPU 核,轮询例程有一个预算来确定 SoftIRQ 可以使用的 CPU 时间。完成 SoftIRQ 轮询例程后,内核会退出例程,并安排它稍后再次运行,以重复从网卡接收数据包的过程。