BLK-MQ To Support Runtime Power Management With Linux 4.20~5.0
Written by Michael Larabel in Hardware on 27 September 2018 at 09:16 AM EDT. Add A Comment
The Linux mult-queue block I/O layer (blk-mq) has been working out well for delivering very fast performance particularly for modern NVMe solid-state storage and SCSI drives. But it turns out run-time power management hasn't been in use when blk-mq is active.

The multi-queue block code brings per-CPU software queues and these software queues can map to hardware issue queues. These multiple queues can reduce locking contention and the overall blk-mq design jives with current high-performance solid-state drive characteristics. The key drivers have been ported over to using blk-mq for a while now (end of Linux 3.xx / early 4.x kernels) and for Linux systems not using it by default can be activated easily via the scsi_mod.use_blk_mq=1 boot option.

What hasn't been supported until now is run-time power management for drives while using blk-mq. But with the Linux 4.20~5.0 kernel that is changing as support is being enabled for run-time power management. The patch is queued in the block subsystem's "-next" code for merging in the next kernel cycle.

The commit by Bart Van Assche notes, "Now that the blk-mq core processes power management requests (marked with RQF_PREEMPT) in other states than RPM_ACTIVE, enable runtime power management for blk-mq."
Related News
About The Author
Author picture

Michael Larabel is the principal author of and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and automated benchmarking software. He can be followed via Twitter or contacted via

Popular News This Week