Re: Something odd with the fio random offset generator & time_based runs

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

 



Looking into it more, what seems to be going on is that after writing
td->o.size bytes, a time_based job silently closes all open files,
resets, and starts over.  Part of the process of resetting involves
re-seeding all the random numbers.

It seems like there are other implications to the reset as well.  For
example, in async ioengines it drains all the remaining IO, which
results in less throughput.  Potentially latency numbers could be
effected as well, either positively or negatively.

Would it make sense, for time_based runs, to not break out of the loop
in do_io() so the state doesn't get reset?  This would also allow the
removal of the check in keep_running() for time_based, which would
then allow "time_based" and "loops" to be used together in a
meaningful way.

At first blush, this would probably just be a case of adding "||
(td->o.time_based)" to the loop condition in do_io(), and that
certainly addressed the case of random IO whe norandommap I initially
saw.  But the same performance issues could apply to sequential loads
and random mapped loads, and just changing the loop condition didn't
have any effect on that.  There is something else which is determining
that the end condition is met for sequential loads, read_iolog loads,
and randommap loads.  (For read_iolog loads, time_based and loops have
no effect, so I'm not sure the value of changing that.)

Would it be difficult to change the behavior so only loops= causes
do_io() to be called repeatedly like that?
--
To unsubscribe from this list: send the line "unsubscribe fio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[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