From: Daniel Wagner <[email protected]>

Multiqueue drivers spread I/O queues across all CPUs for optimal
performance. However, these drivers are not aware of CPU isolation
requirements and will distribute queues without considering the isolcpus
configuration.

Introduce a new isolcpus mask that allows users to define which CPUs
should have I/O queues assigned. This is similar to managed_irq, but
intended for drivers that do not use the managed IRQ infrastructure

Reviewed-by: Hannes Reinecke <[email protected]>
Reviewed-by: Aaron Tomlin <[email protected]>
Signed-off-by: Daniel Wagner <[email protected]>
---
 include/linux/sched/isolation.h | 1 +
 kernel/sched/isolation.c        | 7 +++++++
 2 files changed, 8 insertions(+)

diff --git a/include/linux/sched/isolation.h b/include/linux/sched/isolation.h
index dc3975ff1b2e..7b266fc2a405 100644
--- a/include/linux/sched/isolation.h
+++ b/include/linux/sched/isolation.h
@@ -18,6 +18,7 @@ enum hk_type {
        HK_TYPE_MANAGED_IRQ,
        /* Inverse of boot-time nohz_full= or isolcpus=nohz arguments */
        HK_TYPE_KERNEL_NOISE,
+       HK_TYPE_IO_QUEUE,
        HK_TYPE_MAX,
 
        /*
diff --git a/kernel/sched/isolation.c b/kernel/sched/isolation.c
index ef152d401fe2..3406e3024fd4 100644
--- a/kernel/sched/isolation.c
+++ b/kernel/sched/isolation.c
@@ -16,6 +16,7 @@ enum hk_flags {
        HK_FLAG_DOMAIN          = BIT(HK_TYPE_DOMAIN),
        HK_FLAG_MANAGED_IRQ     = BIT(HK_TYPE_MANAGED_IRQ),
        HK_FLAG_KERNEL_NOISE    = BIT(HK_TYPE_KERNEL_NOISE),
+       HK_FLAG_IO_QUEUE        = BIT(HK_TYPE_IO_QUEUE),
 };
 
 DEFINE_STATIC_KEY_FALSE(housekeeping_overridden);
@@ -340,6 +341,12 @@ static int __init housekeeping_isolcpus_setup(char *str)
                        continue;
                }
 
+               if (!strncmp(str, "io_queue,", 9)) {
+                       str += 9;
+                       flags |= HK_FLAG_IO_QUEUE;
+                       continue;
+               }
+
                /*
                 * Skip unknown sub-parameter and validate that it is not
                 * containing an invalid character.
-- 
2.51.0


Reply via email to