2 # include <sys/utsname.h> 17 static void PPDouble(
int leftjustify,
double number,
char *append);
23 fprintf(
out_resultfile,
"access bw(MiB/s) block(KiB) xfer(KiB) open(s) wr/rd(s) close(s) total(s) iter\n");
24 fprintf(
out_resultfile,
"------ --------- ---------- --------- -------- -------- -------- -------- ----\n");
35 for(
int i=0; i <
indent; i++){
76 if(value !=
NULL && value[0] != 0 && value[strlen(value) -1 ] ==
'\n'){
78 value[strlen(value) -1 ] = 0;
246 fprintf(
out_resultfile,
"IOR-" META_VERSION
": MPI Coordinated Test of Parallel I/O\n");
252 struct utsname unamebuf;
262 for (i = 1; i < argc; i++) {
266 if (uname(&unamebuf) != 0) {
267 EWARN(
"uname failed");
275 unamebuf.version, unamebuf.machine);
282 fprintf(
out_logfile,
"Using unsynchronized POSIX timer\n");
284 if (MPI_WTIME_IS_GLOBAL) {
286 fprintf(
out_logfile,
"Using synchronized MPI timer\n");
289 fprintf(
out_logfile,
"Using unsynchronized MPI timer\n");
293 fprintf(
out_logfile,
"Start time skew across all tasks: %.02f sec\n",
323 char* data_packets[] = {
"g",
"t",
"o",
"i"};
376 #ifdef HAVE_GPFS_FCNTL_H 417 PrintKeyVal(
"ordering inter file",
"no tasks offsets");
420 PrintKeyVal(
"ordering inter file",
"constant task offset");
424 PrintKeyVal(
"ordering inter file",
"random task offset");
441 #ifdef HAVE_LUSTRE_LUSTRE_USER_H 479 double * times = malloc(
sizeof(
double)* reps);
480 for(
int i=0; i < reps; i++){
481 times[i] = *(
double*)((
char*) & results[i] + times_offset);
575 fprintf(
out_resultfile,
"%-9s %10s %10s %10s %10s %10s %10s %10s %10s %10s",
576 "Operation",
"Max(MiB)",
"Min(MiB)",
"Mean(MiB)",
"StdDev",
577 "Max(OPs)",
"Min(OPs)",
"Mean(OPs)",
"StdDev",
579 fprintf(
out_resultfile,
" Test# #Tasks tPN reps fPP reord reordoff reordrand seed" 581 fprintf(
out_resultfile,
"%8s %8s %9s %5s",
" blksiz",
"xsize",
"aggs(MiB)",
"API");
604 for (tptr = tests_head; tptr !=
NULL; tptr = tptr->
next) {
615 double max_write_bw = 0.0;
616 double max_read_bw = 0.0;
628 for (i = 0; i < reps; i++) {
629 bw = (double)results[i].aggFileSizeForBW / results[i].writeTime;
630 max_write_bw = MAX(bw, max_write_bw);
631 bw = (double)results[i].aggFileSizeForBW / results[i].readTime;
632 max_read_bw = MAX(bw, max_read_bw);
637 fprintf(
out_resultfile,
"Max Write: %.2f MiB/sec (%.2f MB/sec)\n",
664 char fileName[
MAX_STR] = { 0 };
666 int directoryFound =
FALSE;
672 i = strlen(fileName);
674 if (fileName[i] ==
'/') {
676 directoryFound =
TRUE;
682 if (directoryFound ==
FALSE) {
683 strcpy(fileName,
".");
713 static void PPDouble(
int leftjustify,
double number,
char *append)
726 else if (number < 3600)
731 sprintf(format,
"%%%s%d.%df%%s",
732 leftjustify ?
"-" :
"",
745 r = (
struct results *) malloc(
sizeof(
struct results) + (reps *
sizeof(double)));
747 ERR(
"malloc failed");
748 r->
val = (
double *)&r[1];
750 for (i = 0; i < reps; i++, measured++) {
752 r->
val[i] = (double) *((
IOR_offset_t*) ((
char*)measured + offset)) / vals[i];
764 for (i = 0; i < reps; i++) {
768 r->
sd = sqrt(r->
var);
781 + (reps *
sizeof(double)));
783 ERR(
"malloc failed");
784 r->
val = (
double *)&r[1];
786 for (i = 0; i < reps; i++, measured++) {
788 / transfer_size / vals[i];
800 for (i = 0; i < reps; i++) {
804 r->
sd = sqrt(r->
var);
815 for (i = 0; i < len; i++) {
char * HumanReadable(IOR_offset_t value, int base)
IOR_offset_t setAlignment
int reorderTasksRandomSeed
void PrintLongSummaryHeader()
void PrintHeader(int argc, char **argv)
IOR_offset_t segmentCount
static void PrintKeyValStart(char *key)
void DisplayFreespace(IOR_param_t *test)
enum OutputFormat_t outputFormat
void GetTestFileName(char *, IOR_param_t *)
static void PrintArrayNamedStart(char *key)
IOR_offset_t transferSize
static void PrintLongSummaryOneOperation(IOR_test_t *test, int times_offset, char *operation)
static void PrintArrayStart()
void PrintRemoveTiming(double start, double finish, int rep)
static void PrintNextToken()
void PrintReducedResult(IOR_test_t *test, int access, double bw, double *diff_subset, double totalTime, int rep)
int setTimeStampSignature
static void PrintKeyValInt(char *key, int64_t value)
char * stoneWallingStatusFile
static void PrintIndent()
static void PrintNamedArrayStart(char *key)
void ShowFileSystemSize(char *fileSystem)
void ShowSetup(IOR_param_t *params)
char * CurrentTimeString(void)
static void PPDouble(int leftjustify, double number, char *append)
static void PrintNamedSectionStart(char *key)
static double mean_of_array_of_doubles(double *values, int len)
double wall_clock_deviation
static void PrintArrayEnd()
IOR_offset_t expectedAggFileSize
static void PrintEndSection()
static void PrintStartSection()
static struct results * bw_values(int reps, IOR_results_t *measured, int offset, double *vals)
void PrintLongSummaryAllTests(IOR_test_t *tests_head)
void StoreStoneWallingIterations(char *const filename, int64_t count)
void PrintShortSummary(IOR_test_t *test)
enum PACKET_TYPE dataPacketType
void ShowTestStart(IOR_param_t *test)
static void PrintKeyVal(char *key, char *value)
static struct results * ops_values(int reps, IOR_results_t *measured, int offset, IOR_offset_t transfer_size, double *vals)
void PrintLongSummaryOneTest(IOR_test_t *test)
static void PrintKeyValEnd()
int deadlineForStonewalling
int Regex(char *string, char *pattern)
long long int IOR_offset_t
void ShowTestEnd(IOR_test_t *tptr)
static void PrintKeyValDouble(char *key, double value)