lkml.org 
[lkml]   [2009]   [Nov]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 6/9] ksm: mem cgroup charge swapin copy
    On Tue, 24 Nov 2009 16:51:13 +0000 (GMT)
    Hugh Dickins <hugh.dickins@tiscali.co.uk> wrote:
    > But ksm swapping does require one small change in mem cgroup handling.
    > When do_swap_page()'s call to ksm_might_need_to_copy() does indeed
    > substitute a duplicate page to accommodate a different anon_vma (or a
    > different index), that page escaped mem cgroup accounting, because of
    > the !PageSwapCache check in mem_cgroup_try_charge_swapin().
    >
    > That was returning success without charging, on the assumption that
    > pte_same() would fail after, which is not the case here. Originally I
    > proposed that success, so that an unshrinkable mem cgroup at its limit
    > would not fail unnecessarily; but that's a minor point, and there are
    > plenty of other places where we may fail an overallocation which might
    > later prove unnecessary. So just go ahead and do what all the other
    > exceptions do: proceed to charge current mm.
    >
    > Signed-off-by: Hugh Dickins <hugh.dickins@tiscali.co.uk>

    Ok. Maybe commit_charge will work enough. (I hope so.)

    Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>

    BTW, I'm happy if you adds "How to test" documenation to
    Documentation/vm/ksm.txt or to share some test programs.

    1. Map anonymous pages + madvise(MADV_MERGEABLE)
    2. "echo 1 > /sys/kernel/mm/ksm/run"
    is enough ?

    Thanks,
    -Kame

    > ---
    >
    > mm/memcontrol.c | 7 ++++---
    > 1 file changed, 4 insertions(+), 3 deletions(-)
    >
    > --- ksm5/mm/memcontrol.c 2009-11-14 10:17:02.000000000 +0000
    > +++ ksm6/mm/memcontrol.c 2009-11-22 20:40:37.000000000 +0000
    > @@ -1862,11 +1862,12 @@ int mem_cgroup_try_charge_swapin(struct
    > goto charge_cur_mm;
    > /*
    > * A racing thread's fault, or swapoff, may have already updated
    > - * the pte, and even removed page from swap cache: return success
    > - * to go on to do_swap_page()'s pte_same() test, which should fail.
    > + * the pte, and even removed page from swap cache: in those cases
    > + * do_swap_page()'s pte_same() test will fail; but there's also a
    > + * KSM case which does need to charge the page.
    > */
    > if (!PageSwapCache(page))
    > - return 0;
    > + goto charge_cur_mm;
    > mem = try_get_mem_cgroup_from_swapcache(page);
    > if (!mem)
    > goto charge_cur_mm;
    > --
    > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    > the body of a message to majordomo@vger.kernel.org
    > More majordomo info at http://vger.kernel.org/majordomo-info.html
    > Please read the FAQ at http://www.tux.org/lkml/



    \
     
     \ /
      Last update: 2009-11-30 01:19    [from the cache]
    ©2003-2014 Jasper Spaans. Advertise on this site