aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVincent Fu <vincent.fu@samsung.com>2023-08-02 20:53:21 -0400
committerVincent Fu <vincent.fu@samsung.com>2023-08-03 11:49:08 -0400
commit62f35562722f0c903567096d0f10a836d1ae2f60 (patch)
tree62535d7186b861f49e739a75db9a05f5f3163073
parent7b57011427a8204bd63671b08dde56cd9e879d68 (diff)
downloadfio-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.c30
1 files changed, 22 insertions, 8 deletions
diff --git a/eta.c b/eta.c
index af4027e0e..cc3424613 100644
--- a/eta.c
+++ b/eta.c
@@ -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,