From: Hugh Dickins <hugh.dickins@tiscali.co.uk>
To: Balbir Singh <balbir@linux.vnet.ibm.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Izik Eidus <ieidus@redhat.com>,
Andrea Arcangeli <aarcange@redhat.com>,
Chris Wright <chrisw@redhat.com>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [PATCH 6/9] ksm: mem cgroup charge swapin copy
Date: Wed, 25 Nov 2009 17:12:13 +0000 (GMT) [thread overview]
Message-ID: <Pine.LNX.4.64.0911251646340.19522@sister.anvils> (raw)
In-Reply-To: <20091125142355.GD2970@balbir.in.ibm.com>
On Wed, 25 Nov 2009, Balbir Singh wrote:
> * Hugh Dickins <hugh.dickins@tiscali.co.uk> [2009-11-24 16:51:13]:
>
> > 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().
> >
>
> The duplicate page doesn't show up as PageSwapCache
That's right.
> or are we optimizing
> for the race condition where the page is not in SwapCache?
No, optimization wasn't on my mind at all. To be honest, it's slightly
worsening the case of the race in which another thread has independently
faulted it in, and then removed it from swap cache. But I think we'll
agree that that's rare enough a case that a few more cycles doing it
won't matter.
> I should probably look at the full series.
2/9 is the one which brings the problem: it's ksm_might_need_to_copy()
(an inline which tests for the condition) and ksm_does_need_to_copy()
(which makes a duplicate page when the condition has been found so).
The problem arises because an Anon struct page contains a pointer to
its anon_vma, used to locate its ptes when swapping. Suddenly, with
KSM swapping, an anon page may get read in from swap, faulted in and
pointed to its anon_vma, everything fine; but then faulted in again
somewhere else, and needs to be pointed to a different anon_vma...
Lose its anon_vma and it becomes unswappable, not a good choice when
trying to extend swappability: so instead we allocate a duplicate page
just to point to the different anon_vma; and if they last long enough,
unchanged, KSM will come around again to find them the same and
remerge them. Not an efficient solution, but a simple solution,
much in keeping with the way KSM already works.
The duplicate page is not PageSwapCache: certainly it crossed my mind
to try making it PageSwapCache like the original, but I think that
raises lots of other problems (how do we make the radix_tree slot
for that offset hold two page pointers?).
Hugh
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2009-11-25 17:12 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-24 16:37 [PATCH 0/9] ksm: swapping Hugh Dickins
2009-11-24 16:40 ` [PATCH 1/9] ksm: fix mlockfreed to munlocked Hugh Dickins
2009-11-24 23:53 ` Rik van Riel
2009-11-26 16:20 ` Mel Gorman
2009-11-27 12:45 ` Hugh Dickins
2009-11-30 6:01 ` KOSAKI Motohiro
2009-11-30 12:26 ` Hugh Dickins
2009-11-30 21:27 ` Lee Schermerhorn
2009-12-01 11:14 ` Mel Gorman
2009-11-24 16:42 ` [PATCH 2/9] ksm: let shared pages be swappable Hugh Dickins
2009-11-30 0:46 ` KAMEZAWA Hiroyuki
2009-11-30 9:15 ` KOSAKI Motohiro
2009-11-30 12:38 ` Hugh Dickins
2009-12-01 4:14 ` KOSAKI Motohiro
2009-11-30 11:55 ` Hugh Dickins
2009-11-30 12:07 ` Andrea Arcangeli
2009-12-01 0:39 ` KAMEZAWA Hiroyuki
2009-12-01 6:32 ` Chris Wright
2009-12-01 9:11 ` Andrea Arcangeli
2009-12-01 9:28 ` KOSAKI Motohiro
2009-12-01 9:37 ` Andrea Arcangeli
2009-12-01 9:46 ` KOSAKI Motohiro
2009-12-01 9:59 ` Andrea Arcangeli
2009-12-02 5:08 ` Rik van Riel
2009-12-02 12:55 ` Andrea Arcangeli
2009-12-03 5:15 ` KOSAKI Motohiro
2009-12-04 5:06 ` KOSAKI Motohiro
2009-12-04 5:16 ` KAMEZAWA Hiroyuki
2009-12-04 14:49 ` Andrea Arcangeli
2009-12-04 17:16 ` Chris Wright
2009-12-04 18:53 ` Andrea Arcangeli
2009-12-04 19:03 ` Chris Wright
2009-12-09 0:43 ` KAMEZAWA Hiroyuki
2009-12-09 1:04 ` Chris Wright
2009-12-09 16:12 ` Andrea Arcangeli
2009-12-09 23:54 ` KAMEZAWA Hiroyuki
2009-12-04 14:45 ` Andrea Arcangeli
2009-12-04 16:21 ` Rik van Riel
2009-11-24 16:43 ` [PATCH 3/9] ksm: hold anon_vma in rmap_item Hugh Dickins
2009-11-24 16:45 ` [PATCH 4/9] ksm: take keyhole reference to page Hugh Dickins
2009-11-24 16:48 ` [PATCH 5/9] ksm: share anon page without allocating Hugh Dickins
2009-11-30 0:04 ` KAMEZAWA Hiroyuki
2009-11-30 11:18 ` Hugh Dickins
2009-12-01 0:02 ` KAMEZAWA Hiroyuki
2009-11-24 16:51 ` [PATCH 6/9] ksm: mem cgroup charge swapin copy Hugh Dickins
2009-11-25 14:23 ` Balbir Singh
2009-11-25 17:12 ` Hugh Dickins [this message]
2009-11-25 17:36 ` Balbir Singh
2009-11-30 0:13 ` KAMEZAWA Hiroyuki
2009-11-30 11:40 ` Hugh Dickins
2009-11-24 16:54 ` [PATCH 7/9] ksm: rmap_walk to remove_migation_ptes Hugh Dickins
2009-11-24 16:56 ` [PATCH 8/9] ksm: memory hotremove migration only Hugh Dickins
2009-11-24 16:57 ` [PATCH 9/9] ksm: remove unswappable max_kernel_pages Hugh Dickins
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Pine.LNX.4.64.0911251646340.19522@sister.anvils \
--to=hugh.dickins@tiscali.co.uk \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=balbir@linux.vnet.ibm.com \
--cc=chrisw@redhat.com \
--cc=ieidus@redhat.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=nishimura@mxp.nes.nec.co.jp \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox