Методы опроса и обработки прерываний для обработки пакетов в многоядерном процессоре - PullRequest
2 голосов
/ 26 июня 2010

Этот запрос связан с обработкой пакетов в многоядерных процессорах. Обработка пакетов может быть либо в Linux, либо в чистом канале данных. Правда ли, что если приложение обработки пакетов находится в Linux, то для высокой производительности оно должно обрабатывать пакеты на основе прерываний, но если обработка пакетов находится в чистом канале данных (без linux), то для получения более высокой производительности следует использовать опрос? Если да, то почему / как?

Ответы [ 2 ]

2 голосов
/ 26 июня 2010
  • Опрос
    Мы уже на месте? Мы уже на месте? Мы уже на месте? Мы уже на месте? Мы уже на месте? ...

  • Прерывания
    Пинг мне, когда это будет сделано.

Таким образом, прерывания позволяют ЦП выполнять другую работу, а опрос избегает накладных расходов на прерывания (важно, если вы получаете прерывания десятки тысяч раз в секунду). Различные виды высокой производительности.

Обратите внимание, что существуют гибридные подходы, то есть: опрос после прерываний в течение нескольких мс, прежде чем вернуться к прерываниям.

1 голос
/ 28 июня 2010

Если вы используете многозадачную операционную систему, тогда опрос будет сопровождаться штрафом за задержку (если пакет прибывает во время выполнения другой задачи).Следовательно, вы можете повысить пропускную способность, используя подход, основанный на прерываниях, в таких системах.Это связано с тем, что механизм прерываний может повысить приоритет пути данных над другими процессами, не блокируя их (так как опрос в задаче с более высоким приоритетом блокирует все задачи с более низким приоритетом).

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

Обратите внимание, что это не означает, что общая производительность приложения лучше или что любойконкретная реализация быстрее с опросом.Это только означает, что максимально возможная пропускная способность достигается путем опроса.Например, если вашему приложению требуется много обработки, вы можете получить более высокую производительность, используя DMA с прерываниями.Чтобы узнать, быстрее ли опрос в каком-либо конкретном случае, сильно зависит от характеристик приложения этого случая.

Я не уверен, что такое «многоядерный» аспект этого вопроса, но может иметь смысл посвятитьОпрос ЦП на ввод / вывод для получения минимальной задержки во встроенной многоядерной системе, хотя это также будет сильно зависеть от приложения.

Как отмечает ninjalj, гибридные подходы могут использоваться для оптимизации общей производительности в более сложных сценариях.Вышесказанное справедливо только для простого случая.

...