Bian Naimeng wrote:
> 
> Qian Cai wrote:
>> On 2011-4-4, at 0:47, Bian Naimeng <[email protected]> wrote:
>>
>>> There are some problem in ksm tests.
>>>
>>> 1. We should break the test when checking is failure.
>> No, this is not the intention. The design here is to run all tests to check 
>> for all stats to give a full picture even if the a single failure has been 
>> observed. This type of the failures do not prevent the rest of the tests 
>> from running, so there is no need to stop the tests now which also give more 
>> insight to track down root causes.
> 
> Various reason can make checking failure, someone can make the test hangup.
> I did this test on RHEL5, i found ksmd stopped before doing "echo 2 > 
> /sys/kernel/mm/ksm/run",

Sorry, it's RHEL6.

Regards
  Bian

> so group_check will be hanged on "new_num < old_num * 3".
> 
> So, i think we should break the test if "run" is not expecting.
> 
>>> 2. The condition "new_num < old_num * 3" seems uncomfortable, i think
>>>   it should be "new_num < old_num + 3"
>> I don't understand. What error did you see from the testing output?
> 
> Sometimes, the old_num is a big number, so it takes long time in this loop,
> i don't understand the purpose.
> Would you explain to me why we expect this condition "new_num < old_num * 3".
> 
>>> 3. After stopping ksm(echo 2 > /sys/kernel/mm/ksm/run), the ksmd
>>>   will stop scaning pages, so looping in "new_num < old_num * 3"
>>>   is wrong.
>> Ditto.
>>
> 
> After stopping ksm, looping in "new_num < old_num * 3" will make the process 
> hang up,
> because new_num does not be increased.
> 
> Regards
>  Bian
> 
> 
>> CAI Qian
>>> Signed-off-by: Bian Naimeng <[email protected]>
>>>
>>> ---
>>> testcases/kernel/mem/include/mem.h |    2 +-
>>> testcases/kernel/mem/lib/mem.c     |   19 ++++++++++---------
>>> 2 files changed, 11 insertions(+), 10 deletions(-)
>>>
>>> diff --git a/testcases/kernel/mem/include/mem.h 
>>> b/testcases/kernel/mem/include/mem.h
>>> index 778d403..b640a63 100644
>>> --- a/testcases/kernel/mem/include/mem.h
>>> +++ b/testcases/kernel/mem/include/mem.h
>>> @@ -42,7 +42,7 @@ void check(char *path, long int value);
>>> void verify(char value, int proc, int start, int end, int start2, int end2);
>>> void group_check(int run, int pages_shared, int pages_sharing,
>>>        int pages_volatile, int pages_unshared, int sleep_millisecs,
>>> -        int pages_to_scan);
>>> +        int pages_to_scan, int scans);
>>> void create_same_memory(int size, int num, int unit);
>>> void check_ksm_options(int *size, int *num, int *unit);
>>> void write_cpusets(void);
>>> diff --git a/testcases/kernel/mem/lib/mem.c b/testcases/kernel/mem/lib/mem.c
>>> index 12e61e9..db1a7dd 100644
>>> --- a/testcases/kernel/mem/lib/mem.c
>>> +++ b/testcases/kernel/mem/lib/mem.c
>>> @@ -284,7 +284,7 @@ void check(char *path, long int value)
>>>
>>>    tst_resm(TINFO, "%s is %ld.", path, atol(buf));
>>>    if (atol(buf) != value)
>>> -        tst_resm(TFAIL, "%s is not %ld.", path, value);
>>> +        tst_brkm(TFAIL, tst_exit, "%s is not %ld.", path, value);
>>> }
>>>
>>> void verify(char value, int proc, int start, int end, int start2, int end2)
>>> @@ -312,7 +312,8 @@ void verify(char value, int proc, int start, int end, 
>>> int start2, int end2)
>>>
>>> void group_check(int run, int pages_shared, int pages_sharing,
>>>        int pages_volatile, int pages_unshared,
>>> -        int sleep_millisecs, int pages_to_scan)
>>> +        int sleep_millisecs, int pages_to_scan,
>>> +        int scans)
>>> {
>>>    int fd;
>>>    char buf[BUFSIZ];
>>> @@ -332,7 +333,7 @@ void group_check(int run, int pages_shared, int 
>>> pages_sharing,
>>>    old_num = new_num = atoi(buf);
>>>    if (lseek(fd, 0, SEEK_SET) == -1)
>>>        tst_brkm(TBROK|TERRNO, cleanup, "lseek");
>>> -    while (new_num < old_num * 3) {
>>> +    while (new_num < old_num + scans) {
>>>        sleep(1);
>>>        if (read(fd, buf, BUFSIZ) < 0)
>>>            tst_brkm(TBROK|TERRNO, cleanup, "read");
>>> @@ -587,7 +588,7 @@ void create_same_memory(int size, int num, int unit)
>>>        if (kill(child[k], SIGCONT) == -1)
>>>            tst_brkm(TBROK|TERRNO, cleanup, "kill child[%d]", k);
>>>    }
>>> -    group_check(1, 2, size * num * 256 - 2, 0, 0, 0, size * 256 * num);
>>> +    group_check(1, 2, size * num * 256 - 2, 0, 0, 0, size * 256 * num, 3);
>>>
>>>    tst_resm(TINFO, "wait for child 1 to stop.");
>>>    if (waitpid(child[1], &status, WUNTRACED) == -1)
>>> @@ -599,7 +600,7 @@ void create_same_memory(int size, int num, int unit)
>>>    tst_resm(TINFO, "resume child 1.");
>>>    if (kill(child[1], SIGCONT) == -1)
>>>        tst_brkm(TBROK|TERRNO, cleanup, "kill");
>>> -    group_check(1, 3, size * num * 256 - 3, 0, 0, 0, size * 256 * num);
>>> +    group_check(1, 3, size * num * 256 - 3, 0, 0, 0, size * 256 * num, 3);
>>>
>>>    tst_resm(TINFO, "wait for child 1 to stop.");
>>>    if (waitpid(child[1], &status, WUNTRACED) == -1)
>>> @@ -613,7 +614,7 @@ void create_same_memory(int size, int num, int unit)
>>>        if (kill(child[k], SIGCONT) == -1)
>>>            tst_brkm(TBROK|TERRNO, cleanup, "kill child[%d]", k);
>>>    }
>>> -    group_check(1, 1, size * num * 256 - 1, 0, 0, 0, size * 256 * num);
>>> +    group_check(1, 1, size * num * 256 - 1, 0, 0, 0, size * 256 * num, 3);
>>>
>>>    tst_resm(TINFO, "wait for all children to stop.");
>>>    for (k = 0; k < num; k++) {
>>> @@ -627,7 +628,7 @@ void create_same_memory(int size, int num, int unit)
>>>    tst_resm(TINFO, "resume child 1.");
>>>    if (kill(child[1], SIGCONT) == -1)
>>>        tst_brkm(TBROK|TERRNO, cleanup, "kill");
>>> -    group_check(1, 1, size * num * 256 - 2, 0, 1, 0, size * 256 * num);
>>> +    group_check(1, 1, size * num * 256 - 2, 0, 1, 0, size * 256 * num, 3);
>>>
>>>    tst_resm(TINFO, "wait for child 1 to stop.");
>>>    if (waitpid(child[1], &status, WUNTRACED) == -1)
>>> @@ -647,7 +648,7 @@ void create_same_memory(int size, int num, int unit)
>>>        tst_brkm(TBROK|TERRNO, cleanup, "open");
>>>    if (write(fd, "2", 1) != 1)
>>>        tst_brkm(TBROK|TERRNO, cleanup, "write");
>>> -    group_check(2, 0, 0, 0, 0, 0, size * 256 * num);
>>> +    group_check(2, 0, 0, 0, 0, 0, size * 256 * num, 0);
>>>
>>>    tst_resm(TINFO, "wait for all children to stop.");
>>>    for (k = 0; k < num; k++) {
>>> @@ -668,7 +669,7 @@ void create_same_memory(int size, int num, int unit)
>>>    if (write(fd, "0", 1) != 1)
>>>        tst_brkm(TBROK|TERRNO, cleanup, "write");
>>>    close(fd);
>>> -    group_check(0, 0, 0, 0, 0, 0, size * 256 * num);
>>> +    group_check(0, 0, 0, 0, 0, 0, size * 256 * num, 0);
>>>    while (waitpid(-1, &status, WUNTRACED | WCONTINUED) > 0)
>>>        if (WEXITSTATUS(status) != 0)
>>>            tst_resm(TFAIL, "child exit status is %d",
>>> -- 
>>> 1.7.1
>>>
>>>
>>
> 
> 
> ------------------------------------------------------------------------------
> Xperia(TM) PLAY
> It's a major breakthrough. An authentic gaming
> smartphone on the nation's most reliable network.
> And it wants your games.
> http://p.sf.net/sfu/verizon-sfdev
> _______________________________________________
> Ltp-list mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/ltp-list
> 
> 


------------------------------------------------------------------------------
Xperia(TM) PLAY
It's a major breakthrough. An authentic gaming
smartphone on the nation's most reliable network.
And it wants your games.
http://p.sf.net/sfu/verizon-sfdev
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to