2013-12-06 4 views
3

Я перечислил все прерывания с этим:Как дать наивысший приоритет прерывания локальных сетей в Linux

cat /proc/interruts 

это дает это:

 CPU0  CPU1   CPU2  CPU3 
    0: 126   0   0   0  IO-APIC-edge  timer 
    1: 941   0   0   0  IO-APIC-edge  keyboard 
    ... (etc.) 
    19: 941   0   0   0  IO-APIC-fasteoi  eth0 
    ... (etc.) 

ли первый столбец в этой таблице дают уровень приоритета прерываний ? Я просто хочу узнать уровни приоритета, потому что я хочу увеличить уровень приоритета прерывания NIC для повышения производительности сети. Я думаю, что первые два прерывания не могут быть изменены (думаю, из-за архитектуры intel x86).

Во всяком случае, вот мой вопрос:

Можно ли повысить уровень приоритета прерывания моего НСА?

+0

Первый столбец - номер прерывания. Вы действительно набираете так много на вашей клавиатуре, что затронуты сетевые прерывания? –

+0

Это может быть уровень наивысшего приоритета после таймера и клавиатуры. Если номер прерывания обозначает уровень приоритета, мой NIC имеет 19. Это означает, что 19 прерываний могут отсрочить прерывание NIC. –

+0

Stack Overflow - это сайт для вопросов программирования и разработки. Этот вопрос кажется вне темы, потому что речь идет не о программировании или разработке. См. [Какие темы можно задать здесь] (http://stackoverflow.com/help/on-topic) в Справочном центре. Возможно, лучше сказать [Суперпользователь] (http://superuser.com/) или [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/). Если вы чувствуете, что его по теме в другом месте, тогда [попросите переместить] (http://meta.stackoverflow.com/q/254851) – jww

ответ

5

Ванильное ядро ​​не приостанавливает прерывания. Это было раннее дизайнерское решение в разработке ядра. Есть два способа, которыми вы можете обойти это.

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

Во-вторых, вы можете построить ядро ​​с патчем PREEMPT_RT и предоставить поток ядра, который обрабатывает NIC, прерывает самый высокий приоритет.

Оба этих подхода увеличат приоритет обработки сетевых прерываний. Тем не менее, ни одна из них, скорее всего, не даст вам более высокую производительность сети (что бы это ни значило), потому что большая часть накладных расходов на IP, либо TCP UDP находится в стеке IP, а не в обработке прерываний NIC. Фактически, использование патча PREEMPT_RT может привести к ухудшению производительности сети.