如何在Linux中将以太网中断设置为最高优先级

5

我用以下方式列出了所有中断:

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架构)。

无论如何,这是我的问题:

有可能提高我的NIC中断的优先级吗?


1
第一列是中断号。你真的会在键盘上打那么多字,以至于网络中断受到影响吗? - CL.
它可能是定时器和键盘之后的最高优先级。如果中断号表示优先级,我的NIC有19个。这意味着19个中断可能会延迟NIC的中断。 - Taha Altuntaş
Stack Overflow是一个关于编程和开发问题的网站。这个问题似乎不属于编程或开发范畴。请参阅帮助中心中的我可以在这里问什么样的问题。也许超级用户Unix&Linux Stack Exchange更适合提问。如果您认为它在其他地方是相关的,请请求迁移 - jww
1个回答

8

普通内核不会优先处理中断。这是内核开发早期的设计决策。有两种方法可以解决这个问题。

首先,您可以编写一个内核模块来编程处理器的中断控制器,以便将NIC中断的优先级设置为最高。这将在硬件级别上改变NIC中断的优先级,从而绕过内核。

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接