The following changes since commit d72b10e3ca2f7e3b7ef4e54ea98e4e964a67192d: fio: add FIO_RO_NEEDS_RW_OPEN ioengine flag (2023-02-03 13:26:32 -0500) are available in the Git repository at: git://git.kernel.dk/fio.git master for you to fetch changes up to 6d7f8d9a31f9ecdeab0eed8f23c63b9a94ec61f6: engines/libzbc: set FIO_RO_NEEDS_RW_OPEN engine flag (2023-02-06 12:36:37 -0700) ---------------------------------------------------------------- Horshack (1): Improve IOPs 50% by avoiding clock sampling when rate options not used Jens Axboe (2): Merge branch 'perf-Avoid_Clock_Check_For_No_Rate_Check' of https://github.com/horshack-dpreview/fio engines/libzbc: set FIO_RO_NEEDS_RW_OPEN engine flag engines/libzbc.c | 3 ++- io_u.c | 10 +++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) --- Diff of recent changes: diff --git a/engines/libzbc.c b/engines/libzbc.c index 2b63ef1a..dae4fe16 100644 --- a/engines/libzbc.c +++ b/engines/libzbc.c @@ -469,7 +469,8 @@ FIO_STATIC struct ioengine_ops ioengine = { .get_max_open_zones = libzbc_get_max_open_zones, .finish_zone = libzbc_finish_zone, .queue = libzbc_queue, - .flags = FIO_SYNCIO | FIO_NOEXTEND | FIO_RAWIO, + .flags = FIO_SYNCIO | FIO_NOEXTEND | FIO_RAWIO | + FIO_RO_NEEDS_RW_OPEN, }; static void fio_init fio_libzbc_register(void) diff --git a/io_u.c b/io_u.c index 8035f4b7..eb617e64 100644 --- a/io_u.c +++ b/io_u.c @@ -785,7 +785,15 @@ static enum fio_ddir get_rw_ddir(struct thread_data *td) else ddir = DDIR_INVAL; - td->rwmix_ddir = rate_ddir(td, ddir); + if (!should_check_rate(td)) { + /* + * avoid time-consuming call to utime_since_now() if rate checking + * isn't being used. this imrpoves IOPs 50%. See: + * https://github.com/axboe/fio/issues/1501#issuecomment-1418327049 + */ + td->rwmix_ddir = ddir; + } else + td->rwmix_ddir = rate_ddir(td, ddir); return td->rwmix_ddir; }