众所周知,有两种方法可以避免在高负载networking中出现硬件中断的一些开销,当硬件中断太多时,切换到它们需要很多时间。 程序风格的performance和select方法是非常重要的。 NAPI与自适应中断
http://en.wikipedia.org/wiki/New_API内核可以定期检查传入networking数据包的到达而不中断 ,从而消除了中断处理的开销。
https://en.wikipedia.org/wiki/Interrupt_coalescing一种技术,其中通常会触发硬件中断的事件被阻止 , 直到一定数量的工作挂起,或超时计时器触发。
两种方法都没有明显的中断成本 – 这对于默认的中断驱动模式是有利的。
但是第二种方法 – 中断合并更合理,因为它:
延迟较小 – 一旦包到达,立即尝试立即处理中断,或在最近发生中断时轮询。 对面的NAPI将不会立即处理该帧,而是会等待下一轮的一定时间。
较less的CPU使用率 – 仅在至less有一个数据包已经到达的情况下才开始轮询。 但是,即使帧没有收到,也不是徒劳地进行民意调查,就像做了NAPI一样。
在IRQ合并之前,NAPI有哪些优势?