Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Новый API (также называемый NAPI ) - это интерфейс для использования методов устранения прерываний для сетевых устройств в ядре Linux . Такой подход предназначен для уменьшения накладных расходов на прием пакетов. Идея состоит в том, чтобы отложить обработку входящих сообщений до тех пор, пока их не наберется достаточное количество, чтобы иметь смысл обрабатывать их все сразу.

Мотивация [ править ]

Простой метод реализации сетевого драйвера - это прерывание ядра путем выдачи запроса прерывания (IRQ) для каждого входящего пакета. Однако обслуживание IRQ требует больших затрат ресурсов процессора и времени. Следовательно, прямая реализация может быть очень неэффективной в высокоскоростных сетях, постоянно прерывая ядро ​​с тысячами пакетов в секунду. В результате может пострадать общая производительность системы, а также пропускная способность сети.

Опрос - альтернатива обработке на основе прерываний. Ядро может периодически проверять поступление входящих сетевых пакетов без прерывания, что устраняет накладные расходы на обработку прерываний. Однако важно установить оптимальную частоту опроса. Слишком частый опрос приводит к потере ресурсов ЦП из-за многократной проверки входящих пакетов, которые еще не прибыли. С другой стороны, слишком редко опрос приводит к задержке, уменьшая реактивность системы на входящие пакеты, и может привести к потере пакетов, если буфер входящих пакетов заполняется до обработки.

В качестве компромисса ядро ​​Linux по умолчанию использует режим управления прерываниями и переключается в режим опроса только тогда, когда поток входящих пакетов превышает определенный порог, известный как «вес» сетевого интерфейса.

Совместимые драйверы [ править ]

Драйвер, использующий интерфейс NAPI, будет работать следующим образом:

  • Прерывания приема пакетов отключены.
  • Драйвер предоставляет ядру метод опроса. Этот метод будет извлекать все доступные входящие пакеты на сетевой карте или в кольце DMA , чтобы затем они обрабатывались ядром.
  • Когда разрешено, ядро ​​вызывает метод опроса устройства, чтобы, возможно, обработать несколько пакетов одновременно.

Преимущества [ править ]

  • Нагрузка, вызванная прерываниями , снижается, даже если ядру приходится опрашивать.
  • Менее вероятно, что пакеты будут переупорядочены, в то время как в противном случае обработка пакетов с нарушением порядка может стать узким местом. [ необходима цитата ]
  • В случае, если ядро ​​не может обработать все входящие пакеты, ядру не нужно выполнять какую-либо работу, чтобы отбросить их: они просто перезаписываются во входящем кольцевом буфере сетевой карты . Без NAPI ядро ​​должно обрабатывать каждый входящий пакет независимо от того, есть ли время для его обслуживания, что приводит к перегрузке .

История [ править ]

НАПИ - это результат более трех лет работы Алексея Кузнецова, Джамала Хади Салима и Роберта Олссона. Первоначальное усилие включить NAPI встретило сопротивление со стороны некоторых членов сообщества, однако Дэвид Миллер работал над тем , чтобы включить Näpi в.

Перед включением в сеть университетов Упсалы было проведено множество реальных испытаний . Фактически, www.slu.se была первой производственной ОС на основе NAPI и до сих пор работает на маршрутизаторах Bifrost / Linux на основе NAPI. Pktgen генератор трафика также был рожден в это время. Pktgen широко использовался для тестирования сценариев NAPI, не вызванных реальным трафиком.

Ссылки [ править ]

Дальнейшее чтение [ править ]

  • Джамал Хади Салим; Роберт Олссон; Алексей Кузнецов (10.11.2001). Помимо softnet (PDF) . 5-я ежегодная выставка и конференция Linux (ALS '01) . С. 165–172 . Проверено 6 марта 2011 . Классическая статья НАПИ.
  • Джонатан Корбет (28 апреля 2003 г.). «Перенос драйверов: Сетевые драйверы» . LWN.net . Проверено 6 марта 2011 .
  • Джонатан Корбет (18 декабря 2006 г.). «Переделка НАПИ» . LWN.net . Проверено 6 марта 2011 .
  • Джонатан Корбет; Алессандро Рубини; Грег Кроа-Хартман (февраль 2005 г.). «Глава 17: Сетевые драйверы» (PDF) . Драйверы устройств Linux (3-е изд.). O'Reilly Media. ISBN 978-0-596-00590-0. Проверено 6 марта 2011 .

Внешние ссылки [ править ]

  • Ранняя работа NAPI [ мертвая ссылка ]
  • Описание NAPI в Linux Foundation
  • Обзор сети , 19 ноября 2009 г., The Linux Foundation, Рами Розен (архивировано 30 октября 2011 г.)