2010-06-26 3 views
2

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

+2

Пожалуйста, перефразируйте свой вопрос - неясно. –

+0

... мне на самом деле так непонятно, что я даже не уверен, что он принадлежит SO (это вопрос программирования?). – Lucero

ответ

2
  • опрос
    мы там еще? Мы уже на месте? Мы уже на месте? Мы уже на месте? Мы уже на месте? ...

  • Прерывания
    Ping me when it done.

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

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

1

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

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

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

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

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

Смежные вопросы