When write_lat_log option is set, fio outputs the 'clat' completion latency log file. This clat log can be used to analyze IO latency. This file can also be considered as an IO trace file as each IO entry can fully describe an IO when the --log_offset and --log_prio options are also used. However, using the clat log file as an IO trace is inaccurate because the time field of each entry uses millisecond units, which is too coarse for fast IOs (e.g. when using SSDs). Also, the time field value is recorded not at command completion, but at log sample recording. The time field value is slightly different from the IO completion time. This series proposes the new option 'log_issue_time' to address the inaccuracy problem. When this option is set, fio adds another field to the log file entries to log an IO issuing time in nanoseconds. The first four patches in the series clean up the current code as preparation. The 5th patch introduces the 'log_issue_time' option. The following two patches document the new option. The last two patches add two test cases to check the log file format. Changes from v1: * 1st: Described add_*lat_sample() arguments in the commit message * 5th: Incremented FIO_SERVER_VER and fixed typos * 8th,9th: Added test requirements and extended job runtime/log_avg_msec Shin'ichiro Kawasaki (9): stat: reduce arguments of add_*lat_sample() functions stat: reduce arguments of add_log_sample() iolog: refactor flush_samples() iolog: drop struct io_sample_offset introduce the log_issue_time option doc: fix the descriptions of the log_prio option doc: describe the log_issue_time option t/jobs/t0033: add test for the log file format t/jobs/t0034: add test for the log_issue_time option HOWTO.rst | 40 ++++++++-- cconv.c | 2 + client.c | 36 +++++---- engines/fileoperations.c | 6 +- fio.1 | 26 +++++-- init.c | 12 +++ io_u.c | 14 +--- iolog.c | 154 ++++++++++++++++++++------------------ iolog.h | 47 +++++++++--- options.c | 10 +++ server.c | 10 ++- server.h | 3 +- stat.c | 155 ++++++++++++++++++++++++--------------- stat.h | 13 ++-- t/jobs/t0033.fio | 28 +++++++ t/jobs/t0034.fio | 27 +++++++ t/run-fio-tests.py | 66 +++++++++++++++++ thread_options.h | 2 + 18 files changed, 458 insertions(+), 193 deletions(-) create mode 100644 t/jobs/t0033.fio create mode 100644 t/jobs/t0034.fio -- 2.45.2