Re: [PATCH V10 0/8] block, bfq: extend bfq to support multi-actuator drives

From: Paolo Valente
Date: Tue Dec 13 2022 - 10:40:14 EST


Hi Jens, Damien,
can we consider this for 6.2?

Thanks,
Paolo

> Il giorno 9 dic 2022, alle ore 10:44, Paolo Valente <paolo.valente@xxxxxxxxxx> ha scritto:
>
> Hi,
> here is the V10, it differs from V9 in that it applies the
> recommendation by Damien in [2].
>
> Here is the whole description of this patch series again. This
> extension addresses the following issue. Single-LUN multi-actuator
> SCSI drives, as well as all multi-actuator SATA drives appear as a
> single device to the I/O subsystem [1]. Yet they address commands to
> different actuators internally, as a function of Logical Block
> Addressing (LBAs). A given sector is reachable by only one of the
> actuators. For example, Seagate’s Serial Advanced Technology
> Attachment (SATA) version contains two actuators and maps the lower
> half of the SATA LBA space to the lower actuator and the upper half to
> the upper actuator.
>
> Evidently, to fully utilize actuators, no actuator must be left idle
> or underutilized while there is pending I/O for it. To reach this
> goal, the block layer must somehow control the load of each actuator
> individually. This series enriches BFQ with such a per-actuator
> control, as a first step. Then it also adds a simple mechanism for
> guaranteeing that actuators with pending I/O are never left idle.
>
> See [1] for a more detailed overview of the problem and of the
> solutions implemented in this patch series. There you will also find
> some preliminary performance results.
>
> Thanks,
> Paolo
>
> [1] https://www.linaro.org/blog/budget-fair-queueing-bfq-linux-io-scheduler-optimizations-for-multi-actuator-sata-hard-drives/
> [2] https://lore.kernel.org/lkml/20221208104351.35038-1-paolo.valente@xxxxxxxxxx/T/#t
>
> Davide Zini (3):
> block, bfq: split also async bfq_queues on a per-actuator basis
> block, bfq: inject I/O to underutilized actuators
> block, bfq: balance I/O injection among underutilized actuators
>
> Federico Gavioli (1):
> block, bfq: retrieve independent access ranges from request queue
>
> Paolo Valente (4):
> block, bfq: split sync bfq_queues on a per-actuator basis
> block, bfq: forbid stable merging of queues associated with different
> actuators
> block, bfq: move io_cq-persistent bfqq data into a dedicated struct
> block, bfq: turn bfqq_data into an array in bfq_io_cq
>
> block/bfq-cgroup.c | 94 +++----
> block/bfq-iosched.c | 584 ++++++++++++++++++++++++++++++--------------
> block/bfq-iosched.h | 142 ++++++++---
> block/bfq-wf2q.c | 2 +-
> 4 files changed, 566 insertions(+), 256 deletions(-)
>
> --
> 2.20.1