Re: Not logging zero entry intervals when using --log_avg_msec seems problematic

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

 



On Wed, Mar 2, 2022 at 12:20 PM Vincent Fu <vincent.fu@xxxxxxxxxxx> wrote:
> stat.c:__add_samples() is where log entries are added. It contains a continue statement which skips entries during log intervals with no IO. I would start poking around there if you want log entries for those intervals. Perhaps make the new behavior an option for those that depend on the current behavior.

Thanks for the pointer. We could do an option, but honestly, not
having those 0 entries can be really misleading. The end user of fio
wanting to see how a disk performs over time is likely just specifying
log_interval_ms and then graphing the results. As the example I
provided shows, if zero entries are happening between non-zero entries
but are omitted, graphs/conclusions made from those logs are likely
wrong. (In my extreme example, the graphs made from those logs would
be *extremely* wrong.)

The bandwidth/iops log stuff has other quirks too, some of which I've
posted about in other mailings to this list. The code for
bandwidth/iops logging leverages the live statistics code, while the
code for latency logging is distinct. As such, bw/iops logs have the
following quirks, but latency logs do not:
1) Data after the last full interval is omitted (e.g. if you use 300ms
interval and your job takes 5 seconds, the last 200 ms is not in the
logs). This really surprised me and I don't think an end-user would
expect this. It never happens with latency logs.
2) Log intervals are not consistently sized - the code aims to hit the
specified log_interval_ms, but you often end up with intervals that
are bigger/smaller. (This can happen with latency logs, but is much
rarer - only when operations are not happening at a normal rate.)

Further, the latency logs also do not have zero-entry intervals, but
that is not really concerning - for latency, an interval is reporting
average latency per operation, and if there are no operations in an
interval, that is ill-defined.

Thanks,
Nick




[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