From 557e410291a316915ddf2916a9161075273bd1e7 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Thu, 10 Nov 2005 23:12:59 +0100 Subject: [PATCH] [PATCH] fio: display percent of agg bw a job got --- fio.c | 59 +++++++++++++++++++++++++++++++++-------------------------- fio.h | 7 +++++++ 2 files changed, 40 insertions(+), 26 deletions(-) diff --git a/fio.c b/fio.c index 8fc2f77..b5e0ee3 100644 --- a/fio.c +++ b/fio.c @@ -1453,7 +1453,8 @@ static int calc_lat(struct io_stat *is, unsigned long *min, unsigned long *max, return 1; } -static void show_thread_status(struct thread_data *td) +static void show_thread_status(struct thread_data *td, + struct group_run_stats *rs) { int prio, prio_class; unsigned long min, max, bw = 0; @@ -1474,8 +1475,12 @@ static void show_thread_status(struct thread_data *td) printf(" slat (msec): min=%5lu, max=%5lu, avg=%5.02f, dev=%5.02f\n", min, max, mean, dev); if (calc_lat(&td->clat_stat, &min, &max, &mean, &dev)) printf(" clat (msec): min=%5lu, max=%5lu, avg=%5.02f, dev=%5.02f\n", min, max, mean, dev); - if (calc_lat(&td->bw_stat, &min, &max, &mean, &dev)) - printf(" bw (KiB/s) : min=%5lu, max=%5lu, avg=%5.02f, dev=%5.02f\n", min, max, mean, dev); + if (calc_lat(&td->bw_stat, &min, &max, &mean, &dev)) { + double p_of_agg; + + p_of_agg = mean * 100 / (double) rs->agg[td->ddir]; + printf(" bw (KiB/s) : min=%5lu, max=%5lu, per=%3.2f%%, avg=%5.02f, dev=%5.02f\n", min, max, p_of_agg, mean, dev); + } if (td->runtime) { usr_cpu = (double) td->usr_time * 100 / (double) td->runtime; @@ -1701,13 +1706,6 @@ static void run_threads(char *argv[]) } } -struct group_run_stats { - unsigned long max_run[2], min_run[2]; - unsigned long max_bw[2], min_bw[2]; - unsigned long io_mb[2]; - unsigned long agg[2]; -}; - static void show_group_stats(struct group_run_stats *rs, int id) { printf("\nRun status group %d:\n", id); @@ -1721,6 +1719,7 @@ static void show_group_stats(struct group_run_stats *rs, int id) static void show_run_stats(void) { struct group_run_stats *runstats, *rs; + struct thread_data *td; int i; runstats = malloc(sizeof(struct group_run_stats) * (groupid + 1)); @@ -1734,30 +1733,30 @@ static void show_run_stats(void) } for (i = 0; i < thread_number; i++) { - struct thread_data *td = &threads[i]; unsigned long bw = 0; + td = &threads[i]; + + if (td->error) + continue; + rs = &runstats[td->groupid]; - if (!td->error) { - if (td->runtime < rs->min_run[td->ddir]) - rs->min_run[td->ddir] = td->runtime; - if (td->runtime > rs->max_run[td->ddir]) - rs->max_run[td->ddir] = td->runtime; + if (td->runtime < rs->min_run[td->ddir]) + rs->min_run[td->ddir] = td->runtime; + if (td->runtime > rs->max_run[td->ddir]) + rs->max_run[td->ddir] = td->runtime; - if (td->runtime) - bw = td->io_bytes / td->runtime; - if (bw < rs->min_bw[td->ddir]) - rs->min_bw[td->ddir] = bw; - if (bw > rs->max_bw[td->ddir]) - rs->max_bw[td->ddir] = bw; + if (td->runtime) + bw = td->io_bytes / td->runtime; + if (bw < rs->min_bw[td->ddir]) + rs->min_bw[td->ddir] = bw; + if (bw > rs->max_bw[td->ddir]) + rs->max_bw[td->ddir] = bw; - rs->io_mb[td->ddir] += td->io_bytes >> 20; - } + rs->io_mb[td->ddir] += td->io_bytes >> 20; - show_thread_status(td); } - for (i = 0; i < groupid + 1; i++) { rs = &runstats[i]; @@ -1768,6 +1767,14 @@ static void show_run_stats(void) show_group_stats(rs, i); } + + for (i = 0; i < thread_number; i++) { + td = &threads[i]; + rs = &runstats[td->groupid]; + + if (!td->error) + show_thread_status(td, rs); + } } int main(int argc, char *argv[]) diff --git a/fio.h b/fio.h index ddbf7d7..1cdf049 100644 --- a/fio.h +++ b/fio.h @@ -45,6 +45,13 @@ struct verify_header { char md5_digest[MD5_HASH_WORDS * 4]; }; +struct group_run_stats { + unsigned long max_run[2], min_run[2]; + unsigned long max_bw[2], min_bw[2]; + unsigned long io_mb[2]; + unsigned long agg[2]; +}; + struct thread_data { char file_name[256]; char directory[256]; -- 2.25.1