[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20251220110241.8435-1-ionut.nechita@windriver.com>
Date: Sat, 20 Dec 2025 13:02:39 +0200
From: "Ionut Nechita (WindRiver)" <djiony2011@...il.com>
To: axboe@...nel.dk,
ming.lei@...hat.com
Cc: gregkh@...uxfoundation.org,
muchun.song@...ux.dev,
sashal@...nel.org,
linux-block@...r.kernel.org,
linux-kernel@...r.kernel.org,
stable@...r.kernel.org,
Ionut Nechita <ionut.nechita@...driver.com>
Subject: [PATCH 0/2] block/blk-mq: fix RT kernel performance regressions
From: Ionut Nechita <ionut.nechita@...driver.com>
This series addresses two critical performance regressions in the block
layer multiqueue (blk-mq) subsystem when running on PREEMPT_RT kernels.
On RT kernels, regular spinlocks are converted to sleeping rt_mutex locks,
which can cause severe performance degradation in the I/O hot path. This
series converts two problematic locking patterns to prevent IRQ threads
from sleeping during I/O operations.
Testing on MegaRAID 12GSAS controller with 8 MSI-X vectors shows:
- v6.6.52-rt (before regression): 640 MB/s sequential read
- v6.6.64-rt (regression introduced): 153 MB/s (-76% regression)
- v6.6.68-rt with queue_lock fix only: 640 MB/s (performance restored)
- v6.6.69-rt with both fixes: expected similar or better performance
The first patch replaces queue_lock with memory barriers in the I/O
completion hot path, eliminating the contention that caused IRQ threads
to sleep. The second patch converts the global blk_mq_cpuhp_lock from
mutex to raw_spinlock to prevent sleeping during CPU hotplug operations.
Both conversions are safe because the protected code paths only perform
fast, non-blocking operations (memory barriers, list/hlist manipulation,
flag checks).
Ionut Nechita (2):
block/blk-mq: fix RT kernel regression with queue_lock in hot path
block/blk-mq: convert blk_mq_cpuhp_lock to raw_spinlock for RT
block/blk-mq.c | 33 +++++++++++++++------------------
1 file changed, 15 insertions(+), 18 deletions(-)
--
2.52.0
Powered by blists - more mailing lists