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 singleXferAttempt -- do not retry transfer if incomplete",
" -X N reorderTasksRandomSeed -- random seed for -Z option", " -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", " -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", " -Y fsyncPerWrite -- perform fsync after each POSIX write",
" -z randomOffset -- access is to random, not sequential, offsets within a file", " -z randomOffset -- access is to random, not sequential, offsets within a file",
" -Z reorderTasksRandom -- changes task ordering to random ordering for readback", " -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)); > test->deadlineForStonewalling));
/* loop over offsets to access */ /* 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); dataMoved += WriteOrReadSingle(pairCnt, offsetArray, pretendRank, & transferCount, & errors, test, fd, ioBuffers, access);
pairCnt++; pairCnt++;
hitStonewall = ((test->deadlineForStonewalling != 0) hitStonewall = ((test->deadlineForStonewalling != 0)
&& ((GetTimeStamp() - startForStonewall) && ((GetTimeStamp() - startForStonewall)
> test->deadlineForStonewalling)); > test->deadlineForStonewalling)) || (test->stoneWallingWearOutIterations != 0 && pairCnt == test->stoneWallingWearOutIterations) ;
} }
if (test->stoneWallingWearOut){ if (test->stoneWallingWearOut){
MPI_CHECK(MPI_Allreduce(& pairCnt, &results->pairs_accessed, 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 storeFileOffset; /* use file offset as stored signature */
int deadlineForStonewalling; /* max time in seconds to run any test phase */ 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 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 maxTimeDuration; /* max time in minutes to run each test */
int outlierThreshold; /* warn on outlier N seconds from mean */ int outlierThreshold; /* warn on outlier N seconds from mean */
int verbose; /* verbosity */ int verbose; /* verbosity */

View File

@ -432,7 +432,7 @@ IOR_test_t *ReadConfigScript(char *scriptName)
IOR_test_t *ParseCommandLine(int argc, char **argv) IOR_test_t *ParseCommandLine(int argc, char **argv)
{ {
static const char *opts = 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; int c, i;
static IOR_test_t *tests = NULL; static IOR_test_t *tests = NULL;
@ -612,6 +612,9 @@ IOR_test_t *ParseCommandLine(int argc, char **argv)
case 'X': case 'X':
initialTestParams.reorderTasksRandomSeed = atoi(optarg); initialTestParams.reorderTasksRandomSeed = atoi(optarg);
break; break;
case '1':
initialTestParams.stoneWallingWearOutIterations = atoi(optarg);
break;
case 'y': case 'y':
initialTestParams.stoneWallingWearOut = TRUE; initialTestParams.stoneWallingWearOut = TRUE;
break; break;