> -----Original Message----- > From: Nick Neumann [mailto:nick@xxxxxxxxxxxxxxxx] > Sent: Wednesday, March 2, 2022 2:42 PM > To: Vincent Fu <vincent.fu@xxxxxxxxxxx> > Cc: fio@xxxxxxxxxxxxxxx > Subject: Re: Not logging zero entry intervals when using --log_avg_msec > seems problematic > ... > 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.) > helper_thread.c:helper_thread_main() handles logging, steadystate, signals, status_interval, and disk utilization measurements. If multiple of these features are active then there may be small deviations in the logging time intervals. For missing final log entries, what happens is that the helper thread receives an exit notification (A_EXIT) and then stops checking its other responsibilities. It would be reasonable to make one final call to the logging code before exiting the helper thread but there might need to be some guards to make sure the logging code does not try to access threads that have already been torn down.