• Daisuke Nishimura's avatar
    memcg: check under limit at shrink_usage · a10cebf5
    Daisuke Nishimura authored
    Current memory cgroup(both in mainline and -mm) doesn't account swap
    caches as memory(swap cache support is dropped temporarily now).
    
    So try_to_free_mem_cgroup_pages doesn't reflect the count of pages that
    have been moved to swap cache.
    
    But this makes mem_cgroup_shrink_usage fail easily if most of the pages
    are anon/shmem, and then shmem_getpage returns -ENOMEM and the process
    will be killed.
    
    This patch adds res_counter_check_under_limit to avoid these cases.
    
    BTW, even if swap cache support is enabled again, if a process is moved to
    another cgroup, which has been just made, between precharge and
    shrink_usage in shmem_getpage, shrink_usage may fail just because there is
    no pages to reclaim.
    
    So this change would make sense anyway.
    Signed-off-by: default avatarDaisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
    Cc: Balbir Singh <balbir@in.ibm.com>
    Cc: Pavel Emelyanov <xemul@openvz.org>
    Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Cc: Hugh Dickins <hugh@veritas.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    a10cebf5
memcontrol.c 29.6 KB