lkml.org 
[lkml]   [2012]   [Jan]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: how to make memory.memsw.failcnt is nonzero

    Michal Hocko said the following on 2012-1-6 18:12:
    >> If there is something wrong, I think the bug will be in mem_cgroup_do_charge()
    >> of mm/memcontrol.c
    >>
    >> 2210 ret = res_counter_charge(&memcg->res, csize, &fail_res);
    >> 2211
    >> 2212 if (likely(!ret)) {
    ...
    >> 2221 flags |= MEM_CGROUP_RECLAIM_NOSWAP;
    >> 2222 } else
    >> 2223 mem_over_limit = mem_cgroup_from_res_counter(fail_res, res);
    >>
    >> When hit memory.limit_in_bytes, res_counter_charge() will return -ENOMEM,
    >> this will execute line 2222: } else.
    >> But I think when hit memory.limit_in_bytes, the function should determine further
    >> to memory.memsw.limit_in_bytes.
    >> This think is OK?
    >
    > I don't think so. We have an invariant (hard limit is "stronger" than
    > memsw limit) memory.limit_in_bytes <= memory.memsw.limit_in_bytes so
    > when we hit the hard limit we do not have to consider memsw because
    > resource counter:
    > a) we already have to do reclaim for hard limit
    > b) we check whether we might swap out later on in
    > mem_cgroup_hierarchical_reclaim (root_memcg->memsw_is_minimum) so we
    > will not end up swapping just to make hard limit ok and go over memsw
    > limit.
    >
    > Please also note that we will retry charging after reclaim if there is a
    > chance to meet the limit.
    > Makes sense?

    Yeah.

    But I want to test memory.memsw.failcnt is nonzero, how steps?
    Thanks.

    --
    Best Regards,
    Peng



    \
     
     \ /
      Last update: 2012-01-30 03:51    [W:0.024 / U:0.120 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site