В этой статье есть несколько проблем. Помогите улучшить ее или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти сообщения )
|
Новый API (также называемый NAPI ) — это интерфейс для использования методов смягчения прерываний для сетевых устройств в ядре Linux . Такой подход призван сократить накладные расходы на прием пакетов. Идея заключается в том, чтобы отложить обработку входящих сообщений до тех пор, пока их не накопится достаточное количество, чтобы стоило обрабатывать их все сразу.
Простой метод реализации сетевого драйвера — прерывание ядра путем выдачи запроса на прерывание (IRQ) для каждого входящего пакета. Однако обслуживание IRQ требует больших затрат ресурсов процессора и времени. Поэтому простая реализация может быть очень неэффективной в высокоскоростных сетях, постоянно прерывая ядро тысячами пакетов в секунду. В результате может пострадать общая производительность системы, а также пропускная способность сети.
Опрос является альтернативой обработке на основе прерываний. Ядро может периодически проверять поступление входящих сетевых пакетов без прерываний, что устраняет накладные расходы на обработку прерываний. Однако важно установить оптимальную частоту опроса. Слишком частый опрос тратит ресурсы ЦП, многократно проверяя входящие пакеты, которые еще не поступили. С другой стороны, слишком редкий опрос вносит задержку, снижая реактивность системы на входящие пакеты, и может привести к потере пакетов, если буфер входящих пакетов заполнится до обработки.
В качестве компромисса ядро Linux по умолчанию использует режим прерываний и переключается в режим опроса только тогда, когда поток входящих пакетов превышает определенный порог, известный как «вес» сетевого интерфейса.
Драйвер, использующий интерфейс NAPI, будет работать следующим образом:
NAPI был более чем трехлетним усилием Алексея Кузнецова, Джамаля Хади Салима и Роберта Олссона. Первоначальные усилия по включению NAPI были встречены сопротивлением некоторых членов сообщества, однако Дэвид Миллер упорно трудился, чтобы обеспечить включение NAPI.
Перед включением в сеть университета Уппсалы было проведено множество реальных испытаний . Фактически, www.slu.se была первой промышленной ОС на базе NAPI и до сих пор работает на маршрутизаторах Bifrost/Linux на базе NAPI. Генератор трафика pktgen также появился примерно в это же время. Pktgen широко использовался для тестирования сценариев NAPI, не вызванных реальным трафиком.