Hello Mr Jan, Thanks for your reply, With actual testscript I checked my "$!" , it is printing correct pid. Also changes which you suggest, I tried with those changes , it is showing me either "mmap failed:ffffffff" sometimes or "a successful mmap call". In my case "memory.usage_in_bytes" is 4096. Testcase is run as "./memcg_control_test.sh 4096 4096 8192". I am not getting this "mem_process getting killed by OOM seems like expected outcome:" May i know which kernel verison you are using.? Now I am doubtful on my kernel.
Regards Manjeet ------- Original Message ------- Sender : Jan Stancek<jstan...@redhat.com> Date : Jul 26, 2015 20:28 (GMT+09:00) Title : Re: [LTP] Regarding memcg control testcase (mem_process.c) ----- Original Message ----- > From: "Manjeet Pawar" > To: ltp-list@lists.sourceforge.net > Cc: "ajeet y" , "pankaj m" > Sent: Friday, 24 July, 2015 6:07:45 AM > Subject: [LTP] Regarding memcg control testcase (mem_process.c) > > Hi, > > I am trying to run memcg control testcase using script memcg_control_test.sh. > This script calls a memory hog process 'mem_process'. > The condition for this testcase to pass is 'when the memory hog process is > killed on crossing boundary'. please check the below function. > > > ----------------------------- > # Check if the test process is killed on crossing boundary > test_proc_kill() > { > ( cd $TMP && mem_process -m $PROC_MEM & ) > sleep 1 > echo $! > tasks mem_process is getting started via subshell, so I'd assume $! in parent is bogus. Can you try this instead: pushd $TMP || return mem_process -m $PROC_MEM & local pid=$! popd sleep 1 echo $pid > tasks > > #Instruct the test process to start acquiring memory > echo m > $STATUS_PIPE > sleep 5 > > #Check if killed > ps -p $! > /dev/null 2> /dev/null ----> at this point the process > 'mem_process' must have terminated so that last return value ($?) can be > non-zero. > if [ $? -eq 0 ]; then > echo m > $STATUS_PIPE > echo x > $STATUS_PIPE > else > : $((KILLED_CNT += 1)) > fi > } > ------------------------- > In my case: 'mem_process' does not terminate until we pass 'x' to it, but the > expected behaviour according to testcase that the memory hog process > must be killed on crossing bounday. > Inputs taken by testcase are : "./memcg_control_test.sh 4096 4096 8192" > If I change the inputs from 8192 to other (1024,10MB,100MB etc) . In all > situation memory hog process does not terminate. > So what is the ideal condition for this process to terminate to make whole > testcase pass. ? mem_process getting killed by OOM seems like expected outcome: memcg_control 0 TINFO : Test #1: Checking if the memory usage limit imposed by the topmost group is enforced ./memcg_control_test.sh: line 56: 2795 Killed mem_process -m $PROC_MEM (wd: /tmp) memcg_control 1 TPASS : Test #1: passed memcg_control 1 TPASS : memcg_control: passed If it still doesn't get killed, I'd recommend checking "memory.usage_in_bytes". Regards, Jan > > ------------------------------------------------------------------------------ > _______________________________________________ > Ltp-list mailing list > Ltp-list@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/ltp-list > ------------------------------------------------------------------------------ _______________________________________________ Ltp-list mailing list Ltp-list@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ltp-list