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). 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. 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 | 1 + 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, 457 insertions(+), 192 deletions(-) create mode 100644 t/jobs/t0033.fio create mode 100644 t/jobs/t0034.fio -- 2.45.2