* [PATCH v4 1/2] selftests/amd-pstate: Fix broken paths to run workloads in amd-pstate-ut
2023-10-12 9:32 [PATCH v4 0/2] Fix issues observed in selftests/amd-pstate Swapnil Sapkal
@ 2023-10-12 9:32 ` Swapnil Sapkal
2023-10-12 14:45 ` Mario Limonciello
2023-10-12 9:32 ` [PATCH v4 2/2] selftests/amd-pstate: Added option to provide perf binary path Swapnil Sapkal
2023-10-16 19:08 ` [PATCH v4 0/2] Fix issues observed in selftests/amd-pstate Shuah Khan
2 siblings, 1 reply; 5+ messages in thread
From: Swapnil Sapkal @ 2023-10-12 9:32 UTC (permalink / raw)
To: ray.huang, shuah
Cc: sukrut.bellary, li.meng, gautham.shenoy, wyes.karny, Perry.Yuan,
Mario.Limonciello, linux-pm, linux-kernel, linux-kselftest,
Swapnil Sapkal
In selftests/amd-pstate, tbench and gitsource microbenchmarks are
used to compare the performance with different governors. In current
implementation the relative path to run `amd_pstate_tracer.py` is broken.
Fix this by using absolute paths.
Signed-off-by: Swapnil Sapkal <swapnil.sapkal@amd.com>
---
.../x86/amd_pstate_tracer/amd_pstate_trace.py | 3 +--
tools/testing/selftests/amd-pstate/gitsource.sh | 17 +++++++++++------
tools/testing/selftests/amd-pstate/run.sh | 9 ++++++---
tools/testing/selftests/amd-pstate/tbench.sh | 2 +-
4 files changed, 19 insertions(+), 12 deletions(-)
diff --git a/tools/power/x86/amd_pstate_tracer/amd_pstate_trace.py b/tools/power/x86/amd_pstate_tracer/amd_pstate_trace.py
index 904df0ea0a1e..feb9f9421c7b 100755
--- a/tools/power/x86/amd_pstate_tracer/amd_pstate_trace.py
+++ b/tools/power/x86/amd_pstate_tracer/amd_pstate_trace.py
@@ -30,8 +30,7 @@ import getopt
import Gnuplot
from numpy import *
from decimal import *
-sys.path.append('../intel_pstate_tracer')
-#import intel_pstate_tracer
+sys.path.append(os.path.join(os.path.dirname(__file__), "..", "intel_pstate_tracer"))
import intel_pstate_tracer as ipt
__license__ = "GPL version 2"
diff --git a/tools/testing/selftests/amd-pstate/gitsource.sh b/tools/testing/selftests/amd-pstate/gitsource.sh
index 5f2171f0116d..ab195ddcba4d 100755
--- a/tools/testing/selftests/amd-pstate/gitsource.sh
+++ b/tools/testing/selftests/amd-pstate/gitsource.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
# Testing and monitor the cpu desire performance, frequency, load,
@@ -66,12 +66,15 @@ post_clear_gitsource()
install_gitsource()
{
- if [ ! -d $git_name ]; then
+ if [ ! -d $SCRIPTDIR/$git_name ]; then
+ pushd $(pwd) > /dev/null 2>&1
+ cd $SCRIPTDIR
printf "Download gitsource, please wait a moment ...\n\n"
wget -O $git_tar $gitsource_url > /dev/null 2>&1
printf "Tar gitsource ...\n\n"
tar -xzf $git_tar
+ popd > /dev/null 2>&1
fi
}
@@ -79,12 +82,14 @@ install_gitsource()
run_gitsource()
{
echo "Launching amd pstate tracer for $1 #$2 tracer_interval: $TRACER_INTERVAL"
- ./amd_pstate_trace.py -n tracer-gitsource-$1-$2 -i $TRACER_INTERVAL > /dev/null 2>&1 &
+ $TRACER -n tracer-gitsource-$1-$2 -i $TRACER_INTERVAL > /dev/null 2>&1 &
printf "Make and test gitsource for $1 #$2 make_cpus: $MAKE_CPUS\n"
- cd $git_name
- perf stat -a --per-socket -I 1000 -e power/energy-pkg/ /usr/bin/time -o ../$OUTFILE_GIT.time-gitsource-$1-$2.log make test -j$MAKE_CPUS > ../$OUTFILE_GIT-perf-$1-$2.log 2>&1
- cd ..
+ BACKUP_DIR=$(pwd)
+ pushd $BACKUP_DIR > /dev/null 2>&1
+ cd $SCRIPTDIR/$git_name
+ perf stat -a --per-socket -I 1000 -e power/energy-pkg/ /usr/bin/time -o $BACKUP_DIR/$OUTFILE_GIT.time-gitsource-$1-$2.log make test -j$MAKE_CPUS > $BACKUP_DIR/$OUTFILE_GIT-perf-$1-$2.log 2>&1
+ popd > /dev/null 2>&1
for job in `jobs -p`
do
diff --git a/tools/testing/selftests/amd-pstate/run.sh b/tools/testing/selftests/amd-pstate/run.sh
index de4d8e9c9565..279d073c5728 100755
--- a/tools/testing/selftests/amd-pstate/run.sh
+++ b/tools/testing/selftests/amd-pstate/run.sh
@@ -8,9 +8,12 @@ else
FILE_MAIN=DONE
fi
-source basic.sh
-source tbench.sh
-source gitsource.sh
+SCRIPTDIR=`dirname "$0"`
+TRACER=$SCRIPTDIR/../../../power/x86/amd_pstate_tracer/amd_pstate_trace.py
+
+source $SCRIPTDIR/basic.sh
+source $SCRIPTDIR/tbench.sh
+source $SCRIPTDIR/gitsource.sh
# amd-pstate-ut only run on x86/x86_64 AMD systems.
ARCH=$(uname -m 2>/dev/null | sed -e 's/i.86/x86/' -e 's/x86_64/x86/')
diff --git a/tools/testing/selftests/amd-pstate/tbench.sh b/tools/testing/selftests/amd-pstate/tbench.sh
index 49c9850341f6..4d2e8ce2da3b 100755
--- a/tools/testing/selftests/amd-pstate/tbench.sh
+++ b/tools/testing/selftests/amd-pstate/tbench.sh
@@ -64,7 +64,7 @@ post_clear_tbench()
run_tbench()
{
echo "Launching amd pstate tracer for $1 #$2 tracer_interval: $TRACER_INTERVAL"
- ./amd_pstate_trace.py -n tracer-tbench-$1-$2 -i $TRACER_INTERVAL > /dev/null 2>&1 &
+ $TRACER -n tracer-tbench-$1-$2 -i $TRACER_INTERVAL > /dev/null 2>&1 &
printf "Test tbench for $1 #$2 time_limit: $TIME_LIMIT procs_num: $PROCESS_NUM\n"
tbench_srv > /dev/null 2>&1 &
--
2.34.1
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [PATCH v4 1/2] selftests/amd-pstate: Fix broken paths to run workloads in amd-pstate-ut
2023-10-12 9:32 ` [PATCH v4 1/2] selftests/amd-pstate: Fix broken paths to run workloads in amd-pstate-ut Swapnil Sapkal
@ 2023-10-12 14:45 ` Mario Limonciello
0 siblings, 0 replies; 5+ messages in thread
From: Mario Limonciello @ 2023-10-12 14:45 UTC (permalink / raw)
To: Swapnil Sapkal, ray.huang, shuah
Cc: sukrut.bellary, li.meng, gautham.shenoy, wyes.karny, Perry.Yuan,
linux-pm, linux-kernel, linux-kselftest
On 10/12/2023 04:32, Swapnil Sapkal wrote:
> In selftests/amd-pstate, tbench and gitsource microbenchmarks are
> used to compare the performance with different governors. In current
> implementation the relative path to run `amd_pstate_tracer.py` is broken.
> Fix this by using absolute paths.
>
> Signed-off-by: Swapnil Sapkal <swapnil.sapkal@amd.com>
Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
> ---
> .../x86/amd_pstate_tracer/amd_pstate_trace.py | 3 +--
> tools/testing/selftests/amd-pstate/gitsource.sh | 17 +++++++++++------
> tools/testing/selftests/amd-pstate/run.sh | 9 ++++++---
> tools/testing/selftests/amd-pstate/tbench.sh | 2 +-
> 4 files changed, 19 insertions(+), 12 deletions(-)
>
> diff --git a/tools/power/x86/amd_pstate_tracer/amd_pstate_trace.py b/tools/power/x86/amd_pstate_tracer/amd_pstate_trace.py
> index 904df0ea0a1e..feb9f9421c7b 100755
> --- a/tools/power/x86/amd_pstate_tracer/amd_pstate_trace.py
> +++ b/tools/power/x86/amd_pstate_tracer/amd_pstate_trace.py
> @@ -30,8 +30,7 @@ import getopt
> import Gnuplot
> from numpy import *
> from decimal import *
> -sys.path.append('../intel_pstate_tracer')
> -#import intel_pstate_tracer
> +sys.path.append(os.path.join(os.path.dirname(__file__), "..", "intel_pstate_tracer"))
> import intel_pstate_tracer as ipt
>
> __license__ = "GPL version 2"
> diff --git a/tools/testing/selftests/amd-pstate/gitsource.sh b/tools/testing/selftests/amd-pstate/gitsource.sh
> index 5f2171f0116d..ab195ddcba4d 100755
> --- a/tools/testing/selftests/amd-pstate/gitsource.sh
> +++ b/tools/testing/selftests/amd-pstate/gitsource.sh
> @@ -1,4 +1,4 @@
> -#!/bin/sh
> +#!/bin/bash
> # SPDX-License-Identifier: GPL-2.0
>
> # Testing and monitor the cpu desire performance, frequency, load,
> @@ -66,12 +66,15 @@ post_clear_gitsource()
>
> install_gitsource()
> {
> - if [ ! -d $git_name ]; then
> + if [ ! -d $SCRIPTDIR/$git_name ]; then
> + pushd $(pwd) > /dev/null 2>&1
> + cd $SCRIPTDIR
> printf "Download gitsource, please wait a moment ...\n\n"
> wget -O $git_tar $gitsource_url > /dev/null 2>&1
>
> printf "Tar gitsource ...\n\n"
> tar -xzf $git_tar
> + popd > /dev/null 2>&1
> fi
> }
>
> @@ -79,12 +82,14 @@ install_gitsource()
> run_gitsource()
> {
> echo "Launching amd pstate tracer for $1 #$2 tracer_interval: $TRACER_INTERVAL"
> - ./amd_pstate_trace.py -n tracer-gitsource-$1-$2 -i $TRACER_INTERVAL > /dev/null 2>&1 &
> + $TRACER -n tracer-gitsource-$1-$2 -i $TRACER_INTERVAL > /dev/null 2>&1 &
>
> printf "Make and test gitsource for $1 #$2 make_cpus: $MAKE_CPUS\n"
> - cd $git_name
> - perf stat -a --per-socket -I 1000 -e power/energy-pkg/ /usr/bin/time -o ../$OUTFILE_GIT.time-gitsource-$1-$2.log make test -j$MAKE_CPUS > ../$OUTFILE_GIT-perf-$1-$2.log 2>&1
> - cd ..
> + BACKUP_DIR=$(pwd)
> + pushd $BACKUP_DIR > /dev/null 2>&1
> + cd $SCRIPTDIR/$git_name
> + perf stat -a --per-socket -I 1000 -e power/energy-pkg/ /usr/bin/time -o $BACKUP_DIR/$OUTFILE_GIT.time-gitsource-$1-$2.log make test -j$MAKE_CPUS > $BACKUP_DIR/$OUTFILE_GIT-perf-$1-$2.log 2>&1
> + popd > /dev/null 2>&1
>
> for job in `jobs -p`
> do
> diff --git a/tools/testing/selftests/amd-pstate/run.sh b/tools/testing/selftests/amd-pstate/run.sh
> index de4d8e9c9565..279d073c5728 100755
> --- a/tools/testing/selftests/amd-pstate/run.sh
> +++ b/tools/testing/selftests/amd-pstate/run.sh
> @@ -8,9 +8,12 @@ else
> FILE_MAIN=DONE
> fi
>
> -source basic.sh
> -source tbench.sh
> -source gitsource.sh
> +SCRIPTDIR=`dirname "$0"`
> +TRACER=$SCRIPTDIR/../../../power/x86/amd_pstate_tracer/amd_pstate_trace.py
> +
> +source $SCRIPTDIR/basic.sh
> +source $SCRIPTDIR/tbench.sh
> +source $SCRIPTDIR/gitsource.sh
>
> # amd-pstate-ut only run on x86/x86_64 AMD systems.
> ARCH=$(uname -m 2>/dev/null | sed -e 's/i.86/x86/' -e 's/x86_64/x86/')
> diff --git a/tools/testing/selftests/amd-pstate/tbench.sh b/tools/testing/selftests/amd-pstate/tbench.sh
> index 49c9850341f6..4d2e8ce2da3b 100755
> --- a/tools/testing/selftests/amd-pstate/tbench.sh
> +++ b/tools/testing/selftests/amd-pstate/tbench.sh
> @@ -64,7 +64,7 @@ post_clear_tbench()
> run_tbench()
> {
> echo "Launching amd pstate tracer for $1 #$2 tracer_interval: $TRACER_INTERVAL"
> - ./amd_pstate_trace.py -n tracer-tbench-$1-$2 -i $TRACER_INTERVAL > /dev/null 2>&1 &
> + $TRACER -n tracer-tbench-$1-$2 -i $TRACER_INTERVAL > /dev/null 2>&1 &
>
> printf "Test tbench for $1 #$2 time_limit: $TIME_LIMIT procs_num: $PROCESS_NUM\n"
> tbench_srv > /dev/null 2>&1 &
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v4 2/2] selftests/amd-pstate: Added option to provide perf binary path
2023-10-12 9:32 [PATCH v4 0/2] Fix issues observed in selftests/amd-pstate Swapnil Sapkal
2023-10-12 9:32 ` [PATCH v4 1/2] selftests/amd-pstate: Fix broken paths to run workloads in amd-pstate-ut Swapnil Sapkal
@ 2023-10-12 9:32 ` Swapnil Sapkal
2023-10-16 19:08 ` [PATCH v4 0/2] Fix issues observed in selftests/amd-pstate Shuah Khan
2 siblings, 0 replies; 5+ messages in thread
From: Swapnil Sapkal @ 2023-10-12 9:32 UTC (permalink / raw)
To: ray.huang, shuah
Cc: sukrut.bellary, li.meng, gautham.shenoy, wyes.karny, Perry.Yuan,
Mario.Limonciello, linux-pm, linux-kernel, linux-kselftest,
Swapnil Sapkal, Mario Limonciello
In selftests/amd-pstate, distro `perf` is used to capture `perf stat`
while running microbenchmarks. Distro `perf` is not working with
upstream kernel. Fix this by providing an option to give the perf
binary path.
Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: Swapnil Sapkal <swapnil.sapkal@amd.com>
---
tools/testing/selftests/amd-pstate/gitsource.sh | 2 +-
tools/testing/selftests/amd-pstate/run.sh | 12 +++++++++---
tools/testing/selftests/amd-pstate/tbench.sh | 2 +-
3 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/tools/testing/selftests/amd-pstate/gitsource.sh b/tools/testing/selftests/amd-pstate/gitsource.sh
index ab195ddcba4d..4cde62f90468 100755
--- a/tools/testing/selftests/amd-pstate/gitsource.sh
+++ b/tools/testing/selftests/amd-pstate/gitsource.sh
@@ -88,7 +88,7 @@ run_gitsource()
BACKUP_DIR=$(pwd)
pushd $BACKUP_DIR > /dev/null 2>&1
cd $SCRIPTDIR/$git_name
- perf stat -a --per-socket -I 1000 -e power/energy-pkg/ /usr/bin/time -o $BACKUP_DIR/$OUTFILE_GIT.time-gitsource-$1-$2.log make test -j$MAKE_CPUS > $BACKUP_DIR/$OUTFILE_GIT-perf-$1-$2.log 2>&1
+ $PERF stat -a --per-socket -I 1000 -e power/energy-pkg/ /usr/bin/time -o $BACKUP_DIR/$OUTFILE_GIT.time-gitsource-$1-$2.log make test -j$MAKE_CPUS > $BACKUP_DIR/$OUTFILE_GIT-perf-$1-$2.log 2>&1
popd > /dev/null 2>&1
for job in `jobs -p`
diff --git a/tools/testing/selftests/amd-pstate/run.sh b/tools/testing/selftests/amd-pstate/run.sh
index 279d073c5728..b053eea8bb19 100755
--- a/tools/testing/selftests/amd-pstate/run.sh
+++ b/tools/testing/selftests/amd-pstate/run.sh
@@ -25,6 +25,7 @@ OUTFILE=selftest
OUTFILE_TBENCH="$OUTFILE.tbench"
OUTFILE_GIT="$OUTFILE.gitsource"
+PERF=/usr/bin/perf
SYSFS=
CPUROOT=
CPUFREQROOT=
@@ -154,6 +155,7 @@ help()
[-p <tbench process number>]
[-l <loop times for tbench>]
[-i <amd tracer interval>]
+ [-b <perf binary>]
[-m <comparative test: acpi-cpufreq>]
\n"
exit 2
@@ -161,7 +163,7 @@ help()
parse_arguments()
{
- while getopts ho:c:t:p:l:i:m: arg
+ while getopts ho:c:t:p:l:i:b:m: arg
do
case $arg in
h) # --help
@@ -192,6 +194,10 @@ parse_arguments()
TRACER_INTERVAL=$OPTARG
;;
+ b) # --perf-binary
+ PERF=`realpath $OPTARG`
+ ;;
+
m) # --comparative-test
COMPARATIVE_TEST=$OPTARG
;;
@@ -205,8 +211,8 @@ parse_arguments()
command_perf()
{
- if ! command -v perf > /dev/null; then
- echo $msg please install perf. >&2
+ if ! $PERF -v; then
+ echo $msg please install perf or provide perf binary path as argument >&2
exit $ksft_skip
fi
}
diff --git a/tools/testing/selftests/amd-pstate/tbench.sh b/tools/testing/selftests/amd-pstate/tbench.sh
index 4d2e8ce2da3b..2a98d9c9202e 100755
--- a/tools/testing/selftests/amd-pstate/tbench.sh
+++ b/tools/testing/selftests/amd-pstate/tbench.sh
@@ -68,7 +68,7 @@ run_tbench()
printf "Test tbench for $1 #$2 time_limit: $TIME_LIMIT procs_num: $PROCESS_NUM\n"
tbench_srv > /dev/null 2>&1 &
- perf stat -a --per-socket -I 1000 -e power/energy-pkg/ tbench -t $TIME_LIMIT $PROCESS_NUM > $OUTFILE_TBENCH-perf-$1-$2.log 2>&1
+ $PERF stat -a --per-socket -I 1000 -e power/energy-pkg/ tbench -t $TIME_LIMIT $PROCESS_NUM > $OUTFILE_TBENCH-perf-$1-$2.log 2>&1
pid=`pidof tbench_srv`
kill $pid
--
2.34.1
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [PATCH v4 0/2] Fix issues observed in selftests/amd-pstate
2023-10-12 9:32 [PATCH v4 0/2] Fix issues observed in selftests/amd-pstate Swapnil Sapkal
2023-10-12 9:32 ` [PATCH v4 1/2] selftests/amd-pstate: Fix broken paths to run workloads in amd-pstate-ut Swapnil Sapkal
2023-10-12 9:32 ` [PATCH v4 2/2] selftests/amd-pstate: Added option to provide perf binary path Swapnil Sapkal
@ 2023-10-16 19:08 ` Shuah Khan
2 siblings, 0 replies; 5+ messages in thread
From: Shuah Khan @ 2023-10-16 19:08 UTC (permalink / raw)
To: Swapnil Sapkal, ray.huang, shuah
Cc: sukrut.bellary, li.meng, gautham.shenoy, wyes.karny, Perry.Yuan,
Mario.Limonciello, linux-pm, linux-kernel, linux-kselftest,
Shuah Khan
On 10/12/23 03:32, Swapnil Sapkal wrote:
> This series fixes issues observed with selftests/amd-pstate while
> running performance comparison tests with different governors. First
> patch changes relative paths with absolute paths and also change it
> with correct paths wherever it is broken.
> The second patch adds an option to provide perf binary path to
> handle the case where distro perf does not work.
>
> Changelog v3->v4:
> * Addressed review comments from v3
>
> Swapnil Sapkal (2):
> selftests/amd-pstate: Fix broken paths to run workloads in
> amd-pstate-ut
> selftests/amd-pstate: Added option to provide perf binary path
>
> .../x86/amd_pstate_tracer/amd_pstate_trace.py | 3 +--
> .../testing/selftests/amd-pstate/gitsource.sh | 17 +++++++++------
> tools/testing/selftests/amd-pstate/run.sh | 21 +++++++++++++------
> tools/testing/selftests/amd-pstate/tbench.sh | 4 ++--
> 4 files changed, 29 insertions(+), 16 deletions(-)
>
Both applied to linux-kselftest next for Linux 6.7-rc1
thanks,
-- Shuah
^ permalink raw reply [flat|nested] 5+ messages in thread