2 # include <sys/utsname.h> 15 static void PPDouble(
int leftjustify,
double number,
char *append);
21 fprintf(
out_resultfile,
"access bw(MiB/s) IOPS Latency(s) block(KiB) xfer(KiB) open(s) wr/rd(s) close(s) total(s) iter\n");
22 fprintf(
out_resultfile,
"------ --------- ---- ---------- ---------- --------- -------- -------- -------- -------- ----\n");
33 for(
int i=0; i <
indent; i++){
74 if(value !=
NULL && value[0] != 0 && value[strlen(value) -1 ] ==
'\n'){
76 value[strlen(value) -1 ] = 0;
223 double *diff_subset,
double totalTime,
int rep){
255 struct utsname unamebuf;
265 fprintf(
out_resultfile,
"IOR-" META_VERSION
": MPI Coordinated Test of Parallel I/O\n");
270 for (i = 1; i < argc; i++) {
274 if (uname(&unamebuf) != 0) {
275 EWARN(
"uname failed");
283 unamebuf.version, unamebuf.machine);
290 fprintf(
out_logfile,
"Using unsynchronized POSIX timer\n");
292 if (MPI_WTIME_IS_GLOBAL) {
294 fprintf(
out_logfile,
"Using synchronized MPI timer\n");
297 fprintf(
out_logfile,
"Using unsynchronized MPI timer\n");
301 fprintf(
out_logfile,
"Start time skew across all tasks: %.02f sec\n",
326 if (strcasecmp(test->
api,
"DFS") &&
332 char* data_packets[] = {
"g",
"t",
"o",
"i"};
385 #ifdef HAVE_GPFS_FCNTL_H 404 fprintf(
out_logfile,
"Pairs deadlineForStonewallingaccessed: %ld\n", pairs_accessed);
428 PrintKeyVal(
"ordering inter file",
"no tasks offsets");
431 PrintKeyVal(
"ordering inter file",
"constant task offset");
435 PrintKeyVal(
"ordering inter file",
"random task offset");
456 #ifdef HAVE_LUSTRE_LUSTRE_USER_H 476 const double *vals,
const int access)
482 + (reps *
sizeof(double)));
484 ERR(
"malloc failed");
485 r->
val = (
double *)&r[1];
487 for (i = 0; i < reps; i++, measured++) {
492 / transfer_size / vals[i];
505 for (i = 0; i < reps; i++) {
509 r->
sd = sqrt(r->
var);
515 const double *vals,
const int access)
522 const double *vals,
const int access)
524 return bw_ops_values(reps, measured, transfer_size, vals, access);
543 double * times = malloc(
sizeof(
double)* reps);
544 long long stonewall_avg_data_accessed = 0;
545 double stonewall_time = 0;
546 for(
int i=0; i < reps; i++){
549 times[i] = point->
time;
554 bw =
bw_values(reps, results, times, access);
660 fprintf(
out_resultfile,
"%-9s %10s %10s %10s %10s %10s %10s %10s %10s %10s %10s %13s",
661 "Operation",
"Max(MiB)",
"Min(MiB)",
"Mean(MiB)",
"StdDev",
662 "Max(OPs)",
"Min(OPs)",
"Mean(OPs)",
"StdDev",
663 "Mean(s)",
"Stonewall(s)",
"Stonewall(MiB)");
664 fprintf(
out_resultfile,
" Test# #Tasks tPN reps fPP reord reordoff reordrand seed" 666 fprintf(
out_resultfile,
"%8s %8s %9s %5s",
" blksiz",
"xsize",
"aggs(MiB)",
"API");
689 for (tptr = tests_head; tptr !=
NULL; tptr = tptr->
next) {
700 double max_write_bw = 0.0;
701 double max_read_bw = 0.0;
713 for (i = 0; i < reps; i++) {
714 bw = (double)results[i].write.aggFileSizeForBW / results[i].
write.
time;
715 max_write_bw = MAX(bw, max_write_bw);
716 bw = (double)results[i].read.aggFileSizeForBW / results[i].
read.
time;
717 max_read_bw = MAX(bw, max_read_bw);
722 fprintf(
out_resultfile,
"Max Write: %.2f MiB/sec (%.2f MB/sec)\n",
749 char fileName[
MAX_STR] = { 0 };
751 int directoryFound =
FALSE;
757 i = strlen(fileName);
759 if (fileName[i] ==
'/') {
761 directoryFound =
TRUE;
767 if (directoryFound ==
FALSE) {
768 strcpy(fileName,
".");
798 static void PPDouble(
int leftjustify,
double number,
char *append)
811 else if (number < 3600)
816 sprintf(format,
"%%%s%d.%df%%s",
817 leftjustify ?
"-" :
"",
828 for (i = 0; i < len; i++) {
char * HumanReadable(IOR_offset_t value, int base)
IOR_offset_t setAlignment
int reorderTasksRandomSeed
long long stonewall_avg_data_accessed
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 PrintArrayStart()
void PrintRemoveTiming(double start, double finish, int rep)
static void PrintNextToken()
static struct results * bw_values(const int reps, IOR_results_t *measured, const double *vals, const int access)
int setTimeStampSignature
static void PrintKeyValInt(char *key, int64_t value)
char * stoneWallingStatusFile
static void PrintIndent()
static void PrintNamedArrayStart(char *key)
void ShowFileSystemSize(char *fileSystem)
IOR_offset_t aggFileSizeForBW
void ShowSetup(IOR_param_t *params)
char * CurrentTimeString(void)
static struct results * bw_ops_values(const int reps, IOR_results_t *measured, IOR_offset_t transfer_size, const double *vals, const int access)
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()
void PrintLongSummaryAllTests(IOR_test_t *tests_head)
void PrintReducedResult(IOR_test_t *test, int access, double bw, double iops, double latency, double *diff_subset, double totalTime, int rep)
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 void PrintLongSummaryOneOperation(IOR_test_t *test, const int access)
void PrintLongSummaryOneTest(IOR_test_t *test)
static struct results * ops_values(const int reps, IOR_results_t *measured, IOR_offset_t transfer_size, const double *vals, const int access)
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)