mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Ming Lei <ming.lei@redhat.com>
To: Jens Axboe <axboe@kernel.dk>
Cc: linux-block@vger.kernel.org, Tejun Heo <tj@kernel.org>,
	linux-kernel@vger.kernel.org, Ming Lei <ming.lei@redhat.com>,
	Juri Lelli <juri.lelli@redhat.com>,
	Andrew Theurer <atheurer@redhat.com>,
	Joe Mario <jmario@redhat.com>, Sebastian Jug <sejug@redhat.com>
Subject: [PATCH] blk-mq: add module parameter to not run block kworker on isolated CPUs
Date: Tue, 10 Oct 2023 22:22:16 +0800	[thread overview]
Message-ID: <20231010142216.1114752-1-ming.lei@redhat.com> (raw)

Kernel parameter of `isolcpus=` is used for isolating CPUs for specific
task, and user often won't want block IO to disturb these CPUs, also long
IO latency may be caused if blk-mq kworker is scheduled on these isolated
CPUs.

Kernel workqueue only respects this limit for WQ_UNBOUND, for bound wq,
the responsibility should be on wq user.

Add one block layer parameter for not running block kworker on isolated
CPUs.

Cc: Juri Lelli <juri.lelli@redhat.com>
Cc: Andrew Theurer <atheurer@redhat.com>
Cc: Joe Mario <jmario@redhat.com>
Cc: Sebastian Jug <sejug@redhat.com>
Signed-off-by: Ming Lei <ming.lei@redhat.com>
---
 block/blk-mq.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/block/blk-mq.c b/block/blk-mq.c
index ec922c6bccbe..c53b5b522053 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -29,6 +29,7 @@
 #include <linux/prefetch.h>
 #include <linux/blk-crypto.h>
 #include <linux/part_stat.h>
+#include <linux/sched/isolation.h>
 
 #include <trace/events/block.h>
 
@@ -42,6 +43,13 @@
 #include "blk-rq-qos.h"
 #include "blk-ioprio.h"
 
+static bool respect_cpu_isolation;
+module_param(respect_cpu_isolation, bool, 0444);
+MODULE_PARM_DESC(respect_cpu_isolation,
+		"Don't schedule blk-mq worker on isolated CPUs passed in "
+		"isolcpus= or nohz_full=. User need to guarantee to not run "
+		"block IO on isolated CPUs (default: false)");
+
 static DEFINE_PER_CPU(struct llist_head, blk_cpu_done);
 static DEFINE_PER_CPU(call_single_data_t, blk_cpu_csd);
 
@@ -3926,6 +3934,13 @@ static void blk_mq_map_swqueue(struct request_queue *q)
 		 */
 		sbitmap_resize(&hctx->ctx_map, hctx->nr_ctx);
 
+		if (respect_cpu_isolation) {
+			cpumask_and(hctx->cpumask, hctx->cpumask,
+					housekeeping_cpumask(HK_TYPE_DOMAIN));
+			cpumask_and(hctx->cpumask, hctx->cpumask,
+					housekeeping_cpumask(HK_TYPE_WQ));
+		}
+
 		/*
 		 * Initialize batch roundrobin counts
 		 */
-- 
2.41.0


             reply	other threads:[~2023-10-10 14:23 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-10 14:22 Ming Lei [this message]
2023-10-10 18:45 ` Tejun Heo
2023-10-11  0:39   ` Ming Lei
2023-10-12 19:55     ` Tejun Heo
2023-10-13  2:01       ` Ming Lei
2023-10-13 11:26   ` Frederic Weisbecker
2023-10-13 12:23     ` Ming Lei

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231010142216.1114752-1-ming.lei@redhat.com \
    --to=ming.lei@redhat.com \
    --cc=atheurer@redhat.com \
    --cc=axboe@kernel.dk \
    --cc=jmario@redhat.com \
    --cc=juri.lelli@redhat.com \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sejug@redhat.com \
    --cc=tj@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome