Split runpwtests.sh into separate testcases, eg. runpwtests01.sh.
Modification of pm_include.sh:
* Add check_kervel_arch() to check kernel version and architecture.
* Echo the result instead of using return from the is_multi_core etc.
* Use "tst_brkm TCONF" instead of "echo", when the current system
configuration doesn't support the test.
* In order to match the count of TPASS/TFAIL with the TST_COUNT
in each case, eg. runpwtests_exclusive01.sh, change "tst_resm
TPASS/TFAIL" to "echo" in analyze_package_consolidation_result
function etc.
* Change format.
Modification of power_management_tests/power_management_tests_exclusive
in runtest:
* Change runpwtests.sh to new testcases.
* Since I don't have suitable machines and can't test some cases'
correctness, eg runpwtests05.sh, currently these cases are
disabled.
Signed-off-by: Xing Gu <[email protected]>
---
runtest/power_management_tests | 8 +-
runtest/power_management_tests_exclusive | 7 +-
testcases/kernel/power_management/pm_include.sh | 154 ++++++---
testcases/kernel/power_management/runpwtests.sh | 380 ---------------------
testcases/kernel/power_management/runpwtests01.sh | 49 +++
testcases/kernel/power_management/runpwtests02.sh | 47 +++
testcases/kernel/power_management/runpwtests03.sh | 64 ++++
testcases/kernel/power_management/runpwtests04.sh | 37 ++
testcases/kernel/power_management/runpwtests05.sh | 82 +++++
testcases/kernel/power_management/runpwtests06.sh | 51 +++
.../power_management/runpwtests_exclusive01.sh | 103 ++++++
.../power_management/runpwtests_exclusive02.sh | 73 ++++
.../power_management/runpwtests_exclusive03.sh | 101 ++++++
.../power_management/runpwtests_exclusive04.sh | 58 ++++
.../power_management/runpwtests_exclusive05.sh | 103 ++++++
15 files changed, 883 insertions(+), 434 deletions(-)
delete mode 100755 testcases/kernel/power_management/runpwtests.sh
create mode 100755 testcases/kernel/power_management/runpwtests01.sh
create mode 100755 testcases/kernel/power_management/runpwtests02.sh
create mode 100755 testcases/kernel/power_management/runpwtests03.sh
create mode 100755 testcases/kernel/power_management/runpwtests04.sh
create mode 100755 testcases/kernel/power_management/runpwtests05.sh
create mode 100755 testcases/kernel/power_management/runpwtests06.sh
create mode 100755 testcases/kernel/power_management/runpwtests_exclusive01.sh
create mode 100755 testcases/kernel/power_management/runpwtests_exclusive02.sh
create mode 100755 testcases/kernel/power_management/runpwtests_exclusive03.sh
create mode 100755 testcases/kernel/power_management/runpwtests_exclusive04.sh
create mode 100755 testcases/kernel/power_management/runpwtests_exclusive05.sh
diff --git a/runtest/power_management_tests b/runtest/power_management_tests
index 5aa18bf..884e615 100644
--- a/runtest/power_management_tests
+++ b/runtest/power_management_tests
@@ -1 +1,7 @@
-POWER_MANAGEMENT runpwtests.sh
+#POWER_MANAGEMENT
+runpwtests01 runpwtests01.sh
+runpwtests02 runpwtests02.sh
+runpwtests03 runpwtests03.sh
+runpwtests04 runpwtests04.sh
+#runpwtests05 runpwtests05.sh
+runpwtests06 runpwtests06.sh
diff --git a/runtest/power_management_tests_exclusive
b/runtest/power_management_tests_exclusive
index a1692df..0eb0122 100644
--- a/runtest/power_management_tests_exclusive
+++ b/runtest/power_management_tests_exclusive
@@ -1 +1,6 @@
-POWER_MANAGEMENT runpwtests.sh -exclusive
+#POWER_MANAGEMENT exclusive
+runpwtests_exclusive01 runpwtests_exclusive01.sh
+runpwtests_exclusive02 runpwtests_exclusive02.sh
+runpwtests_exclusive03 runpwtests_exclusive03.sh
+runpwtests_exclusive04 runpwtests_exclusive04.sh
+runpwtests_exclusive05 runpwtests_exclusive05.sh
diff --git a/testcases/kernel/power_management/pm_include.sh
b/testcases/kernel/power_management/pm_include.sh
index b1867e6..366c914 100755
--- a/testcases/kernel/power_management/pm_include.sh
+++ b/testcases/kernel/power_management/pm_include.sh
@@ -15,9 +15,27 @@ cleanup() {
fi
}
+check_kervel_arch() {
+ # Checking required kernel version and architecture
+ tst_kvercmp 2 6 21; rc=$?
+ if [ $rc -ne 1 -a $rc -ne 2 ] ; then
+ tst_brkm TCONF "Kernel version not supported; not " \
+ "running testcases"
+ else
+ case "$(uname -m)" in
+ i[4-6]86|x86_64)
+ ;;
+ *)
+ tst_brkm TCONF "Arch not supported; not running " \
+ "testcases"
+ ;;
+ esac
+ fi
+}
+
check_config_options() {
if ( ! ${3} "${1}" ${2} | grep -v "#" > /dev/null ) ; then
- echo "NOSUPPORT: current system dosen't support ${1}"
+ tst_brkm TCONF "NOSUPPORT: current system dosen't support ${1}"
fi
}
@@ -30,7 +48,8 @@ get_topology() {
for cpu in $(seq 0 "${total_cpus}" )
do
cpus[$cpu]=cpu${cpu}
- phyid[$cpu]=$(cat
/sys/devices/system/cpu/cpu${cpu}/topology/physical_package_id)
+ phyid[$cpu]=$(cat \
+ /sys/devices/system/cpu/cpu${cpu}/topology/physical_package_id)
done
j=0
while [ "${j}" -lt "${total_cpus}" ]
@@ -50,24 +69,27 @@ check_cpufreq() {
for cpu in $(seq 0 "${total_cpus}" )
do
if [ ! -d /sys/devices/system/cpu/cpu${cpu}/cpufreq ] ; then
- echo "NOSUPPORT: cpufreq support not found please check
Kernel configuration or BIOS settings"
- exit $NOSUPPORT
+ tst_brkm TCONF "NOSUPPORT: cpufreq support not " \
+ "found please check Kernel configuration " \
+ "or BIOS settings"
fi
done
}
get_supporting_freq() {
- cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies
| uniq
+ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies \
+ | uniq
}
get_supporting_govr() {
- cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_governors |
uniq
+ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_governors \
+ | uniq
}
is_hyper_threaded() {
siblings=`cat /proc/cpuinfo | grep siblings | uniq | cut -f2 -d':'`
cpu_cores=`cat /proc/cpuinfo | grep "cpu cores" | uniq | cut -f2 -d':'`
- [ $siblings -gt $cpu_cores ]; return $?
+ [ $siblings -gt $cpu_cores ]; echo $?
}
check_input() {
@@ -102,35 +124,39 @@ check_input() {
}
is_multi_socket() {
- no_of_sockets=`cat
/sys/devices/system/cpu/cpu?/topology/physical_package_id | uniq | wc -l`
- [ $no_of_sockets -gt 1 ] ; return $?
+ no_of_sockets=`cat \
+ /sys/devices/system/cpu/cpu?/topology/physical_package_id \
+ | uniq | wc -l`
+ [ $no_of_sockets -gt 1 ] ; echo $?
}
is_multi_core() {
siblings=`cat /proc/cpuinfo | grep siblings | uniq | cut -f2 -d':'`
cpu_cores=`cat /proc/cpuinfo | grep "cpu cores" | uniq | cut -f2 -d':'`
if [ $siblings -eq $cpu_cores ]; then
- [ $cpu_cores -gt 1 ]; return $?
+ [ $cpu_cores -gt 1 ]; echo $?
else
: $(( num_of_cpus = siblings / cpu_cores ))
- [ $num_of_cpus -gt 1 ]; return $?
+ [ $num_of_cpus -gt 1 ]; echo $?
fi
}
is_dual_core() {
siblings=`cat /proc/cpuinfo | grep siblings | uniq | cut -f2 -d':'`
- cpu_cores=`cat /proc/cpuinfo | grep "cpu cores" | uniq | cut -f2 -d':'`
+ cpu_cores=`cat /proc/cpuinfo | grep "cpu cores" | uniq \
+ | cut -f2 -d':'`
if [ $siblings -eq $cpu_cores ]; then
- [ $cpu_cores -eq 2 ]; return $?
+ [ $cpu_cores -eq 2 ]; echo $?
else
: $(( num_of_cpus = siblings / cpu_cores ))
- [ $num_of_cpus -eq 2 ]; return $?
+ [ $num_of_cpus -eq 2 ]; echo $?
fi
}
get_kernel_version() {
# Get kernel minor version
- export kernel_version=`uname -r | awk -F. '{print $1"."$2"."$3}' | cut
-f1 -d'-'`
+ export kernel_version=`uname -r | awk -F. '{print $1"."$2"."$3}' \
+ | cut -f1 -d'-'`
}
get_valid_input() {
@@ -146,42 +172,46 @@ analyze_result_hyperthreaded() {
sched_mc=$1
pass_count=$2
sched_smt=$3
+ PASS="Test PASS"
+ FAIL="Test FAIL"
+ RC=0
case "$sched_mc" in
0)
case "$sched_smt" in
0)
if [ $pass_count -lt 5 ]; then
- tst_resm TPASS "cpu consolidation failed for
sched_mc=\
-$sched_mc & sched_smt=$sched_smt"
+ echo "${PASS}: cpu consolidation failed for" \
+ "sched_mc=$sched_mc &
sched_smt=$sched_smt"
else
RC=1
- tst_resm TFAIL "cpu consolidation passed for
sched_mc=\
-$sched_mc & sched_smt=$sched_smt"
+ echo "${FAIL}: cpu consolidation passed for" \
+ "sched_mc=$sched_mc &
sched_smt=$sched_smt"
fi
;;
*)
if [ $pass_count -lt 5 ]; then
- tst_resm TFAIL "cpu consolidation for sched_mc=\
-$sched_mc & sched_smt=$sched_smt"
- else
RC=1
- tst_resm TPASS "cpu consolidation for sched_mc=\
-$sched_mc & sched_smt=$sched_smt"
+ echo "${FAIL}: cpu consolidation for" \
+ "sched_mc=$sched_mc &
sched_smt=$sched_smt"
+ else
+ echo "${PASS}: cpu consolidation for" \
+ "sched_mc=$sched_mc &
sched_smt=$sched_smt"
fi
;;
esac ;;
*)
if [ $pass_count -lt 5 ]; then
- tst_resm TFAIL "cpu consolidation for sched_mc=\
-$sched_mc & sched_smt=$sched_smt"
- else
RC=1
- tst_resm TPASS "cpu consolidation for sched_mc=\
-$sched_mc & sched_smt=$sched_smt"
+ echo "${FAIL}: cpu consolidation for" \
+ "sched_mc=$sched_mc & sched_smt=$sched_smt"
+ else
+ echo "${PASS}: cpu consolidation for" \
+ "sched_mc=$sched_mc & sched_smt=$sched_smt"
fi
;;
esac
+ return $RC
}
analyze_package_consolidation_result() {
@@ -195,84 +225,104 @@ analyze_package_consolidation_result() {
sched_smt=-1
fi
+ PASS="Test PASS"
+ FAIL="Test FAIL"
+
+ RC=0
if [ $hyper_threaded -eq $YES -a $sched_smt -gt -1 ]; then
analyze_result_hyperthreaded $sched_mc $pass_count $sched_smt
else
case "$sched_mc" in
0)
if [ $pass_count -lt 5 ]; then
- tst_resm TPASS "cpu consolidation failed for sched_mc=\
-$sched_mc"
+ echo "${PASS}: cpu consolidation failed for" \
+ "sched_mc=$sched_mc"
else
RC=1
- tst_resm TFAIL "cpu consolidation passed for sched_mc=\
-$sched_mc"
- fi ;;
+ echo "${FAIL}: cpu consolidation passed for" \
+ "sched_mc=$sched_mc"
+ fi
+ ;;
*)
if [ $pass_count -lt 5 ]; then
- tst_resm TFAIL "Consolidation at package level
failed for \
-sched_mc=$sched_mc"
+ RC=1
+ echo "${FAIL}: consolidation at package level" \
+ "failed for sched_mc=$sched_mc"
else
- tst_resm TPASS "Consolidation at package level
passed for \
-sched_mc=$sched_mc"
+ echo "${PASS}: consolidation at package level" \
+ "passed for sched_mc=$sched_mc"
fi
;;
esac
fi
+ return $RC
}
analyze_core_consolidation_result() {
sched_smt=$1
pass_count=$2
+ PASS="Test PASS"
+ FAIL="Test FAIL"
+ RC=0
case "$sched_smt" in
0)
if [ $pass_count -lt 5 ]; then
- tst_resm TPASS "Consolidation at core level failed \
-when sched_smt=$sched_smt"
+ echo "${PASS}: consolidation at core level failed" \
+ "when sched_smt=$sched_smt"
else
- tst_resm TFAIL "Consolidation at core level passed for \
-sched_smt=$sched_smt"
+ RC=1
+ echo "${FAIL}: consolidation at core level passed for" \
+ "sched_smt=$sched_smt"
fi ;;
*)
if [ $pass_count -lt 5 ]; then
RC=1
- tst_resm TFAIL "Consolidation at core level failed for \
-sched_smt=$sched_smt"
+ echo "${FAIL}: consolidation at core level failed for" \
+ "sched_smt=$sched_smt"
else
- tst_resm TPASS "Consolidation at core level passed for \
-sched_smt=$sched_smt"
+ echo "${PASS}: consolidation at core level passed for" \
+ "sched_smt=$sched_smt"
fi ;;
esac
+ return $RC
}
analyze_sched_domain_result(){
sched_mc=$1
result=$2
sched_smt=$3
+ PASS="Test PASS"
+ FAIL="Test FAIL"
+ RC=0
if [ $hyper_threaded -eq $YES ]; then
if [ $sched_smt ]; then
if [ "$result" = 0 ];then
- tst_resm TPASS "sched domain test for
sched_mc=$sched_mc & sched_smt=$sched_smt"
+ echo "${PASS}: sched domain test for" \
+ "sched_mc=$sched_mc &
sched_smt=$sched_smt"
else
RC=1
- tst_resm TFAIL "sched domain test
sched_mc=$sched_mc & sched_smt=$sched_smt"
+ echo "${FAIL}: sched domain test for" \
+ "sched_mc=$sched_mc &
sched_smt=$sched_smt"
fi
else
if [ "$result" = 0 ];then
- tst_resm TPASS "sched domain test for
sched_mc=$sched_mc"
+ echo "${PASS}: sched domain test for" \
+ "sched_mc=$sched_mc"
else
RC=1
- tst_resm TFAIL "sched domain test for
sched_mc=$sched_mc"
+ echo "${FAIL}: sched domain test for" \
+ "sched_mc=$sched_mc"
fi
fi
else
if [ "$result" = 0 ];then
- tst_resm TPASS "sched domain test for
sched_mc=$sched_mc"
+ echo "${PASS}: sched domain test for sched_mc=$sched_mc"
else
RC=1
- tst_resm TFAIL "sched domain test sched_mc=$sched_mc"
+ echo "${FAIL}: sched domain test for sched_mc=$sched_mc"
fi
fi
+ return $RC
}
diff --git a/testcases/kernel/power_management/runpwtests.sh
b/testcases/kernel/power_management/runpwtests.sh
deleted file mode 100755
index 9055964..0000000
--- a/testcases/kernel/power_management/runpwtests.sh
+++ /dev/null
@@ -1,380 +0,0 @@
-#! /bin/sh
-################################################################################
-##
##
-## Copyright (c) International Business Machines Corp., 2001
##
-##
##
-## This program is free software; you can redistribute it and#or modify
##
-## it under the terms of the GNU General Public License as published by
##
-## the Free Software Foundation; either version 2 of the License, or
##
-## (at your option) any later version.
##
-##
##
-## This program is distributed in the hope that it will be useful, but
##
-## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
##
-## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
##
-## for more details.
##
-##
##
-## You should have received a copy of the GNU General Public License
##
-## along with this program; if not, write to the Free Software
##
-## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
USA ##
-##
##
-################################################################################
-#
-# File : runpwtests.sh
-#
-# Description:
-#
-# Author: Nageswara R Sastry <[email protected]>
-#
-# History: 26 Aug 2008 - Created this file
-# 03 Nov 2008 - Added CPUIDLE sysfs testcase
-#
-
-# Exporting Required variables
-export TST_TOTAL=1
-#LTPTMP=${TMP}
-export PATH=${PATH}:.
-export TCID="Power_Management"
-export TST_COUNT=0
-export contacts="[email protected]"
-export analysis="/proctstat"
-
-YES=0
-NO=1
-#List of reusable functions defined in pm_include.sh
-. pm_include.sh
-
-# Function: main
-#
-# Description: - Execute all tests, exit with test status.
-#
-# Exit: - zero on success
-# - non-zero on failure.
-#
-RC=0 #Return status
-
-# Checking required kernel version and architecture
-tst_kvercmp 2 6 21; rc=$?
-if [ $rc -ne 1 -a $rc -ne 2 ] ; then
- tst_resm TCONF "Kernel version not supported; not running testcases"
- exit 0
-else
- case "$(uname -m)" in
- i[4-6]86|x86_64)
- ;;
- *)
- tst_resm TCONF "Arch not supported; not running testcases"
- exit 0
- ;;
- esac
-fi
-
-tst_kvercmp 2 6 29; rc=$?
-if [ $rc -eq 2 ] ; then
- max_sched_mc=2
- max_sched_smt=2
-else
- max_sched_mc=1
- max_sched_smt=1
-fi
-
-tst_kvercmp 2 6 31; rc=$?
-if [ $rc -eq 1 -o $rc -eq 2 ] ; then
- timer_migr_support_compatible=1
-else
- timer_migr_support_compatible=0
-fi
-
-is_hyper_threaded; hyper_threaded=$?
-is_multi_socket; multi_socket=$?
-is_multi_core; multi_core=$?
-is_dual_core; dual_core=$?
-
-#Checking sched_mc sysfs interface
-#check_config.sh config_sched_mc || RC=$?
-TST_COUNT=1
-if [ $multi_socket -eq $YES -a $multi_core -eq $YES ] ; then
- if [ -f /sys/devices/system/cpu/sched_mc_power_savings ] ; then
- if test_sched_mc.sh ; then
- tst_resm TPASS "SCHED_MC sysfs tests"
- else
- RC=$?
- tst_resm TFAIL "SCHED_MC sysfs tests"
- fi
- else
- tst_resm TCONF "Required kernel configuration for SCHED_MC NOT set"
- fi
-else
- if [ -f /sys/devices/system/cpu/sched_mc_power_savings ] ; then
- tst_resm TFAIL "sched_mc_power_savings interface in system
which is not a multi socket &(/) multi core"
- else
- tst_resm TCONF "Not a suitable architecture for SCHED_MC test"
- fi
-fi
-
-# Test sched_smt_power_savings interface on HT machines
-: $(( TST_COUNT += 1 ))
-if [ $hyper_threaded -eq $YES ]; then
- if [ -f /sys/devices/system/cpu/sched_smt_power_savings ] ; then
- if test_sched_smt.sh; then
- tst_resm TPASS "SCHED_SMT sysfs test"
- else
- RC=$?
- tst_resm TFAIL "SCHED_SMT sysfs test"
- fi
- else
- RC=$?
- tst_resm TFAIL "Required kernel configuration for SCHED_SMT NOT
set"
- fi
-else
- if [ -f /sys/devices/system/cpu/sched_smt_power_savings ] ; then
- RC=$?
- tst_resm TFAIL "sched_smt_power_saving interface in system not
hyper-threaded"
- else
- tst_resm TCONF "Required Hyper Threading support for SCHED_SMT test"
- fi
-fi
-
-# Checking cpufreq sysfs interface files
-#check_config.sh config_cpu_freq || RC=$?
-: $(( TST_COUNT += 1 ))
-if [ -d /sys/devices/system/cpu/cpu0/cpufreq ] ; then
- if check_cpufreq_sysfs_files.sh; then
- tst_resm TPASS "CPUFREQ sysfs tests"
- else
- RC=$?
- tst_resm TFAIL "CPUFREQ sysfs tests "
- fi
-
- # Changing governors
- : $(( TST_COUNT += 1 ))
- if change_govr.sh; then
- tst_resm TPASS "Changing governors "
- else
- RC=$?
- tst_resm TFAIL "Changing governors "
- fi
-
- # Changing frequencies
- : $(( TST_COUNT += 1 ))
- if change_freq.sh ; then
- tst_resm TPASS "Changing frequncies "
- else
- RC=$?
- tst_resm TFAIL "Changing frequncies "
- fi
-
- # Loading and Unloading governor related kernel modules
- : $(( TST_COUNT += 1 ))
- if pwkm_load_unload.sh ; then
- tst_resm TPASS "Loading and Unloading of governor kernel \
-modules"
- else
- RC=$?
- tst_resm TFAIL "Loading and Unloading of governor kernel \
- modules got failed"
- fi
-else
- tst_resm TCONF "Required kernel configuration for CPU_FREQ NOT set"
-fi
-
-# Checking cpuidle sysfs interface files
-: $(( TST_COUNT+=1))
-if check_cpuidle_sysfs_files.sh ; then
- tst_resm TPASS "CPUIDLE sysfs tests passed"
-else
- RC=$?
- tst_resm TFAIL "CPUIDLE sysfs tests failed"
-fi
-
-# sched_domain test
-if ! type python > /dev/null ; then
- tst_resm TCONF "Python is not installed, CPU Consolidation\
-test cannot run"
-elif ! grep sched_debug -qw /proc/cmdline ; then
- tst_resm TCONF "Kernel cmdline parameter 'sched_debug' needed,\
-CPU Consolidation test cannot run"
-else
- if [ -f /sys/devices/system/cpu/sched_mc_power_savings ] ; then
- echo "max sched mc $max_sched_mc"
- for sched_mc in `seq 0 $max_sched_mc`; do
- : $(( TST_COUNT+=1))
- sched_domain.py -c $sched_mc; RC=$?
- analyze_sched_domain_result $sched_mc $RC
- if [ $hyper_threaded -eq $YES -a -f
/sys/devices/system/cpu/sched_smt_power_savings ]; then
- get_sched_values sched_smt; max_sched_smt=$?
- for sched_smt in `seq 0 $max_sched_smt`; do
- # Testcase to validate sched_domain tree
- : $(( TST_COUNT+=1))
- sched_domain.py -c $sched_mc -t
$sched_smt; RC=$?
- analyze_sched_domain_result $sched_mc
$RC $sched_smt ;
- done
- fi
- done
- fi
-fi
-
-: $(( TST_COUNT+=1))
-if [ -f /proc/sys/kernel/timer_migration ]; then
- if [ $timer_migr_support_compatible -eq $YES ]; then
- if test_timer_migration.sh; then
- tst_resm TPASS "Timer Migration interface test"
- else
- RC=$?
- tst_resm TFAIL "Timer migration interface test"
- fi
- fi
-else
- if [ $timer_migr_support_compatible -eq $YES ]; then
- RC=$?
- tst_resm TFAIL "Timer migration interface missing"
- else
- tst_resm TCONF "Kernel version does not support Timer migration"
- fi
-fi
-
-if [ $# -gt 0 -a "$1" = "-exclusive" ]; then
- # Test CPU consolidation
- if [ $multi_socket -eq $YES -a $multi_core -eq $YES ]; then
- for sched_mc in `seq 0 $max_sched_mc`; do
- : $(( TST_COUNT += 1 ))
- sched_mc_pass_cnt=0
- if [ $sched_mc -eq 2 ]; then
- work_load="kernbench"
- else
- work_load="ebizzy"
- fi
- for repeat_test in `seq 1 10`; do
- #Testcase to validate CPU consolidation for
sched_mc
- if cpu_consolidation.py -c $sched_mc -w
$work_load ; then
- : $(( sched_mc_pass_cnt += 1 ))
- fi
- done
- analyze_package_consolidation_result $sched_mc
$sched_mc_pass_cnt
-
- if [ $hyper_threaded -eq $YES ]; then
- for sched_smt in `seq 0 $max_sched_smt`; do
- : $(( TST_COUNT += 1 ))
- sched_mc_smt_pass_cnt=0
- for repeat_test in `seq 1 10`; do
- # Testcase to validate CPU
consolidation for
- # for sched_mc & sched_smt with
stress=50%
- if cpu_consolidation.py -c
$sched_mc -t $sched_smt -w $work_load; then
- : $((
sched_mc_smt_pass_cnt += 1 ))
- fi
- done
- analyze_package_consolidation_result
$sched_mc $sched_mc_smt_pass_cnt $sched_smt
- done
- fi
- done
-
- fi
-
- if [ $hyper_threaded -eq $YES -a $multi_socket -eq $YES -a $multi_core
-eq $NO ]; then
- #Testcase to validate consolidation at core level
- for sched_smt in `seq 0 $max_sched_smt`; do
- if [ $sched_smt -eq 2 ]; then
- work_load="kernbench"
- else
- work_load="ebizzy"
- fi
- sched_smt_pass_cnt=0
- : $(( TST_COUNT += 1 ))
- stress="thread"
- for repeat_test in `seq 1 10`; do
- if cpu_consolidation.py -t $sched_smt
-w $work_load -s $stress; then
- : $(( sched_smt_pass_cnt += 1 ))
- fi
- done
- analyze_core_consolidation_result $sched_smt
$sched_smt_pass_cnt
- done
- fi
-
- # Verify threads consolidation stops when sched_mc &(/) sched_smt is
disabled
- if [ $multi_socket -eq $YES -a $multi_core -eq $YES ]; then
- for sched_mc in `seq 1 $max_sched_mc`; do
- : $(( TST_COUNT += 1 ))
-
- # Vary sched_mc from 1/2 to 0 when workload is running
and ensure that
- # tasks do not consolidate to single package when
sched_mc is set to 0
- if cpu_consolidation.py -v -c $sched_mc; then
- tst_resm TPASS "CPU consolidation test by varying sched_mc
$sched_mc to 0"
- else
- tst_resm TFAIL "CPU consolidation test by varying sched_mc
$sched_mc to 0"
- fi
-
- if [ $hyper_threaded -eq $YES ]; then
- for sched_smt in `seq 1 $max_sched_smt`; do
- if [ $sched_smt -eq $sched_mc ]; then
- # Vary sched_mc & sched_smt
from 1 to 0 & 2 to 0 when workload is running and ensure that
- # tasks do not consolidate to single package
when sched_mc is set to 0
- : $(( TST_COUNT += 1 ))
- if cpu_consolidation.py -v -c
$sched_mc -t $sched_smt; then
- tst_resm TPASS "CPU
consolidation test by varying sched_mc \
-& sched_smt from $sched_mc to 0"
- else
- tst_resm TFAIL "CPU
consolidation test by varying sched_mc \
-& sched_smt from $sched_mc to 0"
- fi
- fi
- done
- fi
- done
- fi
-
- # Verify threads consolidation stops when sched_smt is disabled in HT
systems
- if [ $hyper_threaded -eq $YES -a $multi_socket -eq $YES ]; then
- # Vary only sched_smt from 1 to 0 when workload is running and
ensure that
- # tasks do not consolidate to single core when sched_smt is set
to 0
- : $(( TST_COUNT += 1 ))
- if cpu_consolidation.py -v -t 1; then
- tst_resm TPASS "CPU consolidation test by varying
sched_smt from 1 to 0"
- else
- tst_resm TFAIL "CPU consolidation test by varying
sched_smt from 1 to 0"
- fi
-
- # Vary only sched_smt from 2 to 0 when workload is running and ensure
that
- # tasks do not consolidate to single core when sched_smt is set to 0
- : $(( TST_COUNT += 1 ))
- if cpu_consolidation.py -v -t 2; then
- tst_resm TPASS "CPU consolidation test by varying sched_smt 2 to 0"
- else
- tst_resm TFAIL "CPU consolidation test by varying sched_smt 2 to 0"
- fi
-
- fi
-
- # Verify ILB runs in same package as workload
- if [ $multi_socket -eq $YES -a $multi_core -eq $YES ]; then
- for sched_mc in `seq 1 $max_sched_mc`; do
- : $(( TST_COUNT += 1 ))
- if [ $sched_mc -eq 2 ]; then
- work_load="kernbench"
- else
- work_load="ebizzy"
- fi
-
- ilb_test.py -c $sched_mc -w $work_load; RC=$?
- if [ $RC -eq 0 ]; then
- tst_resm TPASS "ILB & workload in same package
for sched_mc=$sched_mc"
- else
- tst_resm TFAIL "ILB & workload did not run in
same package for sched_mc=$sched_mc\
-. Ensure CONFIG_NO_HZ is set"
- fi
- if [ $hyper_threaded -eq $YES ]; then
- for sched_smt in `seq 1 $max_sched_smt`; do
- : $(( TST_COUNT += 1 ))
- ilb_test.py -c $sched_mc -t sched_smt
-w $work_load; RC=$?
- if [ $RC -eq 0 ]; then
- tst_resm TPASS "ILB & workload
in same package for sched_mc=$sched_mc \
-& sched_smt=$sched_smt"
- else
- tst_resm TFAIL "ILB & workload
did not execute in same package for \
-sched_mc=$sched_mc & sched_smt=$sched_smt. Ensure CONFIG_NO_HZ is set"
- fi
- done
- fi
- done
- fi
-fi
-
-exit $RC
diff --git a/testcases/kernel/power_management/runpwtests01.sh
b/testcases/kernel/power_management/runpwtests01.sh
new file mode 100755
index 0000000..7dc164c
--- /dev/null
+++ b/testcases/kernel/power_management/runpwtests01.sh
@@ -0,0 +1,49 @@
+#! /bin/sh
+#
+# Copyright (c) International Business Machines Corp., 2001
+# Author: Nageswara R Sastry <[email protected]>
+#
+# This program is free software; you can redistribute it and#or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+export TCID="Power_Management01"
+export TST_TOTAL=1
+
+. test.sh
+. pm_include.sh
+
+# Checking test environment
+check_kervel_arch
+
+# Checking sched_mc sysfs interface
+multi_socket=$(is_multi_socket)
+multi_core=$(is_multi_core)
+if [ ! -f /sys/devices/system/cpu/sched_mc_power_savings ] ; then
+ tst_brkm TCONF "Required kernel configuration for SCHED_MC" \
+ "NOT set"
+else
+ if [ $multi_socket -ne 0 -a $multi_core -ne 0 ] ; then
+ tst_brkm TCONF "sched_mc_power_savings interface in system" \
+ "which is not a multi socket &(/) multi core"
+ fi
+fi
+
+if test_sched_mc.sh ; then
+ tst_resm TPASS "SCHED_MC sysfs tests"
+else
+ tst_resm TFAIL "SCHED_MC sysfs tests"
+fi
+
+tst_exit
diff --git a/testcases/kernel/power_management/runpwtests02.sh
b/testcases/kernel/power_management/runpwtests02.sh
new file mode 100755
index 0000000..067569e
--- /dev/null
+++ b/testcases/kernel/power_management/runpwtests02.sh
@@ -0,0 +1,47 @@
+#! /bin/sh
+#
+# Copyright (c) International Business Machines Corp., 2001
+# Author: Nageswara R Sastry <[email protected]>
+#
+# This program is free software; you can redistribute it and#or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+export TCID="Power_Management02"
+export TST_TOTAL=1
+
+. test.sh
+. pm_include.sh
+
+# Checking test environment
+check_kervel_arch
+
+# Check sched_smt_power_savings interface on HT machines
+hyper_threaded=$(is_hyper_threaded)
+if [ ! -f /sys/devices/system/cpu/sched_smt_power_savings ] ; then
+ tst_brkm TCONF "Required kernel configuration for SCHED_SMT NOT set"
+else
+ if [ $hyper_threaded -ne 0 ]; then
+ tst_brkm TCONF "sched_smt_power_saving interface in system" \
+ "not hyper-threaded"
+ fi
+fi
+
+if test_sched_smt.sh ; then
+ tst_resm TPASS "SCHED_SMT sysfs test"
+else
+ tst_resm TFAIL "SCHED_SMT sysfs test"
+fi
+
+tst_exit
diff --git a/testcases/kernel/power_management/runpwtests03.sh
b/testcases/kernel/power_management/runpwtests03.sh
new file mode 100755
index 0000000..34fb1a4
--- /dev/null
+++ b/testcases/kernel/power_management/runpwtests03.sh
@@ -0,0 +1,64 @@
+#! /bin/sh
+#
+# Copyright (c) International Business Machines Corp., 2001
+# Author: Nageswara R Sastry <[email protected]>
+#
+# This program is free software; you can redistribute it and#or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+export TCID="Power_Management03"
+export TST_TOTAL=4
+
+. test.sh
+. pm_include.sh
+
+# Checking test environment
+check_kervel_arch
+
+# Checking cpufreq sysfs interface files
+if [ ! -d /sys/devices/system/cpu/cpu0/cpufreq ] ; then
+ tst_brkm TCONF "Required kernel configuration for CPU_FREQ NOT set"
+fi
+
+if check_cpufreq_sysfs_files.sh ; then
+ tst_resm TPASS "CPUFREQ sysfs tests"
+else
+ tst_resm TFAIL "CPUFREQ sysfs tests"
+fi
+
+# Changing governors
+if change_govr.sh ; then
+ tst_resm TPASS "Changing governors"
+else
+ tst_resm TFAIL "Changing governors"
+fi
+
+# Changing frequencies
+if change_freq.sh ; then
+ tst_resm TPASS "Changing frequncies"
+else
+ tst_resm TFAIL "Changing frequncies"
+fi
+
+# Loading and Unloading governor related kernel modules
+if pwkm_load_unload.sh ; then
+ tst_resm TPASS "Loading and Unloading of governor kernel" \
+ "modules"
+else
+ tst_resm TFAIL "Loading and Unloading of governor kernel" \
+ "modules got failed"
+fi
+
+tst_exit
diff --git a/testcases/kernel/power_management/runpwtests04.sh
b/testcases/kernel/power_management/runpwtests04.sh
new file mode 100755
index 0000000..eeb4b22
--- /dev/null
+++ b/testcases/kernel/power_management/runpwtests04.sh
@@ -0,0 +1,37 @@
+#! /bin/sh
+#
+# Copyright (c) International Business Machines Corp., 2001
+# Author: Nageswara R Sastry <[email protected]>
+#
+# This program is free software; you can redistribute it and#or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+export TCID="Power_Management04"
+export TST_TOTAL=1
+
+. test.sh
+. pm_include.sh
+
+# Checking test environment
+check_kervel_arch
+
+# Checking cpuidle sysfs interface files
+if check_cpuidle_sysfs_files.sh ; then
+ tst_resm TPASS "CPUIDLE sysfs tests passed"
+else
+ tst_resm TFAIL "CPUIDLE sysfs tests failed"
+fi
+
+tst_exit
diff --git a/testcases/kernel/power_management/runpwtests05.sh
b/testcases/kernel/power_management/runpwtests05.sh
new file mode 100755
index 0000000..c086e3c
--- /dev/null
+++ b/testcases/kernel/power_management/runpwtests05.sh
@@ -0,0 +1,82 @@
+#! /bin/sh
+#
+# Copyright (c) International Business Machines Corp., 2001
+# Author: Nageswara R Sastry <[email protected]>
+#
+# This program is free software; you can redistribute it and#or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+export TCID="Power_Management05"
+export TST_TOTAL=2
+
+. test.sh
+. pm_include.sh
+
+# Checking test environment
+check_kervel_arch
+
+tst_kvercmp 2 6 29; rc=$?
+if [ $rc -eq 2 ] ; then
+ max_sched_mc=2
+ max_sched_smt=2
+else
+ max_sched_mc=1
+ max_sched_smt=1
+fi
+
+tst_check_cmds python
+
+if ! grep sched_debug -qw /proc/cmdline ; then
+ tst_brkm TCONF "Kernel cmdline parameter 'sched_debug' needed," \
+ "CPU Consolidation test cannot run"
+fi
+
+hyper_threaded=$(is_hyper_threaded)
+if [ ! -f /sys/devices/system/cpu/sched_mc_power_savings \
+ -o $hyper_threaded -ne 0 ] ; then
+ tst_brkm TCONF "Required kernel configuration for SCHED_MC" \
+ "NOT set, or sched_mc_power_savings interface in system" \
+ "which is not hyper-threaded"
+fi
+
+# sched_domain test
+echo "max sched mc $max_sched_mc"
+RC=0
+for sched_mc in `seq 0 $max_sched_mc`; do
+ sched_domain.py -c $sched_mc; ret=$?
+ analyze_sched_domain_result $sched_mc $ret; RC=$?
+done
+if [ $RC -eq 0 ]; then
+ tst_resm TPASS "Sched_domain test for sched_mc"
+else
+ tst_resm TFAIL "Sched_domain test for sched_mc"
+fi
+
+# Testcase to validate sched_domain tree
+RC=0
+for sched_mc in `seq 0 $max_sched_mc`; do
+ get_sched_values sched_smt; max_sched_smt=$?
+ for sched_smt in `seq 0 $max_sched_smt`; do
+ sched_domain.py -c $sched_mc -t $sched_smt; ret=$?
+ analyze_sched_domain_result $sched_mc $ret $sched_smt; RC=$?
+ done
+done
+if [ $RC -eq 0 ]; then
+ tst_resm TPASS "Sched_domain test for sched_mc & sched_smt"
+else
+ tst_resm TFAIL "Sched_domain test for sched_mc & sched_smt"
+fi
+
+tst_exit
diff --git a/testcases/kernel/power_management/runpwtests06.sh
b/testcases/kernel/power_management/runpwtests06.sh
new file mode 100755
index 0000000..ab5d7de
--- /dev/null
+++ b/testcases/kernel/power_management/runpwtests06.sh
@@ -0,0 +1,51 @@
+#! /bin/sh
+#
+# Copyright (c) International Business Machines Corp., 2001
+# Author: Nageswara R Sastry <[email protected]>
+#
+# This program is free software; you can redistribute it and#or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+export TCID="Power_Management06"
+export TST_TOTAL=1
+
+. test.sh
+. pm_include.sh
+
+# Checking test environment
+check_kervel_arch
+
+tst_kvercmp 2 6 31; rc=$?
+if [ $rc -eq 1 -o $rc -eq 2 ] ; then
+ timer_migr_support_compatible=0
+else
+ timer_migr_support_compatible=1
+fi
+
+if [ $timer_migr_support_compatible -eq 1 ]; then
+ tst_brkm TCONF "Kernel version does not support Timer migration"
+else
+ if [ ! -f /proc/sys/kernel/timer_migration ]; then
+ tst_brkm TBROK "Timer migration interface missing"
+ fi
+fi
+
+if test_timer_migration.sh; then
+ tst_resm TPASS "Timer Migration interface test"
+else
+ tst_resm TFAIL "Timer migration interface test"
+fi
+
+tst_exit
diff --git a/testcases/kernel/power_management/runpwtests_exclusive01.sh
b/testcases/kernel/power_management/runpwtests_exclusive01.sh
new file mode 100755
index 0000000..27876bf
--- /dev/null
+++ b/testcases/kernel/power_management/runpwtests_exclusive01.sh
@@ -0,0 +1,103 @@
+#! /bin/sh
+#
+# Copyright (c) International Business Machines Corp., 2001
+# Author: Nageswara R Sastry <[email protected]>
+#
+# This program is free software; you can redistribute it and#or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+export TCID="Power_Management_exclusive01"
+export TST_TOTAL=2
+
+. test.sh
+. pm_include.sh
+
+# Checking test environment
+check_kervel_arch
+
+tst_kvercmp 2 6 29; rc=$?
+if [ $rc -eq 2 ] ; then
+ max_sched_mc=2
+ max_sched_smt=2
+else
+ max_sched_mc=1
+ max_sched_smt=1
+fi
+
+tst_check_cmds python
+
+hyper_threaded=$(is_hyper_threaded)
+multi_socket=$(is_multi_socket)
+multi_core=$(is_multi_core)
+if [ $multi_socket -ne 0 -o $multi_core -ne 0 -o \
+ $hyper_threaded -ne 0 ]; then
+ tst_brkm TCONF "System is not a multi socket & multi core" \
+ "& hyper-threaded"
+fi
+
+# Test CPU consolidation
+RC=0
+for sched_mc in `seq 0 $max_sched_mc`; do
+ sched_mc_pass_cnt=0
+ if [ $sched_mc -eq 2 ]; then
+ work_load="kernbench"
+ else
+ work_load="ebizzy"
+ fi
+ for repeat_test in `seq 1 10`; do
+ #Testcase to validate CPU consolidation for sched_mc
+ if cpu_consolidation.py -c $sched_mc -w $work_load ; then
+ : $(( sched_mc_pass_cnt += 1 ))
+ fi
+ done
+ analyze_package_consolidation_result $sched_mc \
+ $sched_mc_pass_cnt; RC=$?
+done
+if [ $RC -eq 0 ]; then
+ tst_resm TPASS "CPU consolidation test for sched_mc"
+else
+ tst_resm TFAIL "CPU consolidation test for sched_mc"
+fi
+
+RC=0
+for sched_mc in `seq 0 $max_sched_mc`; do
+ if [ $sched_mc -eq 2 ]; then
+ work_load="kernbench"
+ else
+ work_load="ebizzy"
+ fi
+ for sched_smt in `seq 0 $max_sched_smt`; do
+ sched_mc_smt_pass_cnt=0
+ for repeat_test in `seq 1 10`; do
+ # Testcase to validate CPU consolidation for
+ # for sched_mc & sched_smt with stress=50%
+ if cpu_consolidation.py -c $sched_mc -t $sched_smt \
+ -w $work_load ; then
+ : $(( sched_mc_smt_pass_cnt += 1 ))
+ fi
+ done
+ analyze_package_consolidation_result $sched_mc \
+ $sched_mc_smt_pass_cnt $sched_smt; RC=$?
+ done
+done
+if [ $RC -eq 0 ]; then
+ tst_resm TPASS "CPU consolidation test for sched_mc &" \
+ "sched_smt with stress=50%"
+else
+ tst_resm TFAIL "CPU consolidation test for sched_mc &" \
+ "sched_smt with stress=50%"
+fi
+
+tst_exit
diff --git a/testcases/kernel/power_management/runpwtests_exclusive02.sh
b/testcases/kernel/power_management/runpwtests_exclusive02.sh
new file mode 100755
index 0000000..7d12662
--- /dev/null
+++ b/testcases/kernel/power_management/runpwtests_exclusive02.sh
@@ -0,0 +1,73 @@
+#! /bin/sh
+#
+# Copyright (c) International Business Machines Corp., 2001
+# Author: Nageswara R Sastry <[email protected]>
+#
+# This program is free software; you can redistribute it and#or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+export TCID="Power_Management_exclusive02"
+export TST_TOTAL=1
+
+. test.sh
+. pm_include.sh
+
+# Checking test environment
+check_kervel_arch
+
+tst_kvercmp 2 6 29; rc=$?
+if [ $rc -eq 2 ] ; then
+ max_sched_smt=2
+else
+ max_sched_smt=1
+fi
+
+tst_check_cmds python
+
+hyper_threaded=$(is_hyper_threaded)
+multi_socket=$(is_multi_socket)
+multi_core=$(is_multi_core)
+if [ $hyper_threaded -ne 0 -o $multi_socket -ne 0 \
+ -o $multi_core -eq 0 ]; then
+ tst_brkm TCONF "System is a multi core but not multi" \
+ "socket & hyper-threaded"
+fi
+
+#Testcase to validate consolidation at core level
+RC=0
+for sched_smt in `seq 0 $max_sched_smt`; do
+ if [ $sched_smt -eq 2 ]; then
+ work_load="kernbench"
+ else
+ work_load="ebizzy"
+ fi
+ sched_smt_pass_cnt=0
+ stress="thread"
+ for repeat_test in `seq 1 10`; do
+ if cpu_consolidation.py -t $sched_smt -w $work_load \
+ -s $stress; then
+ : $(( sched_smt_pass_cnt += 1 ))
+ fi
+ done
+ analyze_core_consolidation_result $sched_smt \
+ $sched_smt_pass_cnt; RC=$?
+done
+if [ $RC -eq 0 ]; then
+ tst_resm TPASS "Consolidation test at core level for sched_smt"
+else
+ tst_resm TFAIL "Consolidation test at core level for sched_smt"
+fi
+
+tst_exit
diff --git a/testcases/kernel/power_management/runpwtests_exclusive03.sh
b/testcases/kernel/power_management/runpwtests_exclusive03.sh
new file mode 100755
index 0000000..99c1391
--- /dev/null
+++ b/testcases/kernel/power_management/runpwtests_exclusive03.sh
@@ -0,0 +1,101 @@
+#! /bin/sh
+#
+# Copyright (c) International Business Machines Corp., 2001
+# Author: Nageswara R Sastry <[email protected]>
+#
+# This program is free software; you can redistribute it and#or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+export TCID="Power_Management_exclusive03"
+export TST_TOTAL=2
+
+. test.sh
+. pm_include.sh
+
+# Checking test environment
+check_kervel_arch
+
+tst_kvercmp 2 6 29; rc=$?
+if [ $rc -eq 2 ] ; then
+ max_sched_mc=2
+ max_sched_smt=2
+else
+ max_sched_mc=1
+ max_sched_smt=1
+fi
+
+tst_check_cmds python
+
+hyper_threaded=$(is_hyper_threaded)
+multi_socket=$(is_multi_socket)
+multi_core=$(is_multi_core)
+if [ $multi_socket -ne 0 -o $multi_core -ne 0 -o \
+ $hyper_threaded -ne 0 ]; then
+ tst_brkm TCONF "System is not a multi socket & multi core" \
+ "& hyper-threaded"
+fi
+
+# Verify threads consolidation stops when sched_mc &(/) sched_smt
+# is disabled.
+# Vary sched_mc from 1/2 to 0 when workload is running and
+# ensure that tasks do not consolidate to single package when
+# sched_mc is set to 0.
+RC=0
+for sched_mc in `seq 1 $max_sched_mc`; do
+ if cpu_consolidation.py -v -c $sched_mc; then
+ echo "Test PASS: CPU consolidation test by varying" \
+ "sched_mc $sched_mc to 0"
+ else
+ RC=1
+ echo "Test FAIL: CPU consolidation test by varying" \
+ "sched_mc $sched_mc to 0"
+ fi
+done
+if [ $RC -eq 0 ]; then
+ tst_resm TPASS "CPU consolidation test by varying sched_mc"
+else
+ tst_resm TFAIL "CPU consolidation test by varying sched_mc"
+fi
+
+# Vary sched_mc & sched_smt from 1 to 0 & 2 to 0 when workload
+# is running and ensure that tasks do not consolidate to single
+# package when sched_mc is set to 0.
+RC=0
+for sched_mc in `seq 1 $max_sched_mc`; do
+ for sched_smt in `seq 1 $max_sched_smt`; do
+ if [ $sched_smt -eq $sched_mc ]; then
+ if cpu_consolidation.py -v -c $sched_mc \
+ -t $sched_smt; then
+ echo "Test PASS: CPU consolidation test by" \
+ "varying sched_mc & sched_smt from" \
+ "$sched_mc to 0"
+ else
+ RC=1
+ echo "Test FAIL: CPU consolidation test by" \
+ "varying sched_mc & sched_smt from" \
+ "$sched_mc to 0"
+ fi
+ fi
+ done
+done
+if [ $RC -eq 0 ]; then
+ tst_resm TPASS "CPU consolidation test by varying" \
+ "sched_mc & sched_smt"
+else
+ tst_resm TFAIL "CPU consolidation test by varying" \
+ "sched_mc & sched_smt"
+fi
+
+tst_exit
diff --git a/testcases/kernel/power_management/runpwtests_exclusive04.sh
b/testcases/kernel/power_management/runpwtests_exclusive04.sh
new file mode 100755
index 0000000..094bb22
--- /dev/null
+++ b/testcases/kernel/power_management/runpwtests_exclusive04.sh
@@ -0,0 +1,58 @@
+#! /bin/sh
+#
+# Copyright (c) International Business Machines Corp., 2001
+# Author: Nageswara R Sastry <[email protected]>
+#
+# This program is free software; you can redistribute it and#or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+export TCID="Power_Management_exclusive04"
+export TST_TOTAL=2
+
+. test.sh
+. pm_include.sh
+
+# Checking test environment
+check_kervel_arch
+
+tst_check_cmds python
+
+hyper_threaded=$(is_hyper_threaded)
+multi_socket=$(is_multi_socket)
+if [ $hyper_threaded -ne 0 -o $multi_socket -ne 0 ]; then
+ tst_brkm TCONF "System is not a multi socket & hyper-threaded"
+fi
+
+# Verify threads consolidation stops when sched_smt is
+# disabled in HT systems.
+# Vary only sched_smt from 1 to 0 when workload is running
+# and ensure that tasks do not consolidate to single core
+# when sched_smt is set to 0.
+if cpu_consolidation.py -v -t 1; then
+ tst_resm TPASS "CPU consolidation test by varying sched_smt from 1 to 0"
+else
+ tst_resm TFAIL "CPU consolidation test by varying sched_smt from 1 to 0"
+fi
+
+# Vary only sched_smt from 2 to 0 when workload is running
+# and ensure that tasks do not consolidate to single core
+# when sched_smt is set to 0.
+if cpu_consolidation.py -v -t 2; then
+ tst_resm TPASS "CPU consolidation test by varying sched_smt from 2 to 0"
+else
+ tst_resm TFAIL "CPU consolidation test by varying sched_smt from 2 to 0"
+fi
+
+tst_exit
diff --git a/testcases/kernel/power_management/runpwtests_exclusive05.sh
b/testcases/kernel/power_management/runpwtests_exclusive05.sh
new file mode 100755
index 0000000..1f40dc6
--- /dev/null
+++ b/testcases/kernel/power_management/runpwtests_exclusive05.sh
@@ -0,0 +1,103 @@
+#! /bin/sh
+#
+# Copyright (c) International Business Machines Corp., 2001
+# Author: Nageswara R Sastry <[email protected]>
+#
+# This program is free software; you can redistribute it and#or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+export TCID="Power_Management_exclusive05"
+export TST_TOTAL=2
+
+. test.sh
+. pm_include.sh
+
+# Checking test environment
+check_kervel_arch
+
+tst_kvercmp 2 6 29; rc=$?
+if [ $rc -eq 2 ] ; then
+ max_sched_mc=2
+ max_sched_smt=2
+else
+ max_sched_mc=1
+ max_sched_smt=1
+fi
+
+tst_check_cmds python
+
+hyper_threaded=$(is_hyper_threaded)
+multi_socket=$(is_multi_socket)
+multi_core=$(is_multi_core)
+if [ $multi_socket -ne 0 -o $multi_core -ne 0 -o \
+ $hyper_threaded -ne 0 ]; then
+ tst_brkm TCONF "System is not a multi socket & multi core" \
+ "& hyper-threaded"
+fi
+
+# Verify ILB runs in same package as workload.
+RC=0
+for sched_mc in `seq 1 $max_sched_mc`; do
+ if [ $sched_mc -eq 2 ]; then
+ work_load="kernbench"
+ else
+ work_load="ebizzy"
+ fi
+
+ ilb_test.py -c $sched_mc -w $work_load
+ if [ $? -eq 0 ]; then
+ echo "Test PASS: ILB & workload in same package for" \
+ "sched_mc=$sched_mc"
+ else
+ RC=1
+ echo "Test FAIL: ILB & workload did not run in same package" \
+ "for sched_mc=$sched_mc. Ensure CONFIG_NO_HZ is set"
+ fi
+done
+if [ $RC -eq 0 ]; then
+ tst_resm TPASS "ILB & workload test in same package for sched_mc"
+else
+ tst_resm TFAIL "ILB & workload test in same package for sched_mc"
+fi
+
+RC=0
+for sched_mc in `seq 1 $max_sched_mc`; do
+ if [ $sched_mc -eq 2 ]; then
+ work_load="kernbench"
+ else
+ work_load="ebizzy"
+ fi
+ for sched_smt in `seq 1 $max_sched_smt`; do
+ ilb_test.py -c $sched_mc -t sched_smt -w $work_load
+ if [ $? -eq 0 ]; then
+ echo "Test PASS: ILB & workload in same package for" \
+ "sched_mc=$sched_mc & sched_smt=$sched_smt"
+ else
+ RC=1
+ echo "Test FAIL: ILB & workload did not execute in" \
+ "same package for sched_mc=$sched_mc &" \
+ "sched_smt=$sched_smt. Ensure CONFIG_NO_HZ is
set"
+ fi
+ done
+done
+if [ $RC -eq 0 ]; then
+ tst_resm TPASS "ILB & workload test in same package for" \
+ "sched_mc & sched_smt"
+else
+ tst_resm TFAIL "ILB & workload test in same package for" \
+ "sched_mc & sched_smt"
+fi
+
+tst_exit
--
1.9.3
------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list