Include performance when stonewall is hit to output.

master
Julian M. Kunkel 2019-08-01 17:20:01 +01:00
parent b686b6c26a
commit 6c0fadc2a9
2 changed files with 20 additions and 9 deletions

View File

@ -18,8 +18,8 @@ static void PrintNextToken();
void PrintTableHeader(){ void PrintTableHeader(){
if (outputFormat == OUTPUT_DEFAULT){ if (outputFormat == OUTPUT_DEFAULT){
fprintf(out_resultfile, "\n"); fprintf(out_resultfile, "\n");
fprintf(out_resultfile, "access bw(MiB/s) block(KiB) xfer(KiB) open(s) wr/rd(s) close(s) total(s) iter\n"); fprintf(out_resultfile, "access bw(MiB/s) block(KiB) xfer(KiB) open(s) wr/rd(s) close(s) total(s) iter\n");
fprintf(out_resultfile, "------ --------- ---------- --------- -------- -------- -------- -------- ----\n"); fprintf(out_resultfile, "------ --------- ---------- --------- -------- -------- -------- -------- ----\n");
} }
} }
@ -534,10 +534,14 @@ static void PrintLongSummaryOneOperation(IOR_test_t *test, const int access)
reps = params->repetitions; reps = params->repetitions;
double * times = malloc(sizeof(double)* reps); double * times = malloc(sizeof(double)* reps);
long long stonewall_avg_data_accessed = 0;
double stonewall_time = 0;
for(int i=0; i < reps; i++){ for(int i=0; i < reps; i++){
IOR_point_t *point = (access == WRITE) ? &results[i].write : IOR_point_t *point = (access == WRITE) ? &results[i].write :
&results[i].read; &results[i].read;
times[i] = point->time; times[i] = point->time;
stonewall_time += point->stonewall_time;
stonewall_avg_data_accessed += point->stonewall_avg_data_accessed;
} }
bw = bw_values(reps, results, times, access); bw = bw_values(reps, results, times, access);
@ -558,6 +562,13 @@ static void PrintLongSummaryOneOperation(IOR_test_t *test, const int access)
fprintf(out_resultfile, "%10.2f ", ops->mean); fprintf(out_resultfile, "%10.2f ", ops->mean);
fprintf(out_resultfile, "%10.2f ", ops->sd); fprintf(out_resultfile, "%10.2f ", ops->sd);
fprintf(out_resultfile, "%10.5f ", mean_of_array_of_doubles(times, reps)); fprintf(out_resultfile, "%10.5f ", mean_of_array_of_doubles(times, reps));
if(test->params.stoneWallingWearOut){
fprintf(out_resultfile, "%10.2f ", stonewall_time / reps);
fprintf(out_resultfile, "%13.2f ", stonewall_avg_data_accessed / stonewall_time / MEBIBYTE);
}else{
fprintf(out_resultfile, "%10s ", "NA");
fprintf(out_resultfile, "%13s ", "NA");
}
fprintf(out_resultfile, "%5d ", params->id); fprintf(out_resultfile, "%5d ", params->id);
fprintf(out_resultfile, "%6d ", params->numTasks); fprintf(out_resultfile, "%6d ", params->numTasks);
fprintf(out_resultfile, "%3d ", params->tasksPerNode); fprintf(out_resultfile, "%3d ", params->tasksPerNode);
@ -603,6 +614,10 @@ static void PrintLongSummaryOneOperation(IOR_test_t *test, const int access)
PrintKeyValDouble("OPsMean", ops->mean); PrintKeyValDouble("OPsMean", ops->mean);
PrintKeyValDouble("OPsSD", ops->sd); PrintKeyValDouble("OPsSD", ops->sd);
PrintKeyValDouble("MeanTime", mean_of_array_of_doubles(times, reps)); PrintKeyValDouble("MeanTime", mean_of_array_of_doubles(times, reps));
if(test->params.stoneWallingWearOut){
PrintKeyValDouble("StoneWallTime", stonewall_time / reps);
PrintKeyValDouble("StoneWallbwMeanMIB", stonewall_avg_data_accessed / stonewall_time / MEBIBYTE);
}
PrintKeyValDouble("xsizeMiB", (double) point->aggFileSizeForBW / MEBIBYTE); PrintKeyValDouble("xsizeMiB", (double) point->aggFileSizeForBW / MEBIBYTE);
PrintEndSection(); PrintEndSection();
}else if (outputFormat == OUTPUT_CSV){ }else if (outputFormat == OUTPUT_CSV){
@ -635,10 +650,10 @@ void PrintLongSummaryHeader()
} }
fprintf(out_resultfile, "\n"); fprintf(out_resultfile, "\n");
fprintf(out_resultfile, "%-9s %10s %10s %10s %10s %10s %10s %10s %10s %10s", fprintf(out_resultfile, "%-9s %10s %10s %10s %10s %10s %10s %10s %10s %10s %10s %13s",
"Operation", "Max(MiB)", "Min(MiB)", "Mean(MiB)", "StdDev", "Operation", "Max(MiB)", "Min(MiB)", "Mean(MiB)", "StdDev",
"Max(OPs)", "Min(OPs)", "Mean(OPs)", "StdDev", "Max(OPs)", "Min(OPs)", "Mean(OPs)", "StdDev",
"Mean(s)"); "Mean(s)", "Stonewall(s)", "Stonewall(MiB)");
fprintf(out_resultfile, " Test# #Tasks tPN reps fPP reord reordoff reordrand seed" fprintf(out_resultfile, " Test# #Tasks tPN reps fPP reord reordoff reordrand seed"
" segcnt "); " segcnt ");
fprintf(out_resultfile, "%8s %8s %9s %5s", " blksiz", "xsize","aggs(MiB)", "API"); fprintf(out_resultfile, "%8s %8s %9s %5s", " blksiz", "xsize","aggs(MiB)", "API");

