Message ID | 8361c9b264ceb4c212319fcb366d85a854495ffe.1543912963.git.jstancek@redhat.com |
---|---|
State | Accepted |
Headers | show |
Series | [v4] fzsync: limit sampling time | expand |
On Tue, Dec 4, 2018 at 4:46 PM Jan Stancek <jstancek@redhat.com> wrote: > + float rem_p = 1 - tst_timeout_remaining() / pair->exec_time_start; > + > + if ((pair->exec_time_p * SAMPLING_SLICE < rem_p) > + && (pair->sampling > 0)) { > + tst_res(TINFO, "Stopped sampling at %d (out of %d) samples, " > + "sampling time reached 50% of the total time limit", > + pair->exec_loop, pair->min_samples); '50%' can not be quoted correctly here, since it makes compiler regard it as print symbol. Beside this tiny typo issue, I have no more comment for V4. LGTM. ../../include/tst_fuzzy_sync.h:592:3: warning: ' ' flag used with ‘%o’ gnu_printf format [-Wformat=] tst_res(TINFO, "Stopped sampling at %d (out of %d) samples, " ^ ../../include/tst_fuzzy_sync.h:592:3: warning: format ‘%o’ expects a matching ‘unsigned int’ argument [-Wformat=] # ./shmctl05 tst_test.c:1085: INFO: Timeout per run is 0h 00m 20s ../../../../../include/tst_fuzzy_sync.h:594: INFO: Stopped sampling at 166 (out of 1024) samples, sampling time reached 5036122336437f the total time limit
----- Original Message ----- > On Tue, Dec 4, 2018 at 4:46 PM Jan Stancek <jstancek@redhat.com> wrote: > > > + float rem_p = 1 - tst_timeout_remaining() / pair->exec_time_start; > > + > > + if ((pair->exec_time_p * SAMPLING_SLICE < rem_p) > > + && (pair->sampling > 0)) { > > + tst_res(TINFO, "Stopped sampling at %d (out of %d) samples, > > " > > + "sampling time reached 50% of the total time > > limit", > > + pair->exec_loop, pair->min_samples); > > '50%' can not be quoted correctly here, since it makes compiler regard > it as print symbol. Beside this tiny typo issue, I have no more > comment for V4. LGTM. *facepalm*, thanks for catching that. > > ../../include/tst_fuzzy_sync.h:592:3: warning: ' ' flag used with ‘%o’ > gnu_printf format [-Wformat=] > tst_res(TINFO, "Stopped sampling at %d (out of %d) samples, " > ^ > ../../include/tst_fuzzy_sync.h:592:3: warning: format ‘%o’ expects a > matching ‘unsigned int’ argument [-Wformat=] > > # ./shmctl05 > tst_test.c:1085: INFO: Timeout per run is 0h 00m 20s > ../../../../../include/tst_fuzzy_sync.h:594: INFO: Stopped sampling at > 166 (out of 1024) samples, sampling time reached 5036122336437f the > total time limit > > -- > Regards, > Li Wang >
----- Original Message ----- > Fixes: #429 > > Sampling can take considerably longer time on single CPU > and very slow systems. This patch limits sampling time to > 1/2 of fuzzing runtime. If we don't have enough samples by > that time, stop sampling and use stats we gathered so far. @Richard: Are you OK with v4 (with %% typo fixed)? > > Signed-off-by: Jan Stancek <jstancek@redhat.com> > --- > include/tst_fuzzy_sync.h | 21 ++++++++++++++------- > 1 file changed, 14 insertions(+), 7 deletions(-) > > Changes in v4: > - drop comment > - tweak info message when timeout is reached > > diff --git a/include/tst_fuzzy_sync.h b/include/tst_fuzzy_sync.h > index 03f69b78bc82..0e534bb041f8 100644 > --- a/include/tst_fuzzy_sync.h > +++ b/include/tst_fuzzy_sync.h > @@ -70,6 +70,9 @@ > #ifndef TST_FUZZY_SYNC_H__ > #define TST_FUZZY_SYNC_H__ > > +/* how much of exec time is sampling allowed to take */ > +#define SAMPLING_SLICE 0.5f > + > /** Some statistics for a variable */ > struct tst_fzsync_stat { > float avg; > @@ -582,17 +585,21 @@ static inline void tst_fzsync_wait_b(struct > tst_fzsync_pair *pair) > static inline int tst_fzsync_run_a(struct tst_fzsync_pair *pair) > { > int exit = 0; > + float rem_p = 1 - tst_timeout_remaining() / pair->exec_time_start; > + > + if ((pair->exec_time_p * SAMPLING_SLICE < rem_p) > + && (pair->sampling > 0)) { > + tst_res(TINFO, "Stopped sampling at %d (out of %d) samples, " > + "sampling time reached 50% of the total time limit", > + pair->exec_loop, pair->min_samples); > + pair->sampling = 0; > + tst_fzsync_pair_info(pair); > + } > > - if (pair->exec_time_p > - < 1 - tst_timeout_remaining() / pair->exec_time_start) { > + if (pair->exec_time_p < rem_p) { > tst_res(TINFO, > "Exceeded execution time, requesting exit"); > exit = 1; > - > - if (pair->sampling > 0) { > - tst_res(TWARN, > - "Still sampling, consider increasing LTP_TIMEOUT_MUL"); > - } > } > > if (++pair->exec_loop > pair->exec_loops) { > -- > 1.8.3.1 > > > -- > Mailing list info: https://lists.linux.it/listinfo/ltp >
Hell Jan, Jan Stancek <jstancek@redhat.com> writes: > ----- Original Message ----- >> Fixes: #429 >> >> Sampling can take considerably longer time on single CPU >> and very slow systems. This patch limits sampling time to >> 1/2 of fuzzing runtime. If we don't have enough samples by >> that time, stop sampling and use stats we gathered so far. > > @Richard: Are you OK with v4 (with %% typo fixed)? Yes, thanks. > >> >> Signed-off-by: Jan Stancek <jstancek@redhat.com> >> --- >> include/tst_fuzzy_sync.h | 21 ++++++++++++++------- >> 1 file changed, 14 insertions(+), 7 deletions(-) >> >> Changes in v4: >> - drop comment >> - tweak info message when timeout is reached >> >> diff --git a/include/tst_fuzzy_sync.h b/include/tst_fuzzy_sync.h >> index 03f69b78bc82..0e534bb041f8 100644 >> --- a/include/tst_fuzzy_sync.h >> +++ b/include/tst_fuzzy_sync.h >> @@ -70,6 +70,9 @@ >> #ifndef TST_FUZZY_SYNC_H__ >> #define TST_FUZZY_SYNC_H__ >> >> +/* how much of exec time is sampling allowed to take */ >> +#define SAMPLING_SLICE 0.5f >> + >> /** Some statistics for a variable */ >> struct tst_fzsync_stat { >> float avg; >> @@ -582,17 +585,21 @@ static inline void tst_fzsync_wait_b(struct >> tst_fzsync_pair *pair) >> static inline int tst_fzsync_run_a(struct tst_fzsync_pair *pair) >> { >> int exit = 0; >> + float rem_p = 1 - tst_timeout_remaining() / pair->exec_time_start; >> + >> + if ((pair->exec_time_p * SAMPLING_SLICE < rem_p) >> + && (pair->sampling > 0)) { >> + tst_res(TINFO, "Stopped sampling at %d (out of %d) samples, " >> + "sampling time reached 50% of the total time limit", >> + pair->exec_loop, pair->min_samples); >> + pair->sampling = 0; >> + tst_fzsync_pair_info(pair); >> + } >> >> - if (pair->exec_time_p >> - < 1 - tst_timeout_remaining() / pair->exec_time_start) { >> + if (pair->exec_time_p < rem_p) { >> tst_res(TINFO, >> "Exceeded execution time, requesting exit"); >> exit = 1; >> - >> - if (pair->sampling > 0) { >> - tst_res(TWARN, >> - "Still sampling, consider increasing LTP_TIMEOUT_MUL"); >> - } >> } >> >> if (++pair->exec_loop > pair->exec_loops) { >> -- >> 1.8.3.1 >> >> >> -- >> Mailing list info: https://lists.linux.it/listinfo/ltp >>
----- Original Message ----- > Hell Jan, > > Jan Stancek <jstancek@redhat.com> writes: > > > ----- Original Message ----- > >> Fixes: #429 > >> > >> Sampling can take considerably longer time on single CPU > >> and very slow systems. This patch limits sampling time to > >> 1/2 of fuzzing runtime. If we don't have enough samples by > >> that time, stop sampling and use stats we gathered so far. > > > > @Richard: Are you OK with v4 (with %% typo fixed)? > > Yes, thanks. Pushed. Regards, Jan
diff --git a/include/tst_fuzzy_sync.h b/include/tst_fuzzy_sync.h index 03f69b78bc82..0e534bb041f8 100644 --- a/include/tst_fuzzy_sync.h +++ b/include/tst_fuzzy_sync.h @@ -70,6 +70,9 @@ #ifndef TST_FUZZY_SYNC_H__ #define TST_FUZZY_SYNC_H__ +/* how much of exec time is sampling allowed to take */ +#define SAMPLING_SLICE 0.5f + /** Some statistics for a variable */ struct tst_fzsync_stat { float avg; @@ -582,17 +585,21 @@ static inline void tst_fzsync_wait_b(struct tst_fzsync_pair *pair) static inline int tst_fzsync_run_a(struct tst_fzsync_pair *pair) { int exit = 0; + float rem_p = 1 - tst_timeout_remaining() / pair->exec_time_start; + + if ((pair->exec_time_p * SAMPLING_SLICE < rem_p) + && (pair->sampling > 0)) { + tst_res(TINFO, "Stopped sampling at %d (out of %d) samples, " + "sampling time reached 50% of the total time limit", + pair->exec_loop, pair->min_samples); + pair->sampling = 0; + tst_fzsync_pair_info(pair); + } - if (pair->exec_time_p - < 1 - tst_timeout_remaining() / pair->exec_time_start) { + if (pair->exec_time_p < rem_p) { tst_res(TINFO, "Exceeded execution time, requesting exit"); exit = 1; - - if (pair->sampling > 0) { - tst_res(TWARN, - "Still sampling, consider increasing LTP_TIMEOUT_MUL"); - } } if (++pair->exec_loop > pair->exec_loops) {
Fixes: #429 Sampling can take considerably longer time on single CPU and very slow systems. This patch limits sampling time to 1/2 of fuzzing runtime. If we don't have enough samples by that time, stop sampling and use stats we gathered so far. Signed-off-by: Jan Stancek <jstancek@redhat.com> --- include/tst_fuzzy_sync.h | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) Changes in v4: - drop comment - tweak info message when timeout is reached