BLK-MQ To Support Runtime Power Management With Linux 4.20~5.0
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."
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."
Add A Comment