* [PATCH v4 0/2] Fix issues observed in selftests/amd-pstate
@ 2023-10-12 9:32 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
` (2 more replies)
0 siblings, 3 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
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(-)
--
2.34.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [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 related [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 related [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
* 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
end of thread, other threads:[~2023-10-16 19:08 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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 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
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.