View File

@ -1400,7 +1400,7 @@ static void TestIoSys(IOR_test_t *test)
/* Get rankOffset [file offset] for this process to read, based on -C,-Z,-Q,-X options */ /* Get rankOffset [file offset] for this process to read, based on -C,-Z,-Q,-X options */
/* Constant process offset reading */ /* Constant process offset reading */
if (params->reorderTasks) { if (params->reorderTasks) {
/* move one node away from writing node */ /* move one node away from writing node */
int shift = 1; /* assume a by-node (round-robin) mapping of tasks to nodes */ int shift = 1; /* assume a by-node (round-robin) mapping of tasks to nodes */
if (params->tasksBlockMapping) { if (params->tasksBlockMapping) {
shift=params->tasksPerNode; /* switch to a by-slot (contiguous block) mapping */ shift=params->tasksPerNode; /* switch to a by-slot (contiguous block) mapping */
@ -1944,10 +1944,6 @@ static IOR_offset_t WriteOrRead(IOR_param_t *test, IOR_results_t *results,
point->stonewall_min_data_accessed /1024.0 / 1024 / 1024, point->stonewall_avg_data_accessed / 1024.0 / 1024 / 1024 / test->numTasks , point->stonewall_time); point->stonewall_min_data_accessed /1024.0 / 1024 / 1024, point->stonewall_avg_data_accessed / 1024.0 / 1024 / 1024 / test->numTasks , point->stonewall_time);
point->stonewall_min_data_accessed *= test->numTasks; point->stonewall_min_data_accessed *= test->numTasks;
} }
if(pairs_accessed_min == pairCnt){
point->stonewall_min_data_accessed = 0;
point->stonewall_avg_data_accessed = 0;
}
if(pairCnt != point->pairs_accessed){ if(pairCnt != point->pairs_accessed){
// some work needs still to be done ! // some work needs still to be done !
for(; pairCnt < point->pairs_accessed; pairCnt++ ) { for(; pairCnt < point->pairs_accessed; pairCnt++ ) {