[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.LSU.2.00.1203081816170.18242@eggly.anvils>
Date: Thu, 8 Mar 2012 18:33:14 -0800 (PST)
From: Hugh Dickins <hughd@...gle.com>
To: KAMEZAWA Hiroyuki <kamezawa.hiroyu@...fujitsu.com>
cc: Naoya Horiguchi <n-horiguchi@...jp.nec.com>, linux-mm@...ck.org,
Andrew Morton <akpm@...ux-foundation.org>,
Andrea Arcangeli <aarcange@...hat.com>,
Daisuke Nishimura <nishimura@....nes.nec.co.jp>,
Hillf Danton <dhillf@...il.com>, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v3 2/2] memcg: avoid THP split in task migration
On Fri, 9 Mar 2012, KAMEZAWA Hiroyuki wrote:
> > +
> > + page = pmd_page(pmd);
> > + VM_BUG_ON(!page || !PageHead(page));
> > + if (!move_anon() || page_mapcount(page) != 1)
> > + return 0;
>
> Could you add this ?
> ==
> static bool move_check_shared_map(struct page *page)
> {
> /*
> * Handling of shared pages between processes is a big trouble in memcg.
> * Now, we never move shared-mapped pages between memcg at 'task' moving because
> * we have no hint which task the page is really belongs to. For example,
> * When a task does "fork()-> move to the child other group -> exec()", the charges
> * should be stay in the original cgroup.
> * So, check mapcount to determine we can move or not.
> */
> return page_mapcount(page) != 1;
> }
That's a helpful elucidation, thank you. However...
That is not how it has actually been behaving for the last 18 months
(because of the "> 2" bug), so in practice you are asking for a change
in behaviour there.
And it's not how it has been and continues to behave with file pages.
Isn't getting that behaviour in fork-move-exec just a good reason not
to set move_charge_at_immigrate?
I think there are other scenarios where you do want all the pages to
move if move_charge_at_immigrate: and that's certainly easier to
describe and to understand and to code.
But if you do insist on not moving the shared, then it needs to involve
something like mem_cgroup_count_swap_user() on PageSwapCache pages,
rather than just the bare page_mapcount().
I'd rather delete than add code here!
Hugh
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists