gpt4 book ai didi

linux - SMP 关联路由不适用于 ARM 上的 GICv2

转载 作者:行者123 更新时间:2023-12-04 21:52:38 24 4
gpt4 key购买 nike

我的 Raspberry Pi 上有 4 个 CPU 内核和 1 个以太网卡。
我需要将来自 NIC 的中断路由到所有 4 个 CPU 内核。
我设置了/proc/irq/24/smp_affinity0xF (1111),但这无济于事。
/proc/interrupts 的第六栏我没看到 IO-APIC (绝对支持*亲和路由)但是 GICv2 反而。仍然找不到有关 GICv2 和 smp_affinity 的任何有用信息。

GICv2 是否支持 SMP 亲和路由?

*更新:
来自 that post :

The only reason to look at this value is that SMP affinity will only work for IO-APIC enabled device drivers.

最佳答案

TL;DR -/proc/irq/24/smp_affinity 的存在表明您的 Linux SMP 系统支持关联。正文 IO-APIC 是中断 Controller 的类型(典型的 PC),它是 不是 表明系统可以处理亲缘关系。在 ARM 系统上,GIC 通常是中断 Controller ,尽管一些中断可以路由到“子 Controller ”。

至少主线是supporting some affinities根据 Kconfig .但是,我不确定您要做什么。中断只能在一个 CPU 上运行,因为只有一个 CPU 可以从 NIC 中取出数据。如果一个特定的 CPU 正在运行网络代码,而其余的 CPU 用于其他目的,则关联是有意义的。

该内核上的数据可能不在缓存中,因为 NIC 缓冲区可能是 DMA 且不可缓存。所以,我不确定你会实现什么,或者你希望中断如何在所有四个 CPU 上运行?如果您有四个 NIC 接口(interface),则可以将每个接口(interface)与一个 CPU Hook 。这可能对功耗问题有好处。

具体来说,对于四个 CPU 的情况, 的关联掩码0xf 将禁用任何关联,这是默认情况。您可以cat /proc/irq/24/smp_affinity看亲和力是否设置。此外,此文件的存在表明您的 Linux SMP 系统支持关联。正文 IO-APIC 是中断 Controller 的类型(典型的 PC),它是 不是 表明系统可以处理亲缘关系。

也可以看看:

  • zero copy vs kernel by-pass
  • University of Waterloo doc
  • IRQ-affinity.txt


  • 注意 这部分是推测性的,是 不是 我所知道的任何卡片是如何工作的。

    您想要的主要部分通常是不可能的。 NIC 寄存器是单一资源。有多个寄存器,它们具有读取和写入寄存器以执行操作的一般顺序。如果两个 CPU 同时写入(甚至读取)寄存器,那么它会严重混淆 NIC。通常 CPU 并不参与中断,只有一些 DMA 引擎需要被告知中断中的下一个缓冲区。

    为了使您想要的东西有用,您需要一个带有多个可以独立使用的寄存器“银行”的 NIC。例如,仅 READ/WRITE 数据包组很容易理解。然而,可能有几个银行写入不同的数据包,然后卡必须管理如何序列化它们。此外,卡可以进行一些数据包检查并根据固定的数据包值中断不同的 CPU。即,端口和IP。这种数据包匹配会产生不同的中断源,不同的 CPU 可以处理不同的匹配。

    这将允许您使用单个 NIC 将不同的套接字流量路由到特定的 CPU。

    问题是,与现有卡相比,在硬件中制作这张卡会非常复杂。它会更昂贵,并且需要更多的电力来运行。

    如果是标准的 NIC 硬件,如果原来的 CPU 不忙,轮换 CPU 没有任何好处。如果有非网络事件,最好不要理会其他 CPU,以便将缓存用于不同的工作负载(代码/数据)。所以在大多数情况下,最好将中断保持在固定的 CPU 上,除非它很忙,然后它可能会在几个 CPU 之间进行乒乓球。在所有 CPU 上运行中断几乎永远不会有益。

    关于linux - SMP 关联路由不适用于 ARM 上的 GICv2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59896342/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com