X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=stat.c;h=604c235b0c57a0551e28907cf3cf90f7420b5a19;hp=28d85c189f3fc0cf20ceb7dc7b40b4bd5c402cce;hb=84422acde41c9cf462245de115d425cf5a82124c;hpb=04a0feae73ca50d05914cc3c425b2a6949523204 diff --git a/stat.c b/stat.c index 28d85c18..604c235b 100644 --- a/stat.c +++ b/stat.c @@ -61,6 +61,8 @@ void update_rusage_stat(struct thread_data *td) ts->usr_time += mtime_since(&ts->ru_start.ru_utime, &ts->ru_end.ru_utime); ts->sys_time += mtime_since(&ts->ru_start.ru_stime, &ts->ru_end.ru_stime); ts->ctx += ts->ru_end.ru_nvcsw + ts->ru_end.ru_nivcsw - (ts->ru_start.ru_nvcsw + ts->ru_start.ru_nivcsw); + ts->minf += ts->ru_end.ru_minflt - ts->ru_start.ru_minflt; + ts->majf += ts->ru_end.ru_majflt - ts->ru_start.ru_majflt; memcpy(&ts->ru_start, &ts->ru_end, sizeof(ts->ru_end)); } @@ -82,7 +84,7 @@ static int calc_lat(struct io_stat *is, unsigned long *min, unsigned long *max, if (n > 1.0) *dev = sqrt(is->S / (n - 1.0)); else - *dev = -1.0; + *dev = 0; return 1; } @@ -197,19 +199,33 @@ static void show_ddir_status(struct group_run_stats *rs, struct thread_stat *ts, if (calc_lat(&ts->slat_stat[ddir], &min, &max, &mean, &dev)) { const char *base = "(usec)"; + char *minp, *maxp; if (!usec_to_msec(&min, &max, &mean, &dev)) base = "(msec)"; - log_info(" slat %s: min=%5lu, max=%5lu, avg=%5.02f, stdev=%5.02f\n", base, min, max, mean, dev); + minp = num2str(min, 6, 1, 0); + maxp = num2str(max, 6, 1, 0); + + log_info(" slat %s: min=%s, max=%s, avg=%5.02f, stdev=%5.02f\n", base, minp, maxp, mean, dev); + + free(minp); + free(maxp); } if (calc_lat(&ts->clat_stat[ddir], &min, &max, &mean, &dev)) { const char *base = "(usec)"; + char *minp, *maxp; if (!usec_to_msec(&min, &max, &mean, &dev)) base = "(msec)"; - log_info(" clat %s: min=%5lu, max=%5lu, avg=%5.02f, stdev=%5.02f\n", base, min, max, mean, dev); + minp = num2str(min, 6, 1, 0); + maxp = num2str(max, 6, 1, 0); + + log_info(" clat %s: min=%s, max=%s, avg=%5.02f, stdev=%5.02f\n", base, minp, maxp, mean, dev); + + free(minp); + free(maxp); } if (calc_lat(&ts->bw_stat[ddir], &min, &max, &mean, &dev)) { double p_of_agg; @@ -228,6 +244,8 @@ static void show_lat(double *io_u_lat, int nr, const char **ranges, if (io_u_lat[i] <= 0.0) continue; if (new_line) { + if (line) + log_info("\n"); log_info(" lat (%s): ", msg); new_line = 0; line = 0; @@ -239,7 +257,6 @@ static void show_lat(double *io_u_lat, int nr, const char **ranges, if (line == 5) new_line = 1; } - } static void show_lat_u(double *io_u_lat_u) @@ -262,6 +279,7 @@ static void show_lat_m(double *io_u_lat_m) static void show_latencies(double *io_u_lat_u, double *io_u_lat_m) { show_lat_u(io_u_lat_u); + log_info("\n"); show_lat_m(io_u_lat_m); log_info("\n"); } @@ -275,7 +293,8 @@ static void show_thread_status(struct thread_stat *ts, double io_u_lat_u[FIO_IO_U_LAT_U_NR]; double io_u_lat_m[FIO_IO_U_LAT_M_NR]; - if (!(ts->io_bytes[0] + ts->io_bytes[1])) + if (!(ts->io_bytes[0] + ts->io_bytes[1]) && + !(ts->total_io_u[0] + ts->total_io_u[1])) return; if (!ts->error) @@ -302,7 +321,7 @@ static void show_thread_status(struct thread_stat *ts, sys_cpu = 0; } - log_info(" cpu : usr=%3.2f%%, sys=%3.2f%%, ctx=%lu\n", usr_cpu, sys_cpu, ts->ctx); + log_info(" cpu : usr=%3.2f%%, sys=%3.2f%%, ctx=%lu, majf=%lu, minf=%lu\n", usr_cpu, sys_cpu, ts->ctx, ts->majf, ts->minf); stat_calc_dist(ts, io_u_dist); stat_calc_lat_u(ts, io_u_lat_u); @@ -371,7 +390,7 @@ static void show_thread_status_terse(struct thread_stat *ts, sys_cpu = 0; } - log_info(";%f%%;%f%%;%lu", usr_cpu, sys_cpu, ts->ctx); + log_info(";%f%%;%f%%;%lu;%lu;%lu", usr_cpu, sys_cpu, ts->ctx, ts->majf, ts->minf); stat_calc_dist(ts, io_u_dist); stat_calc_lat_u(ts, io_u_lat_u); @@ -515,6 +534,8 @@ void show_run_stats(void) ts->usr_time += td->ts.usr_time; ts->sys_time += td->ts.sys_time; ts->ctx += td->ts.ctx; + ts->majf += td->ts.majf; + ts->minf += td->ts.minf; for (k = 0; k < FIO_IO_U_MAP_NR; k++) ts->io_u_map[k] += td->ts.io_u_map[k];