This commit / feature adds completion latency histogram output to fio, piggybacking
on the existing histograms recorded by stat.c and adding the following command
line options:
- log_hist_msec operates like log_avg_msec does, but produces files
named *_clat_hist*
- write_hist_log has the same semantics as write_lat_log but for histograms.
- log_hist_coarseness changes how many bins are logged.
The more substantial contribution is a post-processor for digesting these log files,
located in fio/tools/hist/fiologparser_hist.py, which computes min/max/avg/percentile
statistics.
To compare the accuracy of the statistics produced by fiologparser_hist.py,
a reference implementation is located here:
https://github.com/cronburg/fio/blob/histograms/tools/hist/fiologparser_numpy.py
for computing the same statistics from the *_clat.* files fio already produces.
A comparison can be viewed here:
https://cronburg.com/fio/demo/latency.html
The reference implementation is excluded from this commit, as I'm still working
with Mark (markhpc) on getting it into the branch where he's working on fiologparser.
Also I'd eventually like to make FIO_IO_U_PLAT_GROUP_NR in stat.h
configurable (allowing for a larger maximum histogram latency value than 17
seconds), but haven't added it to keep the changes to fio minimal for now.
A more detailed description of the motivation behind this feature, and explanation
of the design process and algorithms used in the post-processor can be found here:
https://cronburg.com/fio/cloud-latency-problem-measurement/
13 files changed: