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 <[email protected]> # 22# # 23################################################################################ 24 25export TCID="cpuset_memory_pressure" 26export TST_TOTAL=6 27export TST_COUNT=1 28 29. cpuset_funcs.sh 30 31check 32 33exit_status=0 34 35# usable physical memory 36py_mem=$(awk '/MemAvailable/ {print $2}' /proc/meminfo) 37py_mem=$(( $py_mem / 1024 )) 38 39# free swap space 40sw_mem=$(awk '/SwapFree/ {print $2}' /proc/meminfo) 41sw_mem=$(( $sw_mem / 1024 )) 42 43# the memory which is going to be used 44usemem=$((py_mem - 20)) 45 46test1() 47{ 48 echo 0 > "$CPUSET/cpuset.memory_pressure_enabled" 2> $CPUSET_TMP/stderr 49 if [ $? -ne 0 ]; then 50 cpuset_log_error $CPUSET_TMP/stderr 51 tst_resm TFAIL "Closing memory_pressure_enabled failed." 52 return 1 53 fi 54 55 local i 56 for i in $(seq 0 9) 57 do 58 if [ $(cat "$CPUSET/cpuset.memory_pressure") -ne 0 ]; then 59 tst_resm TFAIL "Memory_pressure had memory pressure rate." 60 return 1 61 fi 62 done 63} 64 65test2() 66{ 67 echo 0 > "$CPUSET/cpuset.memory_pressure_enabled" 2> $CPUSET_TMP/stderr 68 if [ $? -ne 0 ]; then 69 cpuset_log_error $CPUSET_TMP/stderr 70 tst_resm TFAIL "Closing memory_pressure_enabled failed." 71 return 1 72 fi 73 74 cpuset_memory_pressure $usemem 75 76 local i 77 for i in $(seq 0 9) 78 do 79 if [ $(cat "$CPUSET/cpuset.memory_pressure") -ne 0 ]; then 80 tst_resm TFAIL "Memory_pressure had memory pressure rate." 81 return 1 82 fi 83 done 84} 85 86test3() 87{ 88 echo 1 > "$CPUSET/cpuset.memory_pressure_enabled" 2> $CPUSET_TMP/stderr 89 if [ $? -ne 0 ]; then 90 cpuset_log_error $CPUSET_TMP/stderr 91 tst_resm TFAIL "Opening memory_pressure_enabled failed." 92 return 1 93 fi 94 95 cpuset_set "$CPUSET/sub_cpuset" "0" "0" "0" 2> $CPUSET_TMP/stderr 96 if [ $? -ne 0 ]; then 97 cpuset_log_error $CPUSET_TMP/stderr 98 tst_resm TFAIL "set general group parameter failed." 99 return 1 100 fi 101 102 local i 103 for i in $(seq 0 9) 104 do 105 if [ $(cat "$CPUSET/cpuset.memory_pressure") -ne 0 ]; then 106 tst_resm TFAIL "root group's memory_pressure had memory pressure rate." 107 return 1 108 fi 109 if [ $(cat "$CPUSET/sub_cpuset/cpuset.memory_pressure") -ne 0 ]; then 110 tst_resm TFAIL "sub group's memory_pressure had memory pressure rate." 111 return 1 112 fi 113 done 114 return 0 115} 116 117test4() 118{ 119 echo 1 > "$CPUSET/cpuset.memory_pressure_enabled" 2> $CPUSET_TMP/stderr 120 if [ $? -ne 0 ]; then 121 cpuset_log_error $CPUSET_TMP/stderr 122 tst_resm TFAIL "Opening memory_pressure_enabled failed." 123 return 1 124 fi 125 126 cpuset_set "$CPUSET/sub_cpuset" "0" "0" "0" 2> $CPUSET_TMP/stderr 127 if [ $? -ne 0 ]; then 128 cpuset_log_error $CPUSET_TMP/stderr 129 tst_resm TFAIL "set general group parameter failed." 130 return 1 131 fi 132 133 echo $$ > "$CPUSET/sub_cpuset/tasks" 2> $CPUSET_TMP/stderr 134 if [ $? -ne 0 ]; then 135 cpuset_log_error $CPUSET_TMP/stderr 136 tst_resm TFAIL "attaching self to sub group failed" 137 return 1 138 fi 139 140 cpuset_memory_pressure $usemem 141 142 echo $$ > "$CPUSET/tasks" 2> $CPUSET_TMP/stderr 143 if [ $? -ne 0 ]; then 144 cpuset_log_error $CPUSET_TMP/stderr 145 tst_resm TFAIL "moving self to root group failed" 146 return 1 147 fi 148 149 local i 150 for i in $(seq 0 9) 151 do 152 if [ $(cat "$CPUSET/cpuset.memory_pressure") -ne 0 ]; then 153 tst_resm TFAIL "root group's memory_pressure had memory pressure rate." 154 return 1 155 fi 156 if [ $(cat "$CPUSET/sub_cpuset/cpuset.memory_pressure") -eq 0 ]; then 157 tst_resm TFAIL "sub group's memory_pressure didn't have memory pressure rate." 158 return 1 159 fi 160 done 161} 162 163test5() 164{ 165 echo 1 > "$CPUSET/cpuset.memory_pressure_enabled" 2> $CPUSET_TMP/stderr 166 if [ $? -ne 0 ]; then 167 cpuset_log_error $CPUSET_TMP/stderr 168 tst_resm TFAIL "Opening memory_pressure_enabled failed." 169 return 1 170 fi 171 172 cpuset_set "$CPUSET/sub_cpuset" "0" "0" "0" 2> $CPUSET_TMP/stderr 173 if [ $? -ne 0 ]; then 174 cpuset_log_error $CPUSET_TMP/stderr 175 tst_resm TFAIL "set general group parameter failed." 176 return 1 177 fi 178 179 cpuset_memory_pressure $usemem 180 local i 181 for i in $(seq 0 9) 182 do 183 if [ $(cat "$CPUSET/cpuset.memory_pressure") -eq 0 ]; then 184 tst_resm TFAIL "root group's memory_pressure didn't have memory pressure rate." 185 return 1 186 fi 187 if [ $(cat "$CPUSET/sub_cpuset/cpuset.memory_pressure") -ne 0 ]; then 188 tst_resm TFAIL "sub group's memory_pressure had memory pressure rate." 189 return 1 190 fi 191 done 192} 193 194test6() 195{ 196 echo 1 > "$CPUSET/cpuset.memory_pressure_enabled" 2> $CPUSET_TMP/stderr 197 if [ $? -ne 0 ]; then 198 cpuset_log_error $CPUSET_TMP/stderr 199 tst_resm TFAIL "Opening memory_pressure_enabled failed." 200 return 1 201 fi 202 203 cpuset_set "$CPUSET/sub_cpuset" "0" "0" "0" 2> $CPUSET_TMP/stderr 204 if [ $? -ne 0 ]; then 205 cpuset_log_error $CPUSET_TMP/stderr 206 tst_resm TFAIL "set general group parameter failed." 207 return 1 208 fi 209 210 echo $$ > "$CPUSET/sub_cpuset/tasks" 2> $CPUSET_TMP/stderr 211 if [ $? -ne 0 ]; then 212 cpuset_log_error $CPUSET_TMP/stderr 213 tst_resm TFAIL "attaching self to sub group failed" 214 return 1 215 fi 216 cpuset_memory_pressure $usemem 217 218 echo $$ > "$CPUSET/tasks" 2> $CPUSET_TMP/stderr 219 if [ $? -ne 0 ]; then 220 cpuset_log_error $CPUSET_TMP/stderr 221 tst_resm TFAIL "attaching self to root group failed" 222 return 1 223 fi 224 225 cpuset_memory_pressure $usemem 226 local i 227 for i in $(seq 0 9) 228 do 229 if [ $(cat "$CPUSET/cpuset.memory_pressure") -eq 0 ]; then 230 tst_resm TFAIL "root group's memory_pressure didn't have memory pressure rate." 231 return 1 232 fi 233 if [ $(cat "$CPUSET/sub_cpuset/cpuset.memory_pressure") -eq 0 ]; then 234 tst_resm TFAIL "sub group's memory_pressure didn't have memory pressure rate." 235 return 1 236 fi 237 done 238} 239 240for c in $(seq 1 $TST_TOTAL) 241do 242 setup 243 if [ $? -ne 0 ]; then 244 exit_status=1 245 else 246 test$c 247 if [ $? -ne 0 ]; then 248 exit_status=1 249 cleanup 250 else 251 cleanup 252 if [ $? -ne 0 ]; then 253 exit_status=1 254 else 255 tst_resm TPASS "Cpuset memory pressure test succeeded." 256 fi 257 fi 258 fi 259 TST_COUNT=$(($TST_COUNT + 1)) 260done 261 262exit $exit_status 263