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