Re: [PATCH v15 0/8] blk: honor isolcpus configuration
Aaron Tomlin <[email protected]> Wed, 5 Aug 2026 15:22:05 -0400
| Newsgroups | org.kernel.vger.linux-block,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <my7nrgu6hc6uxpqxnupi6cjbs6cccaksbghoccyufolbujpdto@zznx6dvxlci2> |
On Fri, Jul 10, 2026 at 05:21:59PM +0200, Sebastian Andrzej Siewior wrote: > On 2026-05-21 19:29:48 [-0400], Aaron Tomlin wrote: > > Hi, > Hi, > > > I have decided to drive this series forward on behalf of Daniel Wagner, the > > original author. The series has been rebased on v7.1-rc4-100-g8bc67e4db64a. > > > > This series introduces a new CPU isolation feature, "isolcpus=io_queue", > > designed to protect isolated cores from the disruptive hardware interrupts > > generated by high-performance multi-queue devices. > > > > When enabled, it fundamentally alters how the generic IRQ subsystem and the > > block layer (blk-mq) map hardware queues: > > > > 1. Restricted IRQ Affinity: Managed hardware interrupts are strictly > > confined to online housekeeping CPUs. > > > > 2. Transparent I/O Submission: Applications running on isolated CPUs > > can still seamlessly submit I/O requests; however, the resulting > > hardware completion interrupts are safely routed to a designated > > housekeeping CPU. > > > > 3. Topology-Aware Queue Allocation: The generic CPU-to-hardware-queue > > mapping logic is extended to distribute hardware contexts evenly > > among the available housekeeping CPUs, preventing MSI-X vector > > exhaustion while maintaining optimal cache locality where possible. > > > > To prevent I/O stalls, the block layer is additionally hardened to reject > > hot-plug requests that attempt to offline a housekeeping CPU if it is the > > last remaining CPU actively serving an online isolated core. > > > > The complex "top-down" mask plumbing introduced in v12, which modified > > struct irq_affinity and expanded block layer APIs, has been abandoned. It > > is replaced by a centralised approach: direct isolation querying via > > housekeeping_cpumask(HK_TYPE_IO_QUEUE) within the genirq/affinity > > subsystem. This architectural simplification successfully decouples core > > changes from driver-specific implementations. > > > > Please let me know your thoughts. > > I think I asked this or wanted to: Why not mage managed_irqs consider > this? Or is there a case where those two options want a different thing? > With managed_irqs you specify a mask but this is may not be respected if > you have more IRQs than you specify. This means the IRQs will still be > routed to isolated CPUs. > This option is intended to avoid any interrupts on isolated CPUs. > Wouldn't it be possible to allow managed_irqs to restrict a device to > two CPUs only and use two queues only instead of the available 64 or do > I miss something fundamental why those two need to be separate? Hi Sebastian, Please see my response here [1]. [1]: https://lore.kernel.org/lkml/xjcwes5caiwh3eumqfuvankokb7wzzokleqfkfmkh5sgl333sg@nwlgqvj4vdet/ Kind regards, -- Aaron Tomlin