Message ID | 20190605160617.22987-9-wagi@monom.org |
---|---|
State | New |
Headers | show |
Series | rt-tests: Add --duration argument to tests | expand |
On Wed, 5 Jun 2019, Daniel Wagner wrote: > Many of the test programs have the --loop argument for automatic > stopping. The main problem with the --loop argument is how long is > --loop 1000? > > To simplify automated tests introduce a --duration argument which > allows to set the time how long a test should run. This allows the > test suite to define the execution time and also the timeout which a > normal human can understand. > > For example run the test for 10 minutes and timeout at 11 minutes: > > # timeout 11m cyclicdeadline -D 10m > > Signed-off-by: Daniel Wagner <wagi@monom.org> > --- > src/sched_deadline/cyclicdeadline.c | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > diff --git a/src/sched_deadline/cyclicdeadline.c b/src/sched_deadline/cyclicdeadline.c > index 6d461b27ac43..47892daf747b 100644 > --- a/src/sched_deadline/cyclicdeadline.c > +++ b/src/sched_deadline/cyclicdeadline.c > @@ -21,6 +21,8 @@ > #include <linux/unistd.h> > #include <linux/magic.h> > > +#include <rt-utils.h> > + > #ifdef __i386__ > #ifndef __NR_sched_setattr > #define __NR_sched_setattr 351 > @@ -1049,6 +1051,7 @@ int main (int argc, char **argv) > unsigned int interval = 1000; > unsigned int step = 500; > int percent = 60; > + int duration = 0; > u64 runtime; > u64 start_period; > u64 end_period; > @@ -1062,7 +1065,7 @@ int main (int argc, char **argv) > exit(-1); > } > > - while ((c = getopt(argc, argv, "+hac:i:s:t:")) >= 0) { > + while ((c = getopt(argc, argv, "+hac:i:s:t:D:")) >= 0) { > switch (c) { > case 'a': > all_cpus = 1; > @@ -1081,6 +1084,9 @@ int main (int argc, char **argv) > case 't': > nr_threads = atoi(optarg); > break; > + case 'D': > + duration = parse_time_string(optarg); > + break; > case 'h': > default: > usage(argv); > @@ -1246,6 +1252,10 @@ int main (int argc, char **argv) > > signal(SIGINT, sighand); > signal(SIGTERM, sighand); > + signal(SIGALRM, sighand); > + > + if (duration) > + alarm(duration); > > if (!fail) > loop(sched_data, nr_threads); > -- > 2.20.1 > I fixed-up some dos like line endings you added in the man page, are you doing something weird with your editor? Other than that Signed-off-by: John Kacur <jkacur@redhat.com>
On Wed, 5 Jun 2019, Daniel Wagner wrote: > Many of the test programs have the --loop argument for automatic > stopping. The main problem with the --loop argument is how long is > --loop 1000? > > To simplify automated tests introduce a --duration argument which > allows to set the time how long a test should run. This allows the > test suite to define the execution time and also the timeout which a > normal human can understand. > > For example run the test for 10 minutes and timeout at 11 minutes: > > # timeout 11m cyclicdeadline -D 10m > > Signed-off-by: Daniel Wagner <wagi@monom.org> > --- > src/sched_deadline/cyclicdeadline.c | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > diff --git a/src/sched_deadline/cyclicdeadline.c b/src/sched_deadline/cyclicdeadline.c > index 6d461b27ac43..47892daf747b 100644 > --- a/src/sched_deadline/cyclicdeadline.c > +++ b/src/sched_deadline/cyclicdeadline.c > @@ -21,6 +21,8 @@ > #include <linux/unistd.h> > #include <linux/magic.h> > > +#include <rt-utils.h> > + > #ifdef __i386__ > #ifndef __NR_sched_setattr > #define __NR_sched_setattr 351 > @@ -1049,6 +1051,7 @@ int main (int argc, char **argv) > unsigned int interval = 1000; > unsigned int step = 500; > int percent = 60; > + int duration = 0; > u64 runtime; > u64 start_period; > u64 end_period; > @@ -1062,7 +1065,7 @@ int main (int argc, char **argv) > exit(-1); > } > > - while ((c = getopt(argc, argv, "+hac:i:s:t:")) >= 0) { > + while ((c = getopt(argc, argv, "+hac:i:s:t:D:")) >= 0) { > switch (c) { > case 'a': > all_cpus = 1; > @@ -1081,6 +1084,9 @@ int main (int argc, char **argv) > case 't': > nr_threads = atoi(optarg); > break; > + case 'D': > + duration = parse_time_string(optarg); > + break; > case 'h': > default: > usage(argv); > @@ -1246,6 +1252,10 @@ int main (int argc, char **argv) > > signal(SIGINT, sighand); > signal(SIGTERM, sighand); > + signal(SIGALRM, sighand); > + > + if (duration) > + alarm(duration); > > if (!fail) > loop(sched_data, nr_threads); > -- > 2.20.1 > I'm reluctantly giving you a signed-off-by. I say reluctantly because the program needs some work, so the problems exited before your patch, but it's a little hard to test your patch until these problems get resolved. I can't run this without getting the message For less than 2ms run times, you need to have HRTICK enabled in debugfs/sched_features - The usage message is broken - There is no help - There are no long options Anyone looking for place to start hacking, this program could use some love Signed-off-by: John Kacur <jkacur@redhat.com>
Hi John, On 6/13/19 4:18 PM, John Kacur wrote: > > > On Wed, 5 Jun 2019, Daniel Wagner wrote: > >> Many of the test programs have the --loop argument for automatic >> stopping. The main problem with the --loop argument is how long is >> --loop 1000? >> >> To simplify automated tests introduce a --duration argument which >> allows to set the time how long a test should run. This allows the >> test suite to define the execution time and also the timeout which a >> normal human can understand. >> >> For example run the test for 10 minutes and timeout at 11 minutes: >> >> # timeout 11m cyclicdeadline -D 10m >> >> Signed-off-by: Daniel Wagner <wagi@monom.org> >> --- >> src/sched_deadline/cyclicdeadline.c | 12 +++++++++++- >> 1 file changed, 11 insertions(+), 1 deletion(-) >> >> diff --git a/src/sched_deadline/cyclicdeadline.c b/src/sched_deadline/cyclicdeadline.c >> index 6d461b27ac43..47892daf747b 100644 >> --- a/src/sched_deadline/cyclicdeadline.c >> +++ b/src/sched_deadline/cyclicdeadline.c >> @@ -21,6 +21,8 @@ >> #include <linux/unistd.h> >> #include <linux/magic.h> >> >> +#include <rt-utils.h> >> + >> #ifdef __i386__ >> #ifndef __NR_sched_setattr >> #define __NR_sched_setattr 351 >> @@ -1049,6 +1051,7 @@ int main (int argc, char **argv) >> unsigned int interval = 1000; >> unsigned int step = 500; >> int percent = 60; >> + int duration = 0; >> u64 runtime; >> u64 start_period; >> u64 end_period; >> @@ -1062,7 +1065,7 @@ int main (int argc, char **argv) >> exit(-1); >> } >> >> - while ((c = getopt(argc, argv, "+hac:i:s:t:")) >= 0) { >> + while ((c = getopt(argc, argv, "+hac:i:s:t:D:")) >= 0) { >> switch (c) { >> case 'a': >> all_cpus = 1; >> @@ -1081,6 +1084,9 @@ int main (int argc, char **argv) >> case 't': >> nr_threads = atoi(optarg); >> break; >> + case 'D': >> + duration = parse_time_string(optarg); >> + break; >> case 'h': >> default: >> usage(argv); >> @@ -1246,6 +1252,10 @@ int main (int argc, char **argv) >> >> signal(SIGINT, sighand); >> signal(SIGTERM, sighand); >> + signal(SIGALRM, sighand); >> + >> + if (duration) >> + alarm(duration); >> >> if (!fail) >> loop(sched_data, nr_threads); >> -- >> 2.20.1 >> > > I fixed-up some dos like line endings you added in the man page, are you > doing something weird with your editor? Just guessing: my editor sees DOS encoding in the file and preserves the mode. I haven't had this problem before. Very strange. Sorry for the additional work. Thanks, Daniel
diff --git a/src/sched_deadline/cyclicdeadline.c b/src/sched_deadline/cyclicdeadline.c index 6d461b27ac43..47892daf747b 100644 --- a/src/sched_deadline/cyclicdeadline.c +++ b/src/sched_deadline/cyclicdeadline.c @@ -21,6 +21,8 @@ #include <linux/unistd.h> #include <linux/magic.h> +#include <rt-utils.h> + #ifdef __i386__ #ifndef __NR_sched_setattr #define __NR_sched_setattr 351 @@ -1049,6 +1051,7 @@ int main (int argc, char **argv) unsigned int interval = 1000; unsigned int step = 500; int percent = 60; + int duration = 0; u64 runtime; u64 start_period; u64 end_period; @@ -1062,7 +1065,7 @@ int main (int argc, char **argv) exit(-1); } - while ((c = getopt(argc, argv, "+hac:i:s:t:")) >= 0) { + while ((c = getopt(argc, argv, "+hac:i:s:t:D:")) >= 0) { switch (c) { case 'a': all_cpus = 1; @@ -1081,6 +1084,9 @@ int main (int argc, char **argv) case 't': nr_threads = atoi(optarg); break; + case 'D': + duration = parse_time_string(optarg); + break; case 'h': default: usage(argv); @@ -1246,6 +1252,10 @@ int main (int argc, char **argv) signal(SIGINT, sighand); signal(SIGTERM, sighand); + signal(SIGALRM, sighand); + + if (duration) + alarm(duration); if (!fail) loop(sched_data, nr_threads);
Many of the test programs have the --loop argument for automatic stopping. The main problem with the --loop argument is how long is --loop 1000? To simplify automated tests introduce a --duration argument which allows to set the time how long a test should run. This allows the test suite to define the execution time and also the timeout which a normal human can understand. For example run the test for 10 minutes and timeout at 11 minutes: # timeout 11m cyclicdeadline -D 10m Signed-off-by: Daniel Wagner <wagi@monom.org> --- src/sched_deadline/cyclicdeadline.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) -- 2.20.1