lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4a8dbb2f-9058-416b-8055-46a3afcae0d1@linaro.org>
Date: Fri, 20 Jun 2025 11:01:23 +0100
From: James Clark <james.clark@...aro.org>
To: Ian Rogers <irogers@...gle.com>
Cc: Peter Zijlstra <peterz@...radead.org>, Ingo Molnar <mingo@...hat.com>,
 Arnaldo Carvalho de Melo <acme@...nel.org>,
 Namhyung Kim <namhyung@...nel.org>, Mark Rutland <mark.rutland@....com>,
 Alexander Shishkin <alexander.shishkin@...ux.intel.com>,
 Jiri Olsa <jolsa@...nel.org>, Adrian Hunter <adrian.hunter@...el.com>,
 Kan Liang <kan.liang@...ux.intel.com>, linux-kernel@...r.kernel.org,
 linux-perf-users@...r.kernel.org
Subject: Re: [PATCH v2 2/2] perf test: Add sched latency and script shell
 tests



On 19/06/2025 1:20 am, Ian Rogers wrote:
> Add shell tests covering the `perf sched latency` and `perf sched
> script` commands. The test creates 2 noploop processes on the same
> forced CPU, it then checks that the process appears in the `perf
> sched` output.
> 
> Signed-off-by: Ian Rogers <irogers@...gle.com>
> ---
> v2: Skip the test if not root due to permissions.
> ---
>   tools/perf/tests/shell/sched.sh | 91 +++++++++++++++++++++++++++++++++
>   1 file changed, 91 insertions(+)
>   create mode 100755 tools/perf/tests/shell/sched.sh
> 
> diff --git a/tools/perf/tests/shell/sched.sh b/tools/perf/tests/shell/sched.sh
> new file mode 100755
> index 000000000000..0a4fe3f414e1
> --- /dev/null
> +++ b/tools/perf/tests/shell/sched.sh
> @@ -0,0 +1,91 @@
> +#!/bin/bash
> +# perf sched tests
> +# SPDX-License-Identifier: GPL-2.0
> +
> +set -e
> +
> +if [ "$(id -u)" != 0 ]; then
> +  echo "[Skip] No root permission"
> +  exit 2
> +fi
> +
> +err=0
> +perfdata=$(mktemp /tmp/__perf_test_sched.perf.data.XXXXX)
> +PID1=0
> +PID2=0
> +
> +cleanup() {
> +  rm -f "${perfdata}"
> +  rm -f "${perfdata}".old
> +
> +  trap - EXIT TERM INT
> +}
> +
> +trap_cleanup() {
> +  echo "Unexpected signal in ${FUNCNAME[1]}"
> +  cleanup
> +  exit 1
> +}
> +trap trap_cleanup EXIT TERM INT
> +
> +start_noploops() {
> +  # Start two noploop workloads on CPU0 to trigger scheduling.
> +  taskset -c 0 perf test -w noploop 10 &
> +  PID1=$!
> +  taskset -c 0 perf test -w noploop 10 &
> +  PID2=$!
> +
> +  if ! grep -q 'Cpus_allowed_list:\s*0$' "/proc/$PID1/status"

Hi Ian,

Because taskset is also run in the background it's possible to grep the 
proc file before it's managed to re-pin itself. I saw some intermittent 
failures of the test because of this.

I think you'd need to run noploop in the background but taskset in the 
foreground and give it the pid of noploop to make sure it finishes 
before grepping.

Other than that the test seems ok:

Reviewed-by: James Clark <james.clark@...aro.org>

Thanks
James

> +  then
> +    echo "Sched [Error taskset did not work for the 1st noploop ($PID1)]"
> +    grep Cpus_allowed /proc/$PID1/status
> +    err=1
> +  fi
> +
> +  if ! grep -q 'Cpus_allowed_list:\s*0$' "/proc/$PID2/status"
> +  then
> +    echo "Sched [Error taskset did not work for the 2nd noploop ($PID2)]"
> +    grep Cpus_allowed /proc/$PID2/status
> +    err=1
> +  fi
> +}
> +
> +cleanup_noploops() {
> +  kill "$PID1" "$PID2"
> +}
> +
> +test_sched_latency() {
> +  echo "Sched latency"
> +
> +  start_noploops
> +
> +  perf sched record --no-inherit -o "${perfdata}" sleep 1
> +  if ! perf sched latency -i "${perfdata}" | grep -q perf-noploop
> +  then
> +    echo "Sched latency [Failed missing output]"
> +    err=1
> +  fi
> +
> +  cleanup_noploops
> +}
> +
> +test_sched_script() {
> +  echo "Sched script"
> +
> +  start_noploops
> +
> +  perf sched record --no-inherit -o "${perfdata}" sleep 1
> +  if ! perf sched script -i "${perfdata}" | grep -q perf-noploop
> +  then
> +    echo "Sched script [Failed missing output]"
> +    err=1
> +  fi
> +
> +  cleanup_noploops
> +}
> +
> +test_sched_latency
> +test_sched_script
> +
> +cleanup
> +exit $err


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