5

I listed all interrupts with this:

cat /proc/interruts

it gives this:

        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.)

Does the first column in this table give priority level of interrupts? I just want to learn priority levels, because I want to increase my NIC's interrupt priority level for better network performance. I think, first two interrupts cannot be changed (I guess due to intel x86 architecture).

Anyway, here is my question:

Is it possible to increase priority level of my NIC's interrupts?

4

1 回答 1

8

vanilla 内核不优先考虑中断。这是内核开发中的早期设计决策。有两种方法可以解决这个问题。

首先,您可以编写一个内核模块来为您的处理器编程中断控制器,从而为 NIC 中断提供最高优先级。这将在硬件级别更改内核下的 NIC 中断优先级。

其次,您可以使用PREEMPT_RT补丁构建内核,并为处理 NIC 中断的内核线程赋予最高优先级。

这两种方法都会增加处理网络中断的优先级。但是,这些都不可能为您提供更好的网络性能(无论这意味着什么),因为 IP 的大部分开销,无论是 TCP 还是 UDP,都在 IP 堆栈中,而不是在处理 NIC 中断中。事实上,使用 PREEMPT_RT 补丁甚至可能导致网络性能下降。

于 2013-12-06T13:36:24.340 回答