gpt4 book ai didi

linux - 硬中断和软中断

转载 作者:IT王子 更新时间:2023-10-29 01:26:01 24 4
gpt4 key购买 nike

在linux中,当网卡收到一个数据包时,会触发一个硬中断,然后在中断回调函数中,它会引发一个NET_RX_SOFTIRQ,这个softirq会和hard irq在同一个cpu上运行吗?

最佳答案

中断请求 (IRQ) 是在硬件级别发送的服务请求。中断可以通过专用硬件线路发送,也可以作为信息包(消息信号中断或 MSI)通过硬件总线发送。启用中断后,收到 IRQ 会提示切换到中断上下文。内核中断调度代码检索 IRQ 号及其关联的已注册中断服务例程 (ISR) 列表,并依次调用每个 ISR。 ISR 确认中断并忽略来自同一 IRQ 的冗余中断,然后将延迟处理程序排队以完成中断处理并阻止 ISR 忽略 future 的中断。

IRQ 具有关联的“亲和性”属性 smp_affinity,它定义了允许为该 IRQ 执行 ISR 的 CPU 核心。此属性可用于通过将中断亲和性和应用程序的线程亲和性分配给一个或多个特定 CPU 内核来提高应用程序性能。这允许在指定的中断和应用程序线程之间共享高速缓存行。

# cat /proc/irq/32/smp_affinity 
f

smp_affinity 的默认值是 f,这意味着 IRQ 可以在系统中的任何 CPU 上得到服务。将此值设置为 1,如下所示,意味着只有 CPU 0 可以服务此中断:

# echo 1 >/proc/irq/32/smp_affinity
# cat /proc/irq/32/smp_affinity
1

On systems that support interrupt steering, modifying the smp_affinity of an IRQ sets up the hardware so that the decision to service an interrupt with a particular CPU is made at the hardware level, with no intervention from the kernel.

Redhat 的文档中提供了更多详细信息 - 4.3 Interrupts and IRQ tuning

关于linux - 硬中断和软中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36303077/

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