blob: 4cf9fabc1117c09fd57bd49127616fc21124e6f0 [file] [log] [blame]
#
# run-transhuge-test.sh:
# Script for hwpoison test of THP(Transparent Huge Page).
#
#!/bin/sh
#
THP_POISON_PRO_FILE_NAME="ttranshuge"
THP_POISON_PRO="./$THP_POISON_PRO_FILE_NAME"
THP_SYS_PATH="/sys/kernel/mm/transparent_hugepage"
THP_SYS_ENABLED_FILE="$THP_SYS_PATH/enabled"
executed_testcase=0
failed_testcase=0
error()
{
echo "$1" && exit 1
}
env_check()
{
if [ ! -f $THP_POISON_PRO_FILE_NAME ] ; then
error "Please make sure there is file $THP_POISON_PRO_FILE_NAME."
fi
if [ ! -d $THP_SYS_PATH ] ; then
error "THP(Transparent Huge Page) may be not supported by kernel."
fi
thp_enabled="$(cat $THP_SYS_ENABLED_FILE | awk '{print $3}')"
if [ "$thp_enabled" == "[never]" ] ; then
error "THP(Transparent Huge Page) is disabled now."
fi
}
result_check()
{
if [ "$1" != "0" ] ; then
failed_testcase=`expr $failed_testcase + 1`
fi
}
exec_testcase()
{
if [ "$1" = "head" ] ; then
page_position_in_thp=0
elif [ "$1" = "tail" ] ; then
page_position_in_thp=1
else
error "Which page do you want to poison?"
fi
if [ "$2" = "early" ] ; then
process_type="--early-kill"
elif [ "$2" = "late_touch" ] ; then
process_type=""
elif [ "$2" = "late_avoid" ] ; then
process_type="--avoid-touch"
else
error "No such process type."
fi
executed_testcase=`expr $executed_testcase + 1`
echo "------------------ Case $executed_testcase --------------------"
command="$THP_POISON_PRO $process_type --offset $page_position_in_thp"
echo $command
eval $command
result_check $?
echo -e "\n"
}
# Environment Check for Test.
env_check
# Execute Test Cases from Here.
echo "============= HWPoison Test of Transparent Huge Page ================="
exec_testcase "head" "early"
exec_testcase "head" "late_touch"
exec_testcase "head" "late_avoid"
exec_testcase "tail" "early"
exec_testcase "tail" "late_touch"
exec_testcase "tail" "late_avoid"
echo "======================================================================="
echo -n " Num of Executed Test Case: $executed_testcase"
echo -e " Num of Failed Case: $failed_testcase\n"