【问题标题】:How to give highest priority to ethernet interrupt in linux如何在linux中给予以太网中断最高优先级
【发布时间】:2013-12-06 09:42:23
【问题描述】:

我列出了所有的中断:

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

此表中的第一列是否给出了中断的优先级?我只想学习优先级,因为我想提高我的网卡的中断优先级以获得更好的网络性能。我认为,前两个中断无法更改(我猜是由于 intel x86 架构)。

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

是否可以提高网卡中断的优先级?

【问题讨论】:

  • 第一列是中断号。你真的在键盘上输入太多以至于影响网络中断吗?
  • 它可能是定时器和键盘之后的最高优先级。如果中断号表示优先级,我的网卡有19个。也就是说19个中断可以延迟网卡的中断。
  • Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super UserUnix & Linux Stack Exchange 会是一个更好的提问地方。如果您在其他地方感觉到它的主题,那么ask for a migration

标签: linux linux-kernel interrupt-handling nic


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2017-11-15
    • 2012-02-11
    • 2022-07-12
    • 1970-01-01
    • 2018-09-12
    • 1970-01-01
    相关资源
    最近更新 更多