Re: [PATCH 1/2] ftrace/selftests: workaround cgroup RT scheduling issues

From: Masami Hiramatsu
Date: Fri Feb 07 2020 - 01:15:04 EST


On Thu, 6 Feb 2020 15:09:19 +0000
Alan Maguire <alan.maguire@xxxxxxxxxx> wrote:

> wakeup_rt.tc and wakeup.tc tests in tracers/ subdirectory
> fail due to the chrt command returning:
>
> chrt: failed to set pid 0's policy: Operation not permitted.
>
> To work around this, temporarily disable grout RT scheduling
> during ftracetest execution. Restore original value on
> test run completion. With these changes in place, both
> tests consistently pass.

OK, this looks good to me.

Acked-by: Masami Hiramatsu <mhiramat@xxxxxxxxxx>

Thanks!

>
> Fixes: c575dea2c1a5 ("selftests/ftrace: Add wakeup_rt tracer testcase")
> Fixes: c1edd060b413 ("selftests/ftrace: Add wakeup tracer testcase")
> Signed-off-by: Alan Maguire <alan.maguire@xxxxxxxxxx>
> ---
> tools/testing/selftests/ftrace/ftracetest | 23 +++++++++++++++++++++++
> 1 file changed, 23 insertions(+)
>
> diff --git a/tools/testing/selftests/ftrace/ftracetest b/tools/testing/selftests/ftrace/ftracetest
> index 063ecb2..3207bbf 100755
> --- a/tools/testing/selftests/ftrace/ftracetest
> +++ b/tools/testing/selftests/ftrace/ftracetest
> @@ -29,8 +29,26 @@ err_ret=1
> # kselftest skip code is 4
> err_skip=4
>
> +# cgroup RT scheduling prevents chrt commands from succeeding, which
> +# induces failures in test wakeup tests. Disable for the duration of
> +# the tests.
> +sched_rt_runtime=$(sysctl -n kernel.sched_rt_runtime_us)

OK, but can you

> +
> +set_sysctl() {
> + sysctl -qw ${1}=${2} >/dev/null 2>&1
> +}
> +
> +setup() {
> + set_sysctl kernel.sched_rt_runtime_us -1
> +}
> +
> +cleanup() {
> + set_sysctl kernel.sched_rt_runtime_us $sched_rt_runtime
> +}
> +
> errexit() { # message
> echo "Error: $1" 1>&2
> + cleanup
> exit $err_ret
> }
>
> @@ -39,6 +57,8 @@ if [ `id -u` -ne 0 ]; then
> errexit "this must be run by root user"
> fi
>
> +setup
> +
> # Utilities
> absdir() { # file_path
> (cd `dirname $1`; pwd)
> @@ -235,6 +255,7 @@ TOTAL_RESULT=0
>
> INSTANCE=
> CASENO=0
> +
> testcase() { # testfile
> CASENO=$((CASENO+1))
> desc=`grep "^#[ \t]*description:" $1 | cut -f2 -d:`
> @@ -406,5 +427,7 @@ prlog "# of unsupported: " `echo $UNSUPPORTED_CASES | wc -w`
> prlog "# of xfailed: " `echo $XFAILED_CASES | wc -w`
> prlog "# of undefined(test bug): " `echo $UNDEFINED_CASES | wc -w`
>
> +cleanup
> +
> # if no error, return 0
> exit $TOTAL_RESULT
> --
> 1.8.3.1
>


--
Masami Hiramatsu <mhiramat@xxxxxxxxxx>