From: Vincent Fu Date: Thu, 3 Aug 2023 00:53:21 +0000 (-0400) Subject: eta: calculate aggregate bw statistics even when eta is disabled X-Git-Tag: fio-3.36~32 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=62f35562722f0c903567096d0f10a836d1ae2f60;p=fio.git 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 --- diff --git a/eta.c b/eta.c index af4027e0..cc342461 100644 --- a/eta.c +++ b/eta.c @@ -375,6 +375,22 @@ bool eta_time_within_slack(unsigned int time) return time > ((eta_interval_msec * 95) / 100); } +/* + * 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,