rt-tests: pip_stress: Add option --usleep
PATCH 1/1 rt-tests: pip_stress: Add option --usleep
Different hardwares have different threasholds for usleep_val to reliably trigger an prio inversion, add option --usleep to allow specifying it at runtime, to facilitate testing of prio inheritance on different platforms.
--- src/pi_tests/pip_stress.8 | 6 +++++- src/pi_tests/pip_stress.c | 10 ++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-)
src/pi_tests/pip_stress.8 +5 -1
@@ -5,7 +5,8 @@ .B pip_stress \- Priority Inheritance with processes .SH SYNOPSIS .B pip_stress - +.RB [ \-u|\-\-usleep +.IR TIME ] .SH DESCRIPTION This program demonstrates the technique of using priority inheritance (PI) mutexes with processes instead of threads.
@@ -41,6 +42,9 @@ merely increase the time that the low priority process sleeps while holding the lock. (usleep); Also note that you have to run as a user with permission to change scheduling priorities. +.SH OPTIONS +.IP "\-u TIME,\-\-usleep=TIME" +Specify the sleep time of the low priority process. Defaults to 500(us). .BR .SH AUTHOR pip_stress was written by John Kacur <jkacur at redhat.com>
src/pi_tests/pip_stress.c +8 -2
@@ -72,7 +72,9 @@ static void usage(int error)printf ("pip_stress V %1.2f\n" ,VERSION );printf ("Usage:\n" "pip_stress <options>\n" \ -"-h --help Show this help menu.\n" +"-h --help Show this help menu.\n" \ +"-u TIME --usleep=TIME Specify the sleep time of the low priority process.\n" \ +" Defaults to 500(us).\n" );exit (error); }
@@ -88,16 +90,20 @@ int main(int argc, char *argv[])for (;;) {struct option long_options[] = { {"help" , no_argument,NULL ,'h' }, + {"usleep" , required_argument,NULL ,'u' }, {NULL ,0 ,NULL ,0 }, }; -int c =getopt_long (argc, argv,"s:h" , long_options,NULL ); +int c =getopt_long (argc, argv,"hu:" , long_options,NULL );if (c ==-1 )break ;switch (c) {case 'h' :usage (0 );break ; +case 'u' : + usleep_val = (useconds_t )strtoul (optarg,NULL ,10 ); +break ;default :usage (1 );break ;
Signature · 1 line
2.47.1
Quoted 10 lines · Shizhao Chen
Different hardwares have different threasholds for
usleep_valto reliably trigger an prio inversion, add option --usleep to allow specifying it at runtime, to facilitate testing of prio inheritance on different platforms.Signed-off-by Shizhao Chen <[email protected]>--- src/pi_tests/pip_stress.8 | 6 +++++- src/pi_tests/pip_stress.c | 10 ++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-)
Hmm, looks like there was an earlier attempt (53956b6712fef1, "pip_stress: parameterize usleep value to work-around platform issues") that was missing the actual call to getopt... and then another commit (1325cb7e9e3af08e, "Daniel Wagner <[email protected]>") that added getopt but removed usleep -- while also adding a "-s" option that does nothing. :-P
Some minor nits:
src/pi_tests/pip_stress.8 merely increase the time that the low priority process sleeps while · line 47
Quoted 7 lines
src/pi_tests/pip_stress.8 +3
-0@@ -41,6 +42,9 @@ merely increase the time that the low priority process sleeps while holding the lock. (usleep); Also note that you have to run as a user with permission to change scheduling priorities. +.SH OPTIONS +.IP "\-u TIME,\-\-usleep=TIME" +Specify the sleep time of the low priority process. Defaults to 500(us).
The unit should be part of the description, not the default:
Specify the sleep time in usec of the low priority process. Defaults to 500.
src/pi_tests/pip_stress.c static void usage(int error) · line 78
Quoted 5 lines
src/pi_tests/pip_stress.c +3
-1-"-h --help Show this help menu.\n" +"-h --help Show this help menu.\n" \ +"-u TIME --usleep=TIME Specify the sleep time of the low priority process.\n" \ +" Defaults to 500(us).\n" );
Likewise here
src/pi_tests/pip_stress.c int main(int argc, char *argv[]) · line 106
Quoted 3 lines
src/pi_tests/pip_stress.c +3
-0+case 'u' : + usleep_val = (useconds_t )strtoul (optarg,NULL ,10 ); +break ;
Why is this cast needed?
-Crystal
Quoted 13 lines · Crystal Wood
Quoted 10 lines · Shizhao Chen
Different hardwares have different threasholds for
usleep_valto reliably trigger an prio inversion, add option --usleep to allow specifying it at runtime, to facilitate testing of prio inheritance on different platforms.Signed-off-by Shizhao Chen <[email protected]>--- src/pi_tests/pip_stress.8 | 6 +++++- src/pi_tests/pip_stress.c | 10 ++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-)
Quoted 6 lines
Hmm, looks like there was an earlier attempt (
53956b6712fef1, "pip_stress: parameterize usleep value to work-around platform issues") that was missing the actual call to getopt... and then another commit (1325cb7e9e3af08e, "Daniel Wagner <[email protected]>") that added getopt but removed usleep -- while also adding a "-s" option that does nothing. :-P
Yeah I kinda stole the option from clark :)
Quoted 13 lines
Some minor nits:
src/pi_tests/pip_stress.8 merely increase the time that the low priority process sleeps while · line 47
Quoted 7 lines
src/pi_tests/pip_stress.8 +3
-0@@ -41,6 +42,9 @@ merely increase the time that the low priority process sleeps while holding the lock. (usleep); Also note that you have to run as a user with permission to change scheduling priorities. +.SH OPTIONS +.IP "\-u TIME,\-\-usleep=TIME" +Specify the sleep time of the low priority process. Defaults to 500(us).The unit should be part of the description, not the default:
Quoted 2 lines
Specify the sleep time in usec of the low priority process. Defaults to 500.
I hesitated several times whether I should add the (us) at the end, your version looks much better, thanks!
Quoted 7 lines
src/pi_tests/pip_stress.c static void usage(int error) · line 78
Quoted 6 lines
src/pi_tests/pip_stress.c +3
-1-"-h --help Show this help menu.\n" +"-h --help Show this help menu.\n" \ +"-u TIME --usleep=TIME Specify the sleep time of the low priority process.\n" \ +" Defaults to 500(us).\n" );
Quoted 7 lines
Likewise here
src/pi_tests/pip_stress.c int main(int argc, char *argv[]) · line 106
Quoted 3 lines
src/pi_tests/pip_stress.c +3
-0+case 'u' : + usleep_val = (useconds_t )strtoul (optarg,NULL ,10 ); +break ;Why is this cast needed?
It's not needed - just me being unfamiliar with C. :P I'll remove it.
Quoted 4 lines
-Crystal
PATCH v2 1/1 rt-tests: pip_stress: Add option --usleep
Different hardwares have different threasholds for usleep_val to reliably trigger an prio inversion, add option --usleep to allow specifying it at runtime, to facilitate testing of prio inheritance on different platforms.
--- src/pi_tests/pip_stress.8 | 6 +++++- src/pi_tests/pip_stress.c | 10 ++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-)
src/pi_tests/pip_stress.8 +5 -1
@@ -5,7 +5,8 @@ .B pip_stress \- Priority Inheritance with processes .SH SYNOPSIS .B pip_stress - +.RB [ \-u|\-\-usleep +.IR TIME ] .SH DESCRIPTION This program demonstrates the technique of using priority inheritance (PI) mutexes with processes instead of threads.
@@ -41,6 +42,9 @@ merely increase the time that the low priority process sleeps while holding the lock. (usleep); Also note that you have to run as a user with permission to change scheduling priorities. +.SH OPTIONS +.IP "\-u TIME,\-\-usleep=TIME" +Specify the sleep time in usec of the low priority process. Defaults to 500. .BR .SH AUTHOR pip_stress was written by John Kacur <jkacur at redhat.com>
src/pi_tests/pip_stress.c +8 -2
@@ -72,7 +72,9 @@ static void usage(int error)printf ("pip_stress V %1.2f\n" ,VERSION );printf ("Usage:\n" "pip_stress <options>\n" \ -"-h --help Show this help menu.\n" +"-h --help Show this help menu.\n" \ +"-u TIME --usleep=TIME Specify the sleep time in usec of the low priority process.\n" \ +" Defaults to 500.\n" );exit (error); }
@@ -88,16 +90,20 @@ int main(int argc, char *argv[])for (;;) {struct option long_options[] = { {"help" , no_argument,NULL ,'h' }, + {"usleep" , required_argument,NULL ,'u' }, {NULL ,0 ,NULL ,0 }, }; -int c =getopt_long (argc, argv,"s:h" , long_options,NULL ); +int c =getopt_long (argc, argv,"hu:" , long_options,NULL );if (c ==-1 )break ;switch (c) {case 'h' :usage (0 );break ; +case 'u' : + usleep_val =strtoul (optarg,NULL ,10 ); +break ;default :usage (1 );break ;
Signature · 1 line
2.47.1
Quoted 77 lines · Shizhao Chen
Different hardwares have different threasholds for
usleep_valto reliably trigger an prio inversion, add option --usleep to allow specifying it at runtime, to facilitate testing of prio inheritance on different platforms.Signed-off-by Shizhao Chen <[email protected]>--- src/pi_tests/pip_stress.8 | 6 +++++- src/pi_tests/pip_stress.c | 10 ++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-)src/pi_tests/pip_stress.8 +5
-1@@ -5,7 +5,8 @@ .B pip_stress \- Priority Inheritance with processes .SH SYNOPSIS .B pip_stress - +.RB [ \-u|\-\-usleep +.IR TIME ] .SH DESCRIPTION This program demonstrates the technique of using priority inheritance (PI) mutexes with processes instead of threads.@@ -41,6 +42,9 @@ merely increase the time that the low priority process sleeps while holding the lock. (usleep); Also note that you have to run as a user with permission to change scheduling priorities. +.SH OPTIONS +.IP "\-u TIME,\-\-usleep=TIME" +Specify the sleep time in usec of the low priority process. Defaults to 500. .BR .SH AUTHOR pip_stress was written by John Kacur <jkacur at redhat.com>src/pi_tests/pip_stress.c +8
-2@@ -72,7 +72,9 @@ static void usage(int error)printf ("pip_stress V %1.2f\n" ,VERSION );printf ("Usage:\n" "pip_stress <options>\n" \ -"-h --help Show this help menu.\n" +"-h --help Show this help menu.\n" \ +"-u TIME --usleep=TIME Specify the sleep time in usec of the low priority process.\n" \ +" Defaults to 500.\n" );exit (error); }@@ -88,16 +90,20 @@ int main(int argc, char *argv[])for (;;) {struct option long_options[] = { {"help" , no_argument,NULL ,'h' }, + {"usleep" , required_argument,NULL ,'u' }, {NULL ,0 ,NULL ,0 }, }; -int c =getopt_long (argc, argv,"s:h" , long_options,NULL ); +int c =getopt_long (argc, argv,"hu:" , long_options,NULL );if (c ==-1 )break ;switch (c) {case 'h' :usage (0 );break ; +case 'u' : + usleep_val =strtoul (optarg,NULL ,10 ); +break ;default :usage (1 );break ;Signature · 1 line
2.47.1