【问题标题】:In what CPUs and OS can we distribute hardware interrupts across CPU-cores?我们可以在哪些 CPU 和操作系统中跨 CPU 内核分配硬件中断?
【发布时间】:2023-04-07 15:46:01
【问题描述】:

在哪些 CPU 和操作系统(操作系统)中,我们可以在 CPU 内核之间分配硬件中断,以便在不同内核上顺序产生中断,例如来自网络适配器的中断?

正如上面所说,我们不能在 Linux(x86_64) 中做到这一点: Is it possible to use the hardware de-multiplexing for highload network servers?

但是,我们可以在 Cortex-A5 MPCore 中做到这一点: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0434b/CCHDBEBE.html

【问题讨论】:

    标签: windows unix x86 arm aix


    【解决方案1】:

    看看 irqbalance linux 实用程序:

    https://github.com/Irqbalance/irqbalance

    我最近移植到基于 ARM Cortex A9 的平台。

    硬件中断被路由到不同的内核。

    【讨论】:

    • 谢谢。 irqbalance 是否比使用 /proc/irq/<N>/smp_affinity 有一些优势?以及如何解决长时间同步缓存的问题(通过缓存一致性),如以下链接所述,同一包的不同部分来自不同内核的L1/L2缓存?stackoverflow.com/a/18528364/1558037
    • 可以详细回答一下:irqbalance 有核心、包和缓存三种类型的平衡。该实用程序最终会写入 /proc/irq//smp_affinity 但基于您设置的平衡。该实用程序应该适用于基于 x86 的系统,但需要针对 ARM 进行一些调整。
    • 好的。我不太明白它如何通过缓存进行平衡,因为/proc/irq/<N>/smp_affinity 只能分发核心。这是一个非常有趣的实用程序。是否有更详细的 wiki 或手册形式的描述?
    • @Alex:不幸的是,关于该实用程序的细节并不多。我也没有深入挖掘代码的细节,我只是盲目地为 ARM 交叉编译它。是的,你只写给 smp_affinity 是对的是每个核心,但是 irq 应该仿射到的核心数,该决定是基于缓存完成的......
    • @Alex :不幸的是,我看不到性能有太大的提高,但是正如我提到的那样,该实用程序是为 x86 量身定制的,诸如查找缓存级别之类的位置都是为 x86 硬编码的,所以我只为 core 选择了平衡。我认为如果我可以将 ARM 的代码移植到缓存和包中,我认为性能应该会有一些改进。您打算在 ARM 或 x86 上使用??
    猜你喜欢
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 2022-10-05
    相关资源
    最近更新 更多