Skip to contentSkip to conversation

What are managed IRQs?

DISCUSSION [email protected] 2 participants 2 messages Jan 21, 2021 – Jan 22, 2021

lore
Share & tools
lore
#0 lore raw

Hi everyone,

isolcpus has the option managed_irq, which supposedly assigns the IRQs to housekeeping CPUs if possible. According to the description of isolcpus, the affinity of managed IRQs can not be changed via /proc/irq.
I've searched the kernel documentation and the kernel source code for more information about managed IRQs / managed interrupts, but haven't found any documentation (aside from isolcpus).

Specifically, I'm interested in what makes managed IRQs different (as in why can't the affinity be changed via procfs), and
what kind of IRQs are "managed"?

Also, I'd like to verify if the cmdline parameter irqaffinity affects managed IRQs, or if it only modifies the default affinity for IRQs which can be changed via procfs.

Thanks

Jonathan

#1 lore raw
Quoted 1 line · On 2021-01-21 16:47:45 [+0100], [email protected] wrote:

Hi everyone,

Hi,

Quoted 10 lines

isolcpus has the option managed_irq, which supposedly assigns the IRQs to housekeeping CPUs if possible. According to the description of isolcpus, the affinity of managed IRQs can not be changed via /proc/irq.
I've searched the kernel documentation and the kernel source code for more information about managed IRQs / managed interrupts, but haven't found any documentation (aside from isolcpus).

Specifically, I'm interested in what makes managed IRQs different (as in why can't the affinity be changed via procfs), and
what kind of IRQs are "managed"?

Having MSI(-X) devices with plenty of interrupts could get in a position where you run out of vector space to program them. Since they are per-CPU (based on their use-case) they are only programmed on the CPU where they are fired.
Changing the affinity will also affect the driver logic. So assuming you have 4 queue (interrupt) NVME device it hardly makes no sense to have to interrupts on one CPU. It would make sense not create an interrupt on the CPU and spread the load across the other queue.

Quoted 3 lines

Also, I'd like to verify if the cmdline parameter irqaffinity affects managed IRQs, or if it only modifies the default affinity for IRQs which can be changed via procfs.

Does the commit description of
11ea68f553e24 ("genirq, sched/isolation: Isolate from handling managed interrupts")

https://git.kernel.org/torvalds/c/11ea68f553e24

help?

Quoted 3 lines

Thanks

Jonathan

Sebastian