diff --git a/src/ior.c b/src/ior.c index 6aaf572..a6029cd 100755 --- a/src/ior.c +++ b/src/ior.c @@ -1690,6 +1690,41 @@ static struct results *bw_values(int reps, IOR_offset_t *agg_file_size, double * return r; } +static struct results *ops_values(int reps, IOR_offset_t *agg_file_size, + IOR_offset_t transfer_size, + double *vals) +{ + struct results *r; + int i; + + r = (struct results *)malloc(sizeof(struct results) + + (reps * sizeof(double))); + if (r == NULL) + ERR("malloc failed"); + r->val = (double *)&r[1]; + + for (i = 0; i < reps; i++) { + r->val[i] = (double)agg_file_size[i] / transfer_size / vals[i]; + if (i == 0) { + r->min = r->val[i]; + r->max = r->val[i]; + r->sum = 0.0; + } + r->min = MIN(r->min, r->val[i]); + r->max = MAX(r->max, r->val[i]); + r->sum += r->val[i]; + } + r->mean = r->sum / reps; + r->var = 0.0; + for (i = 0; i < reps; i++) { + r->var += pow((r->mean - r->val[i]), 2); + } + r->var = r->var / reps; + r->sd = sqrt(r->var); + + return r; +} + /* * Summarize results * @@ -1700,6 +1735,7 @@ static void PrintLongSummaryOneOperation(IOR_test_t *test, double *times, char * IOR_param_t *params = &test->params; IOR_results_t *results = test->results; struct results *bw; + struct results *ops; int reps; if (rank != 0 || verbose < VERBOSE_0) @@ -1708,12 +1744,18 @@ static void PrintLongSummaryOneOperation(IOR_test_t *test, double *times, char * reps = params->repetitions; bw = bw_values(reps, results->aggFileSizeForBW, times); + ops = ops_values(reps, results->aggFileSizeForBW, + params->transferSize, times); fprintf(stdout, "%-9s ", operation); fprintf(stdout, "%10.2f ", bw->max / MEBIBYTE); fprintf(stdout, "%10.2f ", bw->min / MEBIBYTE); fprintf(stdout, "%10.2f ", bw->mean / MEBIBYTE); fprintf(stdout, "%10.2f ", bw->sd / MEBIBYTE); + fprintf(stdout, "%10.2f ", ops->max); + fprintf(stdout, "%10.2f ", ops->min); + fprintf(stdout, "%10.2f ", ops->mean); + fprintf(stdout, "%10.2f ", ops->sd); fprintf(stdout, "%10.5f ", mean_of_array_of_doubles(times, reps)); fprintf(stdout, "%d ", params->id); @@ -1735,6 +1777,7 @@ static void PrintLongSummaryOneOperation(IOR_test_t *test, double *times, char * fflush(stdout); free(bw); + free(ops); } static void PrintLongSummaryOneTest(IOR_test_t *test) @@ -1754,8 +1797,9 @@ static void PrintLongSummaryHeader() return; fprintf(stdout, "\n"); - fprintf(stdout, "%-9s %10s %10s %10s %10s %10s", + fprintf(stdout, "%-9s %10s %10s %10s %10s %10s %10s %10s %10s %10s", "Operation", "Max(MiB)", "Min(MiB)", "Mean(MiB)", "StdDev", + "Max(OPs)", "Min(OPs)", "Mean(OPs)", "StdDev", "Mean(s)"); fprintf(stdout, " Test# #Tasks tPN reps fPP reord reordoff reordrand seed" " segcnt blksiz xsize aggsize API RefNum\n");