Как известно, существует два подхода, позволяющих избежать некоторых накладных расходов на аппаратные прерывания в высоконагруженных сетях, когда имеется слишком много аппаратных прерываний, переключение на которые занимает слишком много времени. Это очень важно для выполнения и выбора подхода к программному стилю. NAPI против адаптивных прерываний
http://en.wikipedia.org/wiki/New_API Ядро может периодически проверять для прихода входящих сетевых пакетов без перерыва, что устраняет накладные расходы на обработку прерываний.
https://en.wikipedia.org/wiki/Interrupt_coalescing метод, при котором события, которые обычно вызывают аппаратные прерывания сдерживаются, либо до определенной суммы выполнения работы или срабатывает таймер тайм-аута.
Оба подхода не требуют значительных затрат на прерывание - это преимущество перед режимом, управляемым прерываниями по умолчанию.
Но второй подход - Объединение прерываний более рационально, потому что это:
Меньшая задержка - Как только пакет прибыл, немедленно пытается обработать его, немедленно возникает прерывание или опрашивает его, если прерывание произошло недавно. Напротив, NAPI не будет обрабатывать кадр немедленно, а будет ждать определенный период времени для следующего опроса.
Меньше загрузка ЦП - Запускает опрос только в том случае, если уже пришел хотя бы один пакет. Но не делает опрос зря, даже если кадры не получил, как если бы это делал NAPI.
Каковы преимущества NAPI перед IRQ Coalesce?