diff options
author | Vincent Fu <vincent.fu@samsung.com> | 2023-08-02 20:53:21 -0400 |
---|---|---|
committer | Vincent Fu <vincent.fu@samsung.com> | 2023-08-03 11:49:08 -0400 |
commit | 62f35562722f0c903567096d0f10a836d1ae2f60 (patch) | |
tree | 62535d7186b861f49e739a75db9a05f5f3163073 | |
parent | 7b57011427a8204bd63671b08dde56cd9e879d68 (diff) | |
download | fio-62f35562722f0c903567096d0f10a836d1ae2f60.tar.gz |
eta: calculate aggregate bw statistics even when eta is disabled
The --bandwidth-log command-line option instructs fio to generate
aggregate bandwidth log files. These measurements are recorded by the
code generating the eta status line. When eta is disabled the aggregate
bandwidth log measurements are not calculated. Change the eta code to
record the measurements even when eta is not needed.
eta is disabled under these conditions
- explicitly with --eta=never
- STDOUT is not a TTY (shell redirection, nohup, etc)
- output format excludes normal output
Fixes: https://github.com/axboe/fio/issues/1599
Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
-rw-r--r-- | eta.c | 30 |
1 files changed, 22 insertions, 8 deletions
@@ -376,6 +376,22 @@ bool eta_time_within_slack(unsigned int time) } /* + * These are the conditions under which we might be able to skip the eta + * calculation. + */ +static bool skip_eta() +{ + if (!(output_format & FIO_OUTPUT_NORMAL) && f_out == stdout) + return true; + if (temp_stall_ts || eta_print == FIO_ETA_NEVER) + return true; + if (!isatty(STDOUT_FILENO) && eta_print != FIO_ETA_ALWAYS) + return true; + + return false; +} + +/* * Print status of the jobs we know about. This includes rate estimates, * ETA, thread state, etc. */ @@ -393,14 +409,12 @@ bool calc_thread_status(struct jobs_eta *je, int force) static unsigned long long disp_io_iops[DDIR_RWDIR_CNT]; static struct timespec rate_prev_time, disp_prev_time; - if (!force) { - if (!(output_format & FIO_OUTPUT_NORMAL) && - f_out == stdout) - return false; - if (temp_stall_ts || eta_print == FIO_ETA_NEVER) - return false; + bool ret = true; - if (!isatty(STDOUT_FILENO) && (eta_print != FIO_ETA_ALWAYS)) + if (!force && skip_eta()) { + if (write_bw_log) + ret = false; + else return false; } @@ -534,7 +548,7 @@ bool calc_thread_status(struct jobs_eta *je, int force) je->nr_threads = thread_number; update_condensed_str(__run_str, run_str); memcpy(je->run_str, run_str, strlen(run_str)); - return true; + return ret; } static int gen_eta_str(struct jobs_eta *je, char *p, size_t left, |