Jump to content

Новый API

(Перенаправлено с НАПИ )

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

Мотивация

[ редактировать ]

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

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

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

Совместимые драйверы

[ редактировать ]

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

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

Преимущества

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

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

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

Дальнейшее чтение

[ редактировать ]
  • Джамал Хади Салим; Роберт Олссон; Алексей Кузнецов (10 ноября 2001 г.). За пределами программной сети (PDF) . 5-я ежегодная выставка и конференция Linux (ALS '01) . стр. 165–172 . Проверено 6 марта 2011 г. Классическая бумага NAPI.
  • Джонатан Корбет (28 апреля 2003 г.). «Портирование драйверов: Сетевые драйверы» . LWN.net . Проверено 6 марта 2011 г.
  • Джонатан Корбет (18 декабря 2006 г.). «Переработка НАПИ» . LWN.net . Проверено 6 марта 2011 г.
  • Джонатан Корбет; Алессандро Рубини; Грег Кроа-Хартман (февраль 2005 г.). «Глава 17: Сетевые драйверы» (PDF) . Драйверы устройств Linux (3-е изд.). О'Рейли Медиа. ISBN  978-0-596-00590-0 . Проверено 6 марта 2011 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 4b9cf44a80d093305be1c4610f00380f__1691738400
URL1:https://arc.ask3.ru/arc/aa/4b/0f/4b9cf44a80d093305be1c4610f00380f.html
Заголовок, (Title) документа по адресу, URL1:
New API - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)