Home | History | Annotate | Download | only in cpuset_memory_pressure_test
      1 #!/bin/sh
      2 
      3 ################################################################################
      4 #                                                                              #
      5 # Copyright (c) 2009 FUJITSU LIMITED                                           #
      6 #                                                                              #
      7 # This program is free software;  you can redistribute it and#or modify        #
      8 # it under the terms of the GNU General Public License as published by         #
      9 # the Free Software Foundation; either version 2 of the License, or            #
     10 # (at your option) any later version.                                          #
     11 #                                                                              #
     12 # This program is distributed in the hope that it will be useful, but          #
     13 # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY   #
     14 # or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License     #
     15 # for more details.                                                            #
     16 #                                                                              #
     17 # You should have received a copy of the GNU General Public License            #
     18 # along with this program;  if not, write to the Free Software                 #
     19 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA      #
     20 #                                                                              #
     21 # Author: Miao Xie <miaox (at] cn.fujitsu.com>                                      #
     22 #                                                                              #
     23 ################################################################################
     24 
     25 export TCID="cpuset_memory_pressure"
     26 export TST_TOTAL=6
     27 export TST_COUNT=1
     28 
     29 . cpuset_funcs.sh
     30 
     31 check
     32 
     33 exit_status=0
     34 
     35 # usable physical memory
     36 py_mem=$(free -m | awk '{if(NR==2) print $4 + $6 + $7}')
     37 
     38 # free swap space
     39 sw_mem=$(free -m | awk '{if(NR==4) print $4}')
     40 
     41 # the memory which is going to be used
     42 usemem=$((py_mem - 20))
     43 
     44 test1()
     45 {
     46 	echo 0 > "$CPUSET/memory_pressure_enabled" 2> $CPUSET_TMP/stderr
     47 	if [ $? -ne 0 ]; then
     48 		cpuset_log_error $CPUSET_TMP/stderr
     49 		tst_resm TFAIL "Closing memory_pressure_enabled failed."
     50 		return 1
     51 	fi
     52 
     53 	local i
     54 	for i in $(seq 0 9)
     55 	do
     56 		if [ $(cat "$CPUSET/memory_pressure") -ne 0 ]; then
     57 			tst_resm TFAIL "Memory_pressure had memory pressure rate."
     58 			return 1
     59 		fi
     60 	done
     61 }
     62 
     63 test2()
     64 {
     65 	echo 0 > "$CPUSET/memory_pressure_enabled" 2> $CPUSET_TMP/stderr
     66 	if [ $? -ne 0 ]; then
     67 		cpuset_log_error $CPUSET_TMP/stderr
     68 		tst_resm TFAIL "Closing memory_pressure_enabled failed."
     69 		return 1
     70 	fi
     71 
     72 	cpuset_memory_pressure $usemem
     73 
     74 	local i
     75 	for i in $(seq 0 9)
     76 	do
     77 		if [ $(cat "$CPUSET/memory_pressure") -ne 0 ]; then
     78 			tst_resm TFAIL "Memory_pressure had memory pressure rate."
     79 			return 1
     80 		fi
     81 	done
     82 }
     83 
     84 test3()
     85 {
     86 	echo 1 > "$CPUSET/memory_pressure_enabled" 2> $CPUSET_TMP/stderr
     87 	if [ $? -ne 0 ]; then
     88 		cpuset_log_error $CPUSET_TMP/stderr
     89 		tst_resm TFAIL "Opening memory_pressure_enabled failed."
     90 		return 1
     91 	fi
     92 
     93 	cpuset_set "$CPUSET/sub_cpuset" "0" "0" "0" 2> $CPUSET_TMP/stderr
     94 	if [ $? -ne 0 ]; then
     95 		cpuset_log_error $CPUSET_TMP/stderr
     96 		tst_resm TFAIL "set general group parameter failed."
     97 		return 1
     98 	fi
     99 
    100 	local i
    101 	for i in $(seq 0 9)
    102 	do
    103 		if [ $(cat "$CPUSET/memory_pressure") -ne 0 ]; then
    104 			tst_resm TFAIL "root group's memory_pressure had memory pressure rate."
    105 			return 1
    106 		fi
    107 		if [ $(cat "$CPUSET/sub_cpuset/memory_pressure") -ne 0 ]; then
    108 			tst_resm TFAIL "sub group's memory_pressure had memory pressure rate."
    109 			return 1
    110 		fi
    111 	done
    112 	return 0
    113 }
    114 
    115 test4()
    116 {
    117 	echo 1 > "$CPUSET/memory_pressure_enabled" 2> $CPUSET_TMP/stderr
    118 	if [ $? -ne 0 ]; then
    119 		cpuset_log_error $CPUSET_TMP/stderr
    120 		tst_resm TFAIL "Opening memory_pressure_enabled failed."
    121 		return 1
    122 	fi
    123 
    124 	cpuset_set "$CPUSET/sub_cpuset" "0" "0" "0" 2> $CPUSET_TMP/stderr
    125 	if [ $? -ne 0 ]; then
    126 		cpuset_log_error $CPUSET_TMP/stderr
    127 		tst_resm TFAIL "set general group parameter failed."
    128 		return 1
    129 	fi
    130 
    131 	echo $$ > "$CPUSET/sub_cpuset/tasks" 2> $CPUSET_TMP/stderr
    132 	if [ $? -ne 0 ]; then
    133 		cpuset_log_error $CPUSET_TMP/stderr
    134 		tst_resm TFAIL "attaching self to sub group failed"
    135 		return 1
    136 	fi
    137 
    138 	cpuset_memory_pressure $usemem
    139 
    140 	echo $$ > "$CPUSET/tasks" 2> $CPUSET_TMP/stderr
    141 	if [ $? -ne 0 ]; then
    142 		cpuset_log_error $CPUSET_TMP/stderr
    143 		tst_resm TFAIL "moving self to root group failed"
    144 		return 1
    145 	fi
    146 
    147 	local i
    148 	for i in $(seq 0 9)
    149 	do
    150 		if [ $(cat "$CPUSET/memory_pressure") -ne 0 ]; then
    151 			tst_resm TFAIL "root group's memory_pressure had memory pressure rate."
    152 			return 1
    153 		fi
    154 		if [ $(cat "$CPUSET/sub_cpuset/memory_pressure") -eq 0 ]; then
    155 			tst_resm TFAIL "sub group's memory_pressure didn't have memory pressure rate."
    156 			return 1
    157 		fi
    158 	done
    159 }
    160 
    161 test5()
    162 {
    163 	echo 1 > "$CPUSET/memory_pressure_enabled" 2> $CPUSET_TMP/stderr
    164 	if [ $? -ne 0 ]; then
    165 		cpuset_log_error $CPUSET_TMP/stderr
    166 		tst_resm TFAIL "Opening memory_pressure_enabled failed."
    167 		return 1
    168 	fi
    169 
    170 	cpuset_set "$CPUSET/sub_cpuset" "0" "0" "0" 2> $CPUSET_TMP/stderr
    171 	if [ $? -ne 0 ]; then
    172 		cpuset_log_error $CPUSET_TMP/stderr
    173 		tst_resm TFAIL "set general group parameter failed."
    174 		return 1
    175 	fi
    176 
    177 	cpuset_memory_pressure $usemem
    178 	local i
    179 	for i in $(seq 0 9)
    180 	do
    181 		if [ $(cat "$CPUSET/memory_pressure") -eq 0 ]; then
    182 			tst_resm TFAIL "root group's memory_pressure didn't have memory pressure rate."
    183 			return 1
    184 		fi
    185 		if [ $(cat "$CPUSET/sub_cpuset/memory_pressure") -ne 0 ]; then
    186 			tst_resm TFAIL "sub group's memory_pressure had memory pressure rate."
    187 			return 1
    188 		fi
    189 	done
    190 }
    191 
    192 test6()
    193 {
    194 	echo 1 > "$CPUSET/memory_pressure_enabled" 2> $CPUSET_TMP/stderr
    195 	if [ $? -ne 0 ]; then
    196 		cpuset_log_error $CPUSET_TMP/stderr
    197 		tst_resm TFAIL "Opening memory_pressure_enabled failed."
    198 		return 1
    199 	fi
    200 
    201 	cpuset_set "$CPUSET/sub_cpuset" "0" "0" "0" 2> $CPUSET_TMP/stderr
    202 	if [ $? -ne 0 ]; then
    203 		cpuset_log_error $CPUSET_TMP/stderr
    204 		tst_resm TFAIL "set general group parameter failed."
    205 		return 1
    206 	fi
    207 
    208 	echo $$ > "$CPUSET/sub_cpuset/tasks" 2> $CPUSET_TMP/stderr
    209 	if [ $? -ne 0 ]; then
    210 		cpuset_log_error $CPUSET_TMP/stderr
    211 		tst_resm TFAIL "attaching self to sub group failed"
    212 		return 1
    213 	fi
    214 	cpuset_memory_pressure $usemem
    215 
    216 	echo $$ > "$CPUSET/tasks" 2> $CPUSET_TMP/stderr
    217 	if [ $? -ne 0 ]; then
    218 		cpuset_log_error $CPUSET_TMP/stderr
    219 		tst_resm TFAIL "attaching self to root group failed"
    220 		return 1
    221 	fi
    222 
    223 	cpuset_memory_pressure $usemem
    224 	local i
    225 	for i in $(seq 0 9)
    226 	do
    227 		if [ $(cat "$CPUSET/memory_pressure") -eq 0 ]; then
    228 			tst_resm TFAIL "root group's memory_pressure didn't have memory pressure rate."
    229 			return 1
    230 		fi
    231 		if [ $(cat "$CPUSET/sub_cpuset/memory_pressure") -eq 0 ]; then
    232 			tst_resm TFAIL "sub group's memory_pressure didn't have memory pressure rate."
    233 			return 1
    234 		fi
    235 	done
    236 }
    237 
    238 for c in $(seq 1 $TST_TOTAL)
    239 do
    240 	setup
    241 	if [ $? -ne 0 ]; then
    242 		exit_status=1
    243 	else
    244 		test$c
    245 		if [ $? -ne 0 ]; then
    246 			exit_status=1
    247 			cleanup
    248 		else
    249 			cleanup
    250 			if [ $? -ne 0 ]; then
    251 				exit_status=1
    252 			else
    253 				tst_resm TPASS "Cpuset memory pressure test succeeded."
    254 			fi
    255 		fi
    256 	fi
    257 	TST_COUNT=$(($TST_COUNT + 1))
    258 done
    259 
    260 exit $exit_status
    261