stoneWallingWearOutIterations allows to read data back using the same number of iterations as used for the write with stoneWallingWearOut.

master
Julian Kunkel 2017-10-20 18:13:29 +02:00
parent aa0b8c92d2
commit 96e75cc832
3 changed files with 8 additions and 3 deletions

View File

@ -793,6 +793,7 @@ static void DisplayUsage(char **argv)
" -x singleXferAttempt -- do not retry transfer if incomplete",
" -X N reorderTasksRandomSeed -- random seed for -Z option",
" -y stoneWallingWearOut -- once the stonewalling timout is over, all process finish to access the amount of data",
" -1 stoneWallingWearOutIterations stop after processing this number of iterations, needed for reading data back written with -y",
" -Y fsyncPerWrite -- perform fsync after each POSIX write",
" -z randomOffset -- access is to random, not sequential, offsets within a file",
" -Z reorderTasksRandom -- changes task ordering to random ordering for readback",
@ -2635,13 +2636,13 @@ static IOR_offset_t WriteOrRead(IOR_param_t * test, IOR_results_t * results, voi
> test->deadlineForStonewalling));
/* loop over offsets to access */
while ((offsetArray[pairCnt] != -1) && !hitStonewall) {
while ((offsetArray[pairCnt] != -1) && !hitStonewall ) {
dataMoved += WriteOrReadSingle(pairCnt, offsetArray, pretendRank, & transferCount, & errors, test, fd, ioBuffers, access);
pairCnt++;
hitStonewall = ((test->deadlineForStonewalling != 0)
&& ((GetTimeStamp() - startForStonewall)
> test->deadlineForStonewalling));
> test->deadlineForStonewalling)) || (test->stoneWallingWearOutIterations != 0 && pairCnt == test->stoneWallingWearOutIterations) ;
}
if (test->stoneWallingWearOut){
MPI_CHECK(MPI_Allreduce(& pairCnt, &results->pairs_accessed,

View File

@ -142,6 +142,7 @@ typedef struct
int storeFileOffset; /* use file offset as stored signature */
int deadlineForStonewalling; /* max time in seconds to run any test phase */
int stoneWallingWearOut; /* wear out the stonewalling, once the timout is over, each process has to write the same amount */
int stoneWallingWearOutIterations; /* the number of iterations for the stonewallingWearOut, needed for readBack */
int maxTimeDuration; /* max time in minutes to run each test */
int outlierThreshold; /* warn on outlier N seconds from mean */
int verbose; /* verbosity */

View File

@ -432,7 +432,7 @@ IOR_test_t *ReadConfigScript(char *scriptName)
IOR_test_t *ParseCommandLine(int argc, char **argv)
{
static const char *opts =
"a:A:b:BcCd:D:eEf:FgG:hHi:Ij:J:kKl:mM:nN:o:O:pPqQ:rRs:St:T:uU:vVwWxX:YzZy";
"a:A:b:BcCd:D:eEf:FgG:hHi:Ij:J:kKl:mM:nN:o:O:pPqQ:rRs:St:T:uU:vVwWxX:YzZy1:";
int c, i;
static IOR_test_t *tests = NULL;
@ -612,6 +612,9 @@ IOR_test_t *ParseCommandLine(int argc, char **argv)
case 'X':
initialTestParams.reorderTasksRandomSeed = atoi(optarg);
break;
case '1':
initialTestParams.stoneWallingWearOutIterations = atoi(optarg);
break;
case 'y':
initialTestParams.stoneWallingWearOut = TRUE;
break;