All of lore.kernel.org
 help / color / mirror / Atom feed
* Still some cases where min rate checking will fail - how to fix?
@ 2022-02-14 23:56 Nick Neumann
  0 siblings, 0 replies; only message in thread
From: Nick Neumann @ 2022-02-14 23:56 UTC (permalink / raw)
  To: fio; +Cc: axboe

I recently submitted a PR that was merged to call fio_gettime in do_io
in the IO_MODE_OFFLOAD case because comp_time was uninitialized in
that case and so the minimum rate checking didn't work, and would
sometimes assert b/c we were dealing with a time that was
uninitialized:

https://github.com/axboe/fio/commit/5b28b75b8cca843d616d2d54a77fdb5797c00f54

After fixing this, I noticed I was still getting intermittent asserts
for the same reason in the non-offload (e.g. regular) case. Indeed,
the calls made in do_io in the non-offload case are to io_queue_event
and wait_for_completions. But it is possible that wait_for_completions
is not called and both io_queue_event and wait_for_completions do not
always fill out comp_time. So the same problem can still happen. Once
comp_time is filled out for the first time, asserts will not happen,
so an easy fix is to initialize comp_time to now at the beginning of
do_io, but I have no idea if that is actually the correct fix.

To fix properly I need to understand the idea behind what comp_time is
supposed to represent and why it is not filled out sometimes by calls
to io_queue_event. Should we just always be calling it when doing rate
checking before we call check_min_rate, or is there some reason we
don't want to do that? Was it ok to always call it in the offload
case?

Thanks,
Nick

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-02-14 23:56 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-02-14 23:56 Still some cases where min rate checking will fail - how to fix? Nick Neumann

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.