lkml.org 
[lkml]   [2012]   [Feb]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH next] memcg: remove PCG_CACHE page_cgroup flag fix
    Swapping tmpfs loads show absurd wrapped rss and wrong cache in memcg's
    memory.stat statistics: __mem_cgroup_uncharge_common() is failing to
    distinguish the anon and tmpfs cases.

    Mostly we can decide between them by PageAnon, which is reliable once
    it has been set; but there are several callers who need to uncharge a
    MEM_CGROUP_CHARGE_TYPE_MAPPED page before it was fully initialized,
    so allow that case to override the PageAnon decision.

    Signed-off-by: Hugh Dickins <hughd@google.com>
    ---

    mm/memcontrol.c | 7 ++++---
    1 file changed, 4 insertions(+), 3 deletions(-)

    --- 3.3-rc5-next/mm/memcontrol.c 2012-02-25 10:06:52.496035568 -0800
    +++ linux/mm/memcontrol.c 2012-02-26 10:44:32.146365398 -0800
    @@ -2944,13 +2944,16 @@ __mem_cgroup_uncharge_common(struct page
    if (!PageCgroupUsed(pc))
    goto unlock_out;

    + anon = PageAnon(page);
    +
    switch (ctype) {
    case MEM_CGROUP_CHARGE_TYPE_MAPPED:
    + anon = true;
    + /* fallthrough */
    case MEM_CGROUP_CHARGE_TYPE_DROP:
    /* See mem_cgroup_prepare_migration() */
    if (page_mapped(page) || PageCgroupMigration(pc))
    goto unlock_out;
    - anon = true;
    break;
    case MEM_CGROUP_CHARGE_TYPE_SWAPOUT:
    if (!PageAnon(page)) { /* Shared memory */
    @@ -2958,10 +2961,8 @@ __mem_cgroup_uncharge_common(struct page
    goto unlock_out;
    } else if (page_mapped(page)) /* Anon */
    goto unlock_out;
    - anon = true;
    break;
    default:
    - anon = false;
    break;
    }


    \
     
     \ /
      Last update: 2012-02-29 06:33    [W:3.346 / U:0.664 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site