linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Mel Gorman <mel@csn.ul.ie>
To: Rik van Riel <riel@redhat.com>
Cc: Andrea Arcangeli <aarcange@redhat.com>,
	Minchan Kim <minchan.kim@gmail.com>,
	KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
	Christoph Lameter <cl@linux-foundation.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Adam Litke <agl@us.ibm.com>, Avi Kivity <avi@redhat.com>,
	David Rientjes <rientjes@google.com>,
	KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [PATCH 04/14] mm,migration: Allow the migration of PageSwapCache pages
Date: Mon, 26 Apr 2010 23:11:03 +0100	[thread overview]
Message-ID: <20100426221102.GB8459@csn.ul.ie> (raw)
In-Reply-To: <4BD60B80.8050605@redhat.com>

On Mon, Apr 26, 2010 at 05:54:08PM -0400, Rik van Riel wrote:
> On 04/24/2010 07:59 AM, Mel Gorman wrote:
>> On Sat, Apr 24, 2010 at 01:13:40PM +0200, Andrea Arcangeli wrote:
>
>>> Also keep in mind expand_downwards which also adjusts
>>> vm_start/vm_pgoff the same way (and without mmap_sem write mode).
>>
>> Will keep it in mind. It's taking the anon_vma lock but once again,
>> there might be more than one anon_vma to worry about and the proper
>> locking still isn't massively clear to me.
>
> The locking for the anon_vma_chain->same_vma list is
> essentially the same as what was used before in mmap
> and anon_vma_prepare.
>
> Either the mmap_sem is held for write, or the mmap_sem
> is held for reading and the page_table_lock is held.
>
> What exactly is the problem that migration is seeing?
>

There are two problems.

Migration isn't holding the mmap_sem for write, for read or the pagetable
lock. It locks the page, unmaps it, puts a migration PTE in place that looks
like a swap entry, copies it and remaps it under the pagetable lock. At no
point does it hold the mmap_sem, but it needs to be sure it finds all the
migration pte it created. Because there are multiple anon_vma's, the locking
is tricky and unclear. I have one patch that locks the anon_vmas as it finds
them but is prepared to start over in the event of contention.

The second appears to be migration ptes that get copied during fork().
This is easier to handle.

I'm testing two patches at the moment and after 8 hours have seen no problem
even though the races are being detected (and handled). If it survives the
night, I'll post them.

-- 
Mel Gorman
Part-time Phd Student                          Linux Technology Center
University of Limerick                         IBM Dublin Software Lab

--
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>

  reply	other threads:[~2010-04-26 22:11 UTC|newest]

