X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=eta.c;h=fc0292f3d7ac6c2e9b4ef5da5ecd29397572a274;hb=a37f69b72a74cbde6151458b890aab8d093f0c9f;hp=ba6a3989366f37b025c42b5a4569e91ab707febe;hpb=cda99fa0fcca41fc0d54ecaa2fd600162a8de5d3;p=fio.git diff --git a/eta.c b/eta.c index ba6a3989..fc0292f3 100644 --- a/eta.c +++ b/eta.c @@ -7,7 +7,7 @@ #include "fio.h" -static char run_str[MAX_JOBS + 1]; +static char run_str[REAL_MAX_JOBS + 1]; /* * Sets the status of the 'td' in the printed status map. @@ -28,10 +28,21 @@ static void check_str_update(struct thread_data *td) break; case TD_RUNNING: if (td_rw(td)) { - if (td_random(td)) - c = 'm'; - else - c = 'M'; + if (td_random(td)) { + if (td->o.rwmix[DDIR_READ] == 100) + c = 'r'; + else if (td->o.rwmix[DDIR_WRITE] == 100) + c = 'w'; + else + c = 'm'; + } else { + if (td->o.rwmix[DDIR_READ] == 100) + c = 'R'; + else if (td->o.rwmix[DDIR_WRITE] == 100) + c = 'W'; + else + c = 'M'; + } } else if (td_read(td)) { if (td_random(td)) c = 'r'; @@ -238,6 +249,7 @@ void print_thread_status(void) static unsigned int rate[2], iops[2]; static int linelen_last; static int eta_good; + char output[512], *p = output; int i2p = 0; if (temp_stall_ts || terse_output || eta_print == FIO_ETA_NEVER) @@ -344,17 +356,17 @@ void print_thread_status(void) if (!nr_running && !nr_pending) return; - printf("Jobs: %d (f=%d)", nr_running, files_open); + p += sprintf(p, "Jobs: %d (f=%d)", nr_running, files_open); if (m_rate || t_rate) { char *tr, *mr; mr = num2str(m_rate, 4, 0, i2p); tr = num2str(t_rate, 4, 0, i2p); - printf(", CR=%s/%s KB/s", tr, mr); + p += sprintf(p, ", CR=%s/%s KB/s", tr, mr); free(tr); free(mr); } else if (m_iops || t_iops) - printf(", CR=%d/%d IOPS", t_iops, m_iops); + p += sprintf(p, ", CR=%d/%d IOPS", t_iops, m_iops); if (eta_sec != INT_MAX && nr_running) { char perc_str[32]; char *iops_str[2]; @@ -375,11 +387,12 @@ void print_thread_status(void) iops_str[0] = num2str(iops[0], 4, 1, 0); iops_str[1] = num2str(iops[1], 4, 1, 0); - l = printf(": [%s] [%s] [%s/%s /s] [%s/%s iops] [eta %s]", + l = sprintf(p, ": [%s] [%s] [%s/%s /s] [%s/%s iops] [eta %s]", run_str, perc_str, rate_str[0], rate_str[1], iops_str[0], iops_str[1], eta_str); + p += l; if (l >= 0 && l < linelen_last) - printf("%*s", linelen_last - l, ""); + p += sprintf(p, "%*s", linelen_last - l, ""); linelen_last = l; free(rate_str[0]); @@ -387,11 +400,16 @@ void print_thread_status(void) free(iops_str[0]); free(iops_str[1]); } - printf("\r"); - fflush(stdout); + p += sprintf(p, "\r"); + + if (!is_backend) { + printf("%s", output); + fflush(stdout); + } else + fio_server_text_output(output, p - output); } -void print_status_init(int thread_number) +void print_status_init(int thr_number) { - run_str[thread_number] = 'P'; + run_str[thr_number] = 'P'; }