From: Subrata <sub...@us...> - 2008-05-26 11:24:35
|
Update of /cvsroot/ltp/ltp/testcases/kernel/controllers/memctl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2147/ltp/testcases/kernel/controllers/memctl Modified Files: memctl_test01.c run_memctl_test.sh Log Message: This patch adds the failcnt check test for memory controller. In this test a task runs in a group with some memory limit and does total memory allocation greater than the limit of the group. The script checks the failcnt from memory.failcnt file under the controller. It reports pass if failcnt increases otherwise reports fail. Signed-off-by: Sudhir Kumar <sk...@li...>. Acked-by: Dhaval Giani <dh...@li...>. Index: memctl_test01.c =================================================================== RCS file: /cvsroot/ltp/ltp/testcases/kernel/controllers/memctl/memctl_test01.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** memctl_test01.c 30 Apr 2008 07:19:29 -0000 1.1 --- memctl_test01.c 26 May 2008 11:24:31 -0000 1.2 *************** *** 27,33 **** /* allocated pages by writing a string on each page. */ /* */ ! /* Total Tests: 1 */ /* */ ! /* Test Name: mem_controller_test01 */ /* */ /* */ --- 27,33 ---- /* allocated pages by writing a string on each page. */ /* */ ! /* Total Tests: 3 */ /* */ ! /* Test Name: mem_controller_test01-03 */ /* */ /* */ *************** *** 39,42 **** --- 39,43 ---- /* History: */ /* Created 12/03/2008 Sudhir Kumar <sk...@li...> */ + /* Modified 11/05/2008 Sudhir Kumar <sk...@li...> */ /* */ /******************************************************************************/ *************** *** 52,57 **** extern int Tst_count; ! char *TCID = "memory_controller_test01"; ! int TST_TOTAL = 1; pid_t scriptpid; --- 53,58 ---- extern int Tst_count; ! char *TCID = "memory_controller_test01-03"; ! int TST_TOTAL = 3; pid_t scriptpid; Index: run_memctl_test.sh =================================================================== RCS file: /cvsroot/ltp/ltp/testcases/kernel/controllers/memctl/run_memctl_test.sh,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** run_memctl_test.sh 30 Apr 2008 07:19:29 -0000 1.1 --- run_memctl_test.sh 26 May 2008 11:24:31 -0000 1.2 *************** *** 27,30 **** --- 27,31 ---- # # # Test 01: Tests group memory usage on task migration # + # Test 03: Tests failcnt increase on memory usage greater than group limit # # # # Precaution: Avoid system use by other applications/users to get fair and # *************** *** 38,46 **** # # # 12/03/08 Sudhir Kumar <sk...@li...> Created this test # # # ################################################################################# ! export TCID="memctl_test01"; ! export TST_TOTAL=1; export TST_COUNT=1; --- 39,48 ---- # # # 12/03/08 Sudhir Kumar <sk...@li...> Created this test # + # 11/05/08 Sudhir Kumar <sk...@li...> Added third test # # # ################################################################################# ! export TCID="memctl_test01-03"; ! export TST_TOTAL=3; export TST_COUNT=1; *************** *** 61,66 **** # First of all check if the system has sufficient memory ! # Checking Inactive memory is sufficient. Is'nt it?? ! MEM_AVAIL=`cat /proc/meminfo | grep Inactive | tr -s [:space:] | cut -d" " -f2`; if [ $MEM_AVAIL -lt 262144 ] # 256MB(as test requires some ~200MB) then --- 63,67 ---- # First of all check if the system has sufficient memory ! MEM_AVAIL=`cat /proc/meminfo | grep MemTotal | tr -s [:space:] | cut -d" " -f2`; if [ $MEM_AVAIL -lt 262144 ] # 256MB(as test requires some ~200MB) then *************** *** 84,88 **** TEST_NAME=" TASK MIGRATION TEST:"; ;; ! * ) usage; exit -1 --- 85,97 ---- TEST_NAME=" TASK MIGRATION TEST:"; ;; ! "3" ) ! NUM_GROUPS=1; ! MEMLIMIT_GROUP_1=50M; # MEM_TASK > MEMLIMIT_GROUP_1 ! CHUNK_SIZE=6291456; # malloc n chunks of size m(6M) ! NUM_CHUNKS=10; # (say)60 MB memory(6*10) ! TOTAL_TASKS=1; # num of tasks in a group(1) ! MEM_TASK=`expr $CHUNK_SIZE \* $NUM_CHUNKS`; # memory allocated by a task ! TEST_NAME=" FAILCNT CHECK TEST:"; ! ;; * ) usage; exit -1 *************** *** 213,216 **** --- 222,272 ---- ;; + "3" ) + setmemlimits; + if [ -f memctl_test01 ] + then + MYGROUP=/dev/memctl/group_1; + cp memctl_test01 memctl_task_1 # 2>/dev/null; + chmod +x memctl_task_1; + TEST_NUM=$TEST_NUM MYGROUP=$MYGROUP SCRIPT_PID=$SCRIPT_PID CHUNK_SIZE=$CHUNK_SIZE \ + NUM_CHUNKS=$NUM_CHUNKS ./memctl_task_$i & + if [ $? -ne 0 ] + then + echo "Error: Could not run ./memctl_task_1" + cleanup; + exit -1; + else + PID[1]=$!; + fi + + # Wait untill tasks allocate memory from group1 + while [ 1 -gt 0 ] + do + sleep 1; + GRP1_MEMUSAGE=`cat /dev/memctl/group_1/memory.usage_in_bytes`; + MEMLIMIT_GROUP_1=`echo $MEMLIMIT_GROUP_1 | cut -d"M" -f1`; + if [ $GRP1_MEMUSAGE -gt $MEMLIMIT_GROUP_1 ] + then + break; + fi + done + # now memory.usage_in_bytes > memory.limit_in_bytes + # hence memory.failcnt should be greater than 0 + FAILCNT=`cat /dev/memctl/group_1/memory.failcnt`; + if [ $FAILCNT -gt 0 ] + then + # Now we can signal the task to finish and do the cleanup + echo failcnt = $FAILCNT; + kill -SIGUSR1 ${PID[1]}; + echo "TPASS Memory Resource Controller: failcnt check test PASSED"; + else + echo "TFAIL Memory Resource Controller: failcnt check test FAILED"; + fi; + else + echo "Source file not compiled..Please check Makefile...Exiting test" + cleanup; + exit -1; + fi; + ;; "*" ) usage; |