Thread overview: 69+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-20 21:01 [PATCH 0/14] Memory Compaction v8 Mel Gorman
2010-04-20 21:01 ` [PATCH 01/14] mm,migration: Take a reference to the anon_vma before migrating Mel Gorman
2010-04-21  2:49   ` KAMEZAWA Hiroyuki
2010-04-20 21:01 ` [PATCH 02/14] mm,migration: Share the anon_vma ref counts between KSM and page migration Mel Gorman
2010-04-20 21:01 ` [PATCH 03/14] mm,migration: Do not try to migrate unmapped anonymous pages Mel Gorman
2010-04-20 21:01 ` [PATCH 04/14] mm,migration: Allow the migration of PageSwapCache pages Mel Gorman
2010-04-21 14:30   ` Christoph Lameter
2010-04-21 15:00     ` Mel Gorman
2010-04-21 15:05       ` Christoph Lameter
2010-04-21 15:14         ` Mel Gorman
2010-04-21 15:31           ` Christoph Lameter
2010-04-21 15:34             ` Mel Gorman
2010-04-21 15:46               ` Christoph Lameter
2010-04-22  9:28                 ` Mel Gorman
2010-04-22  9:46                   ` KAMEZAWA Hiroyuki
2010-04-22 10:13                     ` Minchan Kim
2010-04-22 10:31                       ` KAMEZAWA Hiroyuki
2010-04-22 10:51                         ` KAMEZAWA Hiroyuki
2010-04-22 14:14                           ` Mel Gorman
2010-04-22 14:18                             ` Minchan Kim
2010-04-22 15:40                               ` Mel Gorman
2010-04-22 16:13                                 ` Mel Gorman
2010-04-22 19:29                                 ` Mel Gorman
2010-04-22 19:40                                   ` Christoph Lameter
2010-04-22 23:52                                     ` KAMEZAWA Hiroyuki
2010-04-23  9:03                                       ` Mel Gorman
2010-04-22 14:23                           ` Minchan Kim
2010-04-22 14:40                             ` Minchan Kim
2010-04-22 15:44                               ` Mel Gorman
2010-04-23 18:31                                 ` Andrea Arcangeli
2010-04-23 19:23                                   ` Mel Gorman
2010-04-23 19:39                                     ` Andrea Arcangeli
2010-04-23 21:35                                       ` Andrea Arcangeli
2010-04-24 10:52                                         ` Mel Gorman
2010-04-24 11:13                                           ` Andrea Arcangeli
2010-04-24 11:59                                             ` Mel Gorman
2010-04-24 14:30                                               ` Andrea Arcangeli
2010-04-26 21:54                                               ` Rik van Riel
2010-04-26 22:11                                                 ` Mel Gorman [this message]
2010-04-26 22:26                                                   ` Andrea Arcangeli
2010-04-25 14:41                                           ` Andrea Arcangeli
2010-04-27  9:40                                             ` Mel Gorman
2010-04-27 10:41                                               ` KAMEZAWA Hiroyuki
2010-04-27 11:12                                                 ` Mel Gorman
2010-04-27 15:42                                               ` Andrea Arcangeli
2010-04-24 10:50                                       ` Mel Gorman
2010-04-22 15:14                             ` Christoph Lameter
2010-04-23  3:39                               ` Paul E. McKenney
2010-04-23  4:55                               ` Minchan Kim
2010-04-21 23:59     ` KAMEZAWA Hiroyuki
2010-04-22  0:11       ` Minchan Kim
2010-04-20 21:01 ` [PATCH 05/14] mm: Allow CONFIG_MIGRATION to be set without CONFIG_NUMA or memory hot-remove Mel Gorman
2010-04-20 21:01 ` [PATCH 06/14] mm: Export unusable free space index via debugfs Mel Gorman
2010-04-20 21:01 ` [PATCH 07/14] mm: Export fragmentation " Mel Gorman
2010-04-20 21:01 ` [PATCH 08/14] mm: Move definition for LRU isolation modes to a header Mel Gorman
2010-04-20 21:01 ` [PATCH 09/14] mm,compaction: Memory compaction core Mel Gorman
2010-04-20 21:01 ` [PATCH 10/14] mm,compaction: Add /proc trigger for memory compaction Mel Gorman
2010-04-20 21:01 ` [PATCH 11/14] mm,compaction: Add /sys trigger for per-node " Mel Gorman
2010-04-20 21:01 ` [PATCH 12/14] mm,compaction: Direct compact when a high-order allocation fails Mel Gorman
2010-05-05 12:19   ` [PATCH] fix count_vm_event preempt in memory compaction direct reclaim Andrea Arcangeli
2010-05-05 12:51     ` Mel Gorman
2010-05-05 13:11       ` Andrea Arcangeli
2010-05-05 13:55         ` Mel Gorman
2010-05-05 14:48           ` Andrea Arcangeli
2010-05-05 15:14             ` Mel Gorman
2010-05-05 15:25               ` Andrea Arcangeli
2010-05-05 15:32                 ` Mel Gorman
2010-04-20 21:01 ` [PATCH 13/14] mm,compaction: Add a tunable that decides when memory should be compacted and when it should be reclaimed Mel Gorman
2010-04-20 21:01 ` [PATCH 14/14] mm,compaction: Defer compaction using an exponential backoff when compaction fails Mel Gorman

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=20100426221102.GB8459@csn.ul.ie \
    --to=mel@csn.ul.ie \
    --cc=aarcange@redhat.com \
    --cc=agl@us.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=avi@redhat.com \
    --cc=cl@linux-foundation.org \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=kosaki.motohiro@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=minchan.kim@gmail.com \
    --cc=riel@redhat.com \
    --cc=rientjes@google.com \
    /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