lkml.org 
[lkml]   [2011]   [Dec]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [BUGFIX][PATCH] add mem_cgroup_replace_page_cache.
    On Tue, Dec 06, 2011 at 12:39:23PM +0900, KAMEZAWA Hiroyuki wrote:
    >
    > Hm, is this too naive ? better idea is welcome.
    > ==
    > >From 33638351c5cd28af9f47f9ab1c44eeb1f63d9964 Mon Sep 17 00:00:00 2001
    > From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    > Date: Tue, 6 Dec 2011 12:32:32 +0900
    > Subject: [PATCH] memcg: add mem_cgroup_replace_page_cache() for fixing LRU issue.
    >
    > commit ef6a3c6311 adds a function replace_page_cache_page(). This
    > function replaces a page in radix-tree with a new page.
    > At doing this, memory cgroup need to fix up the accounting information.
    > memcg need to check PCG_USED bit etc.
    >
    > In some(many?) case, 'newpage' is on LRU before calling replace_page_cache().
    > So, memcg's LRU accounting information should be fixed, too.
    >
    > This patch adds mem_cgroup_replace_page_cache() and removing old hooks.
    > In that function, old pages will be unaccounted without touching res_counter
    > and new page will be accounted to the memcg (of old page). At overwriting
    > pc->mem_cgroup of newpage, take zone->lru_lock and avoid race with
    > LRU handling.
    >
    > Background:
    > replace_page_cache_page() is called by FUSE code in its splice() handling.
    > Here, 'newpage' is replacing oldpage but this newpage is not a newly allocated
    > page and may be on LRU. LRU mis-accounting will be critical for memory cgroup
    > because rmdir() checks the whole LRU is empty and there is no account leak.
    > If a page is on the other LRU than it should be, rmdir() will fail.
    >
    > Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>

    I think this is okay. It's a tiny bit unfortunate that the migration
    code is more or less duplicated with some optimizations, but I fear
    the other solutions would be more complex and thus not adequate as a
    bug fix.

    Acked-by: Johannes Weiner <hannes@cmpxchg.org>


    \
     
     \ /
      Last update: 2011-12-07 10:23    [W:3.137 / U:1.224 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site