Re: [PATCH 00/11] Improve libaio IO priority support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.

> 
> Damien Le Moal (11):
>   manpage: fix formatting
>   manpage: fix definition of prio and prioclass options
>   tools: fiograph: do not overwrite input script file
>   os: introduce ioprio_value() helper
>   options: make parsing functions available to ioengines
>   libaio,io_uring: improve cmdprio_percentage option
>   libaio: introduce aioprio and aioprioclass options
>   libaio: introduce aioprio_bssplit
>   libaio: relax cdmprio_percentage constraints
>   fio: Introduce the log_prio option
>   examples: add libaio priority use examples
> 
>  HOWTO                            |  57 +++++++--
>  backend.c                        |   1 +
>  cconv.c                          |   2 +
>  client.c                         |   2 +
>  engines/filecreate.c             |   2 +-
>  engines/filedelete.c             |   2 +-
>  engines/filestat.c               |   2 +-
>  engines/io_uring.c               |  33 +++--
>  engines/libaio.c                 | 210 ++++++++++++++++++++++++++++---
>  eta.c                            |   2 +-
>  examples/aio-prio-bssplit.fio    |  17 +++
>  examples/aio-prio-bssplit.png    | Bin 0 -> 48709 bytes
>  examples/aio-prio-percentage.fio |  17 +++
>  examples/aio-prio-percentage.png | Bin 0 -> 48752 bytes
>  fio.1                            |  76 ++++++++---
>  fio.h                            |   5 +
>  init.c                           |   4 +
>  io_u.c                           |  14 ++-
>  io_u.h                           |  10 +-
>  iolog.c                          |  45 +++++--
>  iolog.h                          |  16 ++-
>  options.c                        |  50 ++++----
>  os/os-android.h                  |  24 ++--
>  os/os-dragonfly.h                |   1 +
>  os/os-linux.h                    |  24 ++--
>  os/os.h                          |   4 +
>  server.h                         |   3 +-
>  stat.c                           |  75 +++++------
>  stat.h                           |   9 +-
>  thread_options.h                 |  20 +++
>  tools/fiograph/fiograph.conf     |   4 +-
>  tools/fiograph/fiograph.py       |   4 +-
>  32 files changed, 574 insertions(+), 161 deletions(-)
>  create mode 100644 examples/aio-prio-bssplit.fio
>  create mode 100644 examples/aio-prio-bssplit.png
>  create mode 100644 examples/aio-prio-percentage.fio
>  create mode 100644 examples/aio-prio-percentage.png
> 


-- 
Damien Le Moal
Western Digital Research




[Index of Archives]     [Linux Kernel]     [Linux SCSI]     [Linux IDE]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux