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