On 2021/07/19 23:20, Jens Axboe wrote: > On 7/18/21 9:24 PM, Damien Le Moal wrote: >> On 2021/07/06 9:17, Damien Le Moal wrote: >>> This series improves libaio engine support for IO priority, adding >>> options to allow for mixed priority workloads to be specified more >>> easily and to match the kernel supported IO priority features. >>> >>> The first 3 patches are small cleanup and fixes in the manpage and >>> fiograph tool. >>> >>> Patch 4 and 5 introduce some helper functions to simplify the code in >>> the followup patches. >>> >>> Patch 6 changes the cmdprio_percentage option to allow specifying >>> different percentages for reads and writes. >>> >>> Patch 7 and 8 introduce the aioprioclass, aioprio and aioprio_bssplit. >>> These together allow a script to specify different IO priorities for >>> reads and writes of different sizes with different percentages. >>> >>> Patch 9 relaxes restrictions on the cmdprio_percentage option to allow >>> jobs to execute AIOs using a default priority as set with ioprio_set() >>> (as the kernel supports this). >>> >>> Patch 10 introduces the log_prio option to log each IO priority value, >>> allowing users to do per-priority level performance analysis with >>> complex workloads using many jobs. >>> >>> Finally, patch 11 adds a couple of example scripts to illustrate the use >>> of the new options introduced. >>> >>> Comments are as always most welcome. >> >> Hi Jens, >> >> Any comment on this series ? We have been using this for a while now internally >> and in the field to test ATA NCQ priority with good results. I am also planning >> to re-use this to add support for the Command Duration Limits feature (ATA & >> SCSI) using a new priority class (kernel patching cooking, but this will need >> some more time as the specifications must stabilize first. >> >> One thing that can be considered missing with this series is a full set of >> per-priority level statistics (IOPS, BW, etc). But that is a major change and so >> this is not talked here. > > I'll give it a look over today. My main object would be to ensure that > aio and io_uring provide the same kind of interface, there shouldn't be > any differences there in terms of how to use them and what they do. Even > naming should be the same. Engine options exist for engine specific > options. These don't apply to all engines, but to the ones they do, they > should be interchangable. I should be able to take a job file with > ioengine=X and change it to =Y and have the priorities still work, > provided that engine Y supports it. > > As far as I'm concerned, aio is legacy and I have no real interest in > adding anything that supports that, be it kernel or software. OK. Let me cook a V2 to include io_uring support for the priority options. -- Damien Le Moal Western Digital Research