isolcpus Blocks Scheduler Tasks but Leaves Hardware IRQs on Isolated CPUs
The Linux kernel parameter isolcpus= is widely used to prevent the scheduler from assigning userspace tasks to specific CPU cores, but it does not stop hardware interrupts from firing on those same cores. Developers often verify isolation by checking CPU idle status in top, missing the fact that /proc/interrupts continues to tick on the supposedly isolated CPUs. For performance-critical use cases such as DPDK, user-space NICs, or cycle-accurate loops, scheduler isolation alone is insufficient and must be paired with IRQ affinity controls via /proc/irq/*/smp_affinity or the irqaffinity= kernel parameter. On newer kernels, the isolation story has split across multiple mechanisms including isolcpus=managed_irq, cpusets, and nohz_full=, though the IRQ caveat persists regardless of which interface is used. The isolcpus= parameter is also marked deprecated in some kernel trees in favor of cpusets, but the underlying hardware interrupt behavior remains unchanged.
This is an AI-generated summary. ShortSingh links to the original source for the complete article.
Discussion (0)
Log in to join the discussion and vote.
Log in