linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* page migration: Fail with error if swap not setup
@ 2006-03-15  3:05 Christoph Lameter
  2006-03-15  3:24 ` Andrew Morton
  2006-03-15 14:47 ` Lee Schermerhorn
  0 siblings, 2 replies; 15+ messages in thread
From: Christoph Lameter @ 2006-03-15  3:05 UTC (permalink / raw)
  To: akpm; +Cc: linux-mm

Currently the migration of anonymous pages will silently fail if no swap 
is setup. This patch makes page migration functions check for available 
swap and fail with -ENODEV if no swap space is available.

Signed-off-by: Christoph Lameter <clameter@sgi.com>

Index: linux-2.6.16-rc6/mm/mempolicy.c
===================================================================
--- linux-2.6.16-rc6.orig/mm/mempolicy.c	2006-03-14 16:31:15.000000000 -0800
+++ linux-2.6.16-rc6/mm/mempolicy.c	2006-03-14 17:25:09.000000000 -0800
@@ -330,9 +330,14 @@ check_range(struct mm_struct *mm, unsign
 	int err;
 	struct vm_area_struct *first, *vma, *prev;
 
-	/* Clear the LRU lists so pages can be isolated */
-	if (flags & (MPOL_MF_MOVE | MPOL_MF_MOVE_ALL))
+	if (flags & (MPOL_MF_MOVE | MPOL_MF_MOVE_ALL)) {
+		/* Must have available swap entries for migration */
+		if (nr_swap_pages <=0)
+			return ERR_PTR(-ENODEV);
+
+		/* Clear the LRU lists so pages can be isolated */
 		lru_add_drain_all();
+	}
 
 	first = find_vma(mm, start);
 	if (!first)

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

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: page migration: Fail with error if swap not setup
  2006-03-15  3:05 page migration: Fail with error if swap not setup Christoph Lameter
@ 2006-03-15  3:24 ` Andrew Morton
  2006-03-15  3:49   ` Christoph Lameter
  2006-03-15  3:53   ` Christoph Lameter
  2006-03-15 14:47 ` Lee Schermerhorn
  1 sibling, 2 replies; 15+ messages in thread
From: Andrew Morton @ 2006-03-15  3:24 UTC (permalink / raw)
  To: Christoph Lameter; +Cc: linux-mm

Christoph Lameter <clameter@sgi.com> wrote:
>
> Currently the migration of anonymous pages will silently fail if no swap 
> is setup.

Why?

I mean, if something tries to allocate a swap page and that fails then the
error should be propagated back.  That's race-free.

> This patch makes page migration functions check for available 
> swap and fail with -ENODEV if no swap space is available.
> 
> Signed-off-by: Christoph Lameter <clameter@sgi.com>
> 
> Index: linux-2.6.16-rc6/mm/mempolicy.c
> ===================================================================
> --- linux-2.6.16-rc6.orig/mm/mempolicy.c	2006-03-14 16:31:15.000000000 -0800
> +++ linux-2.6.16-rc6/mm/mempolicy.c	2006-03-14 17:25:09.000000000 -0800
> @@ -330,9 +330,14 @@ check_range(struct mm_struct *mm, unsign
>  	int err;
>  	struct vm_area_struct *first, *vma, *prev;
>  
> -	/* Clear the LRU lists so pages can be isolated */
> -	if (flags & (MPOL_MF_MOVE | MPOL_MF_MOVE_ALL))
> +	if (flags & (MPOL_MF_MOVE | MPOL_MF_MOVE_ALL)) {
> +		/* Must have available swap entries for migration */
> +		if (nr_swap_pages <=0)

(ObCodingStyleWhine)

> +			return ERR_PTR(-ENODEV);
> +
> +		/* Clear the LRU lists so pages can be isolated */
>  		lru_add_drain_all();
> +	}
>  

Whereas this appears to be racy...

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

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: page migration: Fail with error if swap not setup
  2006-03-15  3:24 ` Andrew Morton
@ 2006-03-15  3:49   ` Christoph Lameter
  2006-03-15  3:52     ` Andrew Morton
  2006-03-15  3:53   ` Christoph Lameter
  1 sibling, 1 reply; 15+ messages in thread
From: Christoph Lameter @ 2006-03-15  3:49 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-mm

On Tue, 14 Mar 2006, Andrew Morton wrote:

> Christoph Lameter <clameter@sgi.com> wrote:
> >
> > Currently the migration of anonymous pages will silently fail if no swap 
> > is setup.
> 
> Why?

The allocation of the swap page will fail in migrate_pages() and then the 
page is going on the permant failure list. Hmm... This is not a real 
total failure of page migration since file backed pages can be migrated 
without having swap and page migration will continue for those. However, 
all anonymous pages will end up on the failed list. At the end of page 
migration these will be returned to the LRU. Thus they stay where they 
were.

> I mean, if something tries to allocate a swap page and that fails then the
> error should be propagated back.  That's race-free.

It is propaged back in the form of a list of pages that failed to migrate. 
Its just no clear at the end what the reasons for the individual failures
were. Its better just to check for swap availability before migration.

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

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: page migration: Fail with error if swap not setup
  2006-03-15  3:49   ` Christoph Lameter
@ 2006-03-15  3:52     ` Andrew Morton
  2006-03-15  3:59       ` Christoph Lameter
  0 siblings, 1 reply; 15+ messages in thread
From: Andrew Morton @ 2006-03-15  3:52 UTC (permalink / raw)
  To: Christoph Lameter; +Cc: linux-mm

Christoph Lameter <clameter@sgi.com> wrote:
>
> On Tue, 14 Mar 2006, Andrew Morton wrote:
> 
> > Christoph Lameter <clameter@sgi.com> wrote:
> > >
> > > Currently the migration of anonymous pages will silently fail if no swap 
> > > is setup.
> > 
> > Why?
> 
> The allocation of the swap page will fail in migrate_pages() and then the 
> page is going on the permant failure list. Hmm... This is not a real 
> total failure of page migration since file backed pages can be migrated 
> without having swap and page migration will continue for those. However, 
> all anonymous pages will end up on the failed list. At the end of page 
> migration these will be returned to the LRU. Thus they stay where they 
> were.
> 
> > I mean, if something tries to allocate a swap page and that fails then the
> > error should be propagated back.  That's race-free.
> 
> It is propaged back in the form of a list of pages that failed to migrate. 
> Its just no clear at the end what the reasons for the individual failures
> were. Its better just to check for swap availability before migration.

But the operation can still fail if we run out of swapspace partway through
- so this problem can still occur.  The patch just makes it (much) less
frequent.

Surely it's possible to communicate -ENOSWAP correctly and reliably?

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

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: page migration: Fail with error if swap not setup
  2006-03-15  3:24 ` Andrew Morton
  2006-03-15  3:49   ` Christoph Lameter
@ 2006-03-15  3:53   ` Christoph Lameter
  1 sibling, 0 replies; 15+ messages in thread
From: Christoph Lameter @ 2006-03-15  3:53 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Christoph Lameter, linux-mm

On Tue, 14 Mar 2006, Andrew Morton wrote:

> >  		lru_add_drain_all();
> > +	}
> >  
> 
> Whereas this appears to be racy...

Migration just makes the best effort. Page that are moved off the LRU 
after the draining end up on the failed migration list and will not be 
migrated.

Sorry about the blank. New patch with more explanations?



page migration: Fail with error if swap not setup

Currently the migration of anonymous pages will silently fail if no
swap is setup. This patch makes page migration functions to check
for available swap and fail with -ENODEV if no swap space is available.

Signed-off-by: Christoph Lameter <clameter@sgi.com>

Index: linux-2.6.16-rc6/mm/mempolicy.c
===================================================================
--- linux-2.6.16-rc6.orig/mm/mempolicy.c	2006-03-14 16:31:15.000000000 -0800
+++ linux-2.6.16-rc6/mm/mempolicy.c	2006-03-14 19:52:25.000000000 -0800
@@ -330,9 +330,19 @@ check_range(struct mm_struct *mm, unsign
 	int err;
 	struct vm_area_struct *first, *vma, *prev;
 
-	/* Clear the LRU lists so pages can be isolated */
-	if (flags & (MPOL_MF_MOVE | MPOL_MF_MOVE_ALL))
+	if (flags & (MPOL_MF_MOVE | MPOL_MF_MOVE_ALL)) {
+		/* Must have swap device for migration */
+		if (nr_swap_pages <= 0)
+			return ERR_PTR(-ENODEV);
+
+		/*
+		 * Clear the LRU lists so pages can be isolated.
+		 * Note that pages may be moved off the LRU after we have
+		 * drained them. Those pages will fail to migrate like other
+		 * pages that may be busy.
+		 */
 		lru_add_drain_all();
+	}
 
 	first = find_vma(mm, start);
 	if (!first)
 

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

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: page migration: Fail with error if swap not setup
  2006-03-15  3:52     ` Andrew Morton
@ 2006-03-15  3:59       ` Christoph Lameter
  2006-03-15 12:49         ` Nick Piggin
  0 siblings, 1 reply; 15+ messages in thread
From: Christoph Lameter @ 2006-03-15  3:59 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-mm

On Tue, 14 Mar 2006, Andrew Morton wrote:

> But the operation can still fail if we run out of swapspace partway through
> - so this problem can still occur.  The patch just makes it (much) less
> frequent.
> 
> Surely it's possible to communicate -ENOSWAP correctly and reliably?

There are a number of possible failure conditions. The strategy of the 
migration function is to migrate as much as possible and return the rest 
without giving any reason. migrate_pages() returns the number of leftover 
pages not the reasons they failed.


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

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: page migration: Fail with error if swap not setup
  2006-03-15  3:59       ` Christoph Lameter
@ 2006-03-15 12:49         ` Nick Piggin
  2006-03-15 16:35           ` Christoph Lameter
  0 siblings, 1 reply; 15+ messages in thread
From: Nick Piggin @ 2006-03-15 12:49 UTC (permalink / raw)
  To: Christoph Lameter; +Cc: Andrew Morton, linux-mm

Christoph Lameter wrote:
> On Tue, 14 Mar 2006, Andrew Morton wrote:
> 
> 
>>But the operation can still fail if we run out of swapspace partway through
>>- so this problem can still occur.  The patch just makes it (much) less
>>frequent.
>>
>>Surely it's possible to communicate -ENOSWAP correctly and reliably?
> 
> 
> There are a number of possible failure conditions. The strategy of the 
> migration function is to migrate as much as possible and return the rest 
> without giving any reason. migrate_pages() returns the number of leftover 
> pages not the reasons they failed.
> 

Could you return the reason the first failing page failed. At least then
the caller can have some idea about what is needed to make further progress.

-- 
SUSE Labs, Novell Inc.
Send instant messages to your online friends http://au.messenger.yahoo.com 

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

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: page migration: Fail with error if swap not setup
  2006-03-15  3:05 page migration: Fail with error if swap not setup Christoph Lameter
  2006-03-15  3:24 ` Andrew Morton
@ 2006-03-15 14:47 ` Lee Schermerhorn
  2006-03-15 17:11   ` Christoph Lameter
  1 sibling, 1 reply; 15+ messages in thread
From: Lee Schermerhorn @ 2006-03-15 14:47 UTC (permalink / raw)
  To: Christoph Lameter; +Cc: linux-mm, Marcelo Tosatti

On Tue, 2006-03-14 at 19:05 -0800, Christoph Lameter wrote:
> Currently the migration of anonymous pages will silently fail if no swap 
> is setup. This patch makes page migration functions check for available 
> swap and fail with -ENODEV if no swap space is available.

Migration Cache, anyone?  ;-)



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

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: page migration: Fail with error if swap not setup
  2006-03-15 12:49         ` Nick Piggin
@ 2006-03-15 16:35           ` Christoph Lameter
  0 siblings, 0 replies; 15+ messages in thread
From: Christoph Lameter @ 2006-03-15 16:35 UTC (permalink / raw)
  To: Nick Piggin; +Cc: Christoph Lameter, Andrew Morton, linux-mm

On Wed, 15 Mar 2006, Nick Piggin wrote:

> > There are a number of possible failure conditions. The strategy of the
> > migration function is to migrate as much as possible and return the rest
> > without giving any reason. migrate_pages() returns the number of leftover
> > pages not the reasons they failed.
> Could you return the reason the first failing page failed. At least then
> the caller can have some idea about what is needed to make further progress.

The return value of migrate_pages() is the number of pages that were not 
migrated. It is up to the caller to figure out why a page was not 
migrated. We could change that in the future but that would be a big 
change to the code. Migrate_pages() makes the best effort at 
migration and categorizes failing pages into those who with permanent 
failures and those which may be retriable. Currently page migration simply 
skips over any soft or hard failures to migrate pages and leaves them in 
place. The current page migration code is intentionally designed to only 
make a reasonable attempt on a group of pages. Earlier code attempted to 
guarantee migration but that never worked the right way and introduced 
unacceptable delays while holding locks.

The calling program may go through the list of failing pages and 
investigate the reasons by inspecting page count, mapping, swap etc. I 
guess we could add some sort of a callback in the future that determines 
what to do on failure. Or add some flags to return immediately if 
migration fails.

But I think the current code is just fine.

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

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: page migration: Fail with error if swap not setup
  2006-03-15 14:47 ` Lee Schermerhorn
@ 2006-03-15 17:11   ` Christoph Lameter
  2006-03-15 20:47     ` Marcelo Tosatti
  0 siblings, 1 reply; 15+ messages in thread
From: Christoph Lameter @ 2006-03-15 17:11 UTC (permalink / raw)
  To: Lee Schermerhorn; +Cc: linux-mm, nickpiggin, akpm, Marcelo Tosatti

On Wed, 15 Mar 2006, Lee Schermerhorn wrote:

> On Tue, 2006-03-14 at 19:05 -0800, Christoph Lameter wrote:
> > Currently the migration of anonymous pages will silently fail if no swap 
> > is setup. This patch makes page migration functions check for available 
> > swap and fail with -ENODEV if no swap space is available.
> 
> Migration Cache, anyone?  ;-)

Yes, but please cleanly integrated into the way swap works.

At that point we can also follow Marcelo's suggestion and move the 
migration code into mm/mmigrate.c because it then becomes easier to 
separate the migration code from swap.

There are a couple of other pending things that are also listed in 
the todo list in Documentation/vm/page-migration

1. Somehow safely track the prior mm_structs that a pte was mapped to 
(increase mm refcount?) and restore those mappings to avoid faults to 
restore ptes after a page was moved.

2. Avoid dirty bit faults for dirty pages.

More things to consider:

- Add migration support for more filesystems.

- Lazy migration in the fault paths (seems to depend on first implementing 
proper policy support for file backed pages).

- Support migration of VM_LOCKED pages (First question is if we want to 
  have that at all. Does VM_LOCKED imply that a page is fixed at a 
  specific location in memory?).

- Think about how to realize migration of kernel pages (some arches have
  page table for kernel space, one could potentially remap the address 
  instead of going through all the twists and turns of the existing 
  hotplug approach. See also what virtual iron has done about this.).

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

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: page migration: Fail with error if swap not setup
  2006-03-15 20:47     ` Marcelo Tosatti
@ 2006-03-15 18:08       ` Christoph Lameter
  2006-03-15 21:39         ` Marcelo Tosatti
  0 siblings, 1 reply; 15+ messages in thread
From: Christoph Lameter @ 2006-03-15 18:08 UTC (permalink / raw)
  To: Marcelo Tosatti; +Cc: Lee Schermerhorn, linux-mm, nickpiggin, akpm

On Wed, 15 Mar 2006, Marcelo Tosatti wrote:

> > At that point we can also follow Marcelo's suggestion and move the 
> > migration code into mm/mmigrate.c because it then becomes easier to 
> > separate the migration code from swap. 
> 
> Please - the migration code really does not belong to mm/vmscan.c.

It performs scanning and has lots of overlapping functionality with 
swap. Migration was developed based on the swap code in vmscan.c.

> On the assumption that those page mappings are going to be used, which
> is questionable.
> 
> Lazily faulting the page mappings instead of "pre-faulting" really
> depends on the load (tradeoff) - might be interesting to make it 
> selectable.

If the ptes are removed then the mapcount of the pages also sinks which 
makes it likely that the swapper will evict these.

> > - Support migration of VM_LOCKED pages (First question is if we want to 
> >   have that at all. Does VM_LOCKED imply that a page is fixed at a 
> >   specific location in memory?).
> Cryptographic  security  software often handles critical bytes like passwords
> or secret keys as data structures. As a result of paging, these secrets
> could  be  transferred  onto a persistent swap store medium, where they
> might be accessible to the enemy long after the security  software  has
> erased  the secrets in RAM and terminated. 

That does not answer the question if VM_LOCKED pages should be 
migratable. We all agree that they should not show up on swap.

> > - Think about how to realize migration of kernel pages (some arches have
> >   page table for kernel space, one could potentially remap the address 
> >   instead of going through all the twists and turns of the existing 
> >   hotplug approach. See also what virtual iron has done about this.).
> 
> Locking sounds tricky, how do you guarantee that nobody is going to
> access such kernel virtual addresses (and their TLB-cached entries)
> while they're physical address is being changed ?

I guess this could be done by having a very simple fault handler for 
kernel memory that would simply wait on a valid pte.

Then invalidate pte, move the page and reinstall pte.

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

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: page migration: Fail with error if swap not setup
  2006-03-15 21:39         ` Marcelo Tosatti
@ 2006-03-15 19:00           ` Christoph Lameter
  2006-03-15 23:06             ` Marcelo Tosatti
  0 siblings, 1 reply; 15+ messages in thread
From: Christoph Lameter @ 2006-03-15 19:00 UTC (permalink / raw)
  To: Marcelo Tosatti; +Cc: Lee Schermerhorn, linux-mm, nickpiggin, akpm

On Wed, 15 Mar 2006, Marcelo Tosatti wrote:

> > That does not answer the question if VM_LOCKED pages should be 
> > migratable. We all agree that they should not show up on swap.
> 
> I guess you missed the first part of the man page:
> 
> All pages which contain a part of the specified memory range are
> guaranteed be resident in RAM when the mlock system call returns
> successfully and they are guaranteed to stay in RAM until the pages are
> unlocked by munlock or munlockall, until the pages are unmapped via
> munmap, or until the process terminates or starts another program with
> exec. Child processes do not inherit page locks across a fork.
> 
> That is, mlock() only guarantees that pages are kept in RAM and not
> swapped. It does seem to refer to physical placing of pages.

If VM_LOCKED is not pinning memory then how does one pin memory? There are 
likely applications / drivers that require memory not to move. Increase 
pagecount?

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

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: page migration: Fail with error if swap not setup
  2006-03-15 17:11   ` Christoph Lameter
@ 2006-03-15 20:47     ` Marcelo Tosatti
  2006-03-15 18:08       ` Christoph Lameter
  0 siblings, 1 reply; 15+ messages in thread
From: Marcelo Tosatti @ 2006-03-15 20:47 UTC (permalink / raw)
  To: Christoph Lameter; +Cc: Lee Schermerhorn, linux-mm, nickpiggin, akpm

On Wed, Mar 15, 2006 at 09:11:07AM -0800, Christoph Lameter wrote:
> On Wed, 15 Mar 2006, Lee Schermerhorn wrote:
> 
> > On Tue, 2006-03-14 at 19:05 -0800, Christoph Lameter wrote:
> > > Currently the migration of anonymous pages will silently fail if no swap 
> > > is setup. This patch makes page migration functions check for available 
> > > swap and fail with -ENODEV if no swap space is available.
> > 
> > Migration Cache, anyone?  ;-)
> 
> Yes, but please cleanly integrated into the way swap works.
> 
> At that point we can also follow Marcelo's suggestion and move the 
> migration code into mm/mmigrate.c because it then becomes easier to 
> separate the migration code from swap. 

Please - the migration code really does not belong to mm/vmscan.c.

> There are a couple of other pending things that are also listed in 
> the todo list in Documentation/vm/page-migration
> 
> 1. Somehow safely track the prior mm_structs that a pte was mapped to 
> (increase mm refcount?) and restore those mappings to avoid faults to 
> restore ptes after a page was moved.

On the assumption that those page mappings are going to be used, which
is questionable.

Lazily faulting the page mappings instead of "pre-faulting" really
depends on the load (tradeoff) - might be interesting to make it 
selectable.

> 2. Avoid dirty bit faults for dirty pages.

When prefaulting as you suggest, yep...

> More things to consider:
> 
> - Add migration support for more filesystems.
> 
> - Lazy migration in the fault paths (seems to depend on first implementing 
> proper policy support for file backed pages).
> 
> - Support migration of VM_LOCKED pages (First question is if we want to 
>   have that at all. Does VM_LOCKED imply that a page is fixed at a 
>   specific location in memory?).

No, mlock(2):

mlock disables paging for the memory in the range starting at addr with
length len bytes. All pages which contain a part of the specified  mem-
ory  range are guaranteed be resident in RAM when the mlock system call
returns successfully and they are guaranteed to stay in RAM  until  the
pages  are  unlocked  by  munlock  or  munlockall,  until the pages are
unmapped via munmap, or until the process terminates or starts  another
program  with exec.  Child processes do not inherit page locks across a
fork.

...

Cryptographic  security  software often handles critical bytes like passwords
or secret keys as data structures. As a result of paging, these secrets
could  be  transferred  onto a persistent swap store medium, where they
might be accessible to the enemy long after the security  software  has
erased  the secrets in RAM and terminated. 

> - Think about how to realize migration of kernel pages (some arches have
>   page table for kernel space, one could potentially remap the address 
>   instead of going through all the twists and turns of the existing 
>   hotplug approach. See also what virtual iron has done about this.).

Locking sounds tricky, how do you guarantee that nobody is going to
access such kernel virtual addresses (and their TLB-cached entries)
while they're physical address is being changed ?


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

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: page migration: Fail with error if swap not setup
  2006-03-15 18:08       ` Christoph Lameter
@ 2006-03-15 21:39         ` Marcelo Tosatti
  2006-03-15 19:00           ` Christoph Lameter
  0 siblings, 1 reply; 15+ messages in thread
From: Marcelo Tosatti @ 2006-03-15 21:39 UTC (permalink / raw)
  To: Christoph Lameter; +Cc: Lee Schermerhorn, linux-mm, nickpiggin, akpm

On Wed, Mar 15, 2006 at 10:08:34AM -0800, Christoph Lameter wrote:
> On Wed, 15 Mar 2006, Marcelo Tosatti wrote:
> 
> > > At that point we can also follow Marcelo's suggestion and move the 
> > > migration code into mm/mmigrate.c because it then becomes easier to 
> > > separate the migration code from swap. 
> > 
> > Please - the migration code really does not belong to mm/vmscan.c.
> 
> It performs scanning and has lots of overlapping functionality with 
> swap. Migration was developed based on the swap code in vmscan.c.
> 
> > On the assumption that those page mappings are going to be used, which
> > is questionable.
> > 
> > Lazily faulting the page mappings instead of "pre-faulting" really
> > depends on the load (tradeoff) - might be interesting to make it 
> > selectable.
> 
> If the ptes are removed then the mapcount of the pages also sinks which 
> makes it likely that the swapper will evict these.
> 
> > > - Support migration of VM_LOCKED pages (First question is if we want to 
> > >   have that at all. Does VM_LOCKED imply that a page is fixed at a 
> > >   specific location in memory?).
> > Cryptographic  security  software often handles critical bytes like passwords
> > or secret keys as data structures. As a result of paging, these secrets
> > could  be  transferred  onto a persistent swap store medium, where they
> > might be accessible to the enemy long after the security  software  has
> > erased  the secrets in RAM and terminated. 
> 
> That does not answer the question if VM_LOCKED pages should be 
> migratable. We all agree that they should not show up on swap.

I guess you missed the first part of the man page:

All pages which contain a part of the specified memory range are
guaranteed be resident in RAM when the mlock system call returns
successfully and they are guaranteed to stay in RAM until the pages are
unlocked by munlock or munlockall, until the pages are unmapped via
munmap, or until the process terminates or starts another program with
exec. Child processes do not inherit page locks across a fork.

That is, mlock() only guarantees that pages are kept in RAM and not
swapped. It does seem to refer to physical placing of pages.

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

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: page migration: Fail with error if swap not setup
  2006-03-15 19:00           ` Christoph Lameter
@ 2006-03-15 23:06             ` Marcelo Tosatti
  0 siblings, 0 replies; 15+ messages in thread
From: Marcelo Tosatti @ 2006-03-15 23:06 UTC (permalink / raw)
  To: Christoph Lameter; +Cc: Lee Schermerhorn, linux-mm, nickpiggin, akpm

On Wed, Mar 15, 2006 at 11:00:31AM -0800, Christoph Lameter wrote:
> On Wed, 15 Mar 2006, Marcelo Tosatti wrote:
> 
> > > That does not answer the question if VM_LOCKED pages should be 
> > > migratable. We all agree that they should not show up on swap.
> > 
> > I guess you missed the first part of the man page:
> > 
> > All pages which contain a part of the specified memory range are
> > guaranteed be resident in RAM when the mlock system call returns
> > successfully and they are guaranteed to stay in RAM until the pages are
> > unlocked by munlock or munlockall, until the pages are unmapped via
> > munmap, or until the process terminates or starts another program with
> > exec. Child processes do not inherit page locks across a fork.
> > 
> > That is, mlock() only guarantees that pages are kept in RAM and not
> > swapped. It does seem to refer to physical placing of pages.
> 
> If VM_LOCKED is not pinning memory then how does one pin memory? There are 
> likely applications / drivers that require memory not to move. Increase 
> pagecount?

Err, I meant that mlock() does _not_ refer to physical placing of pages, 
it only refers to guaranteed availability of page in RAM (as can be read
in the man page).

Now drivers using VM_LOCKED is another history... 

In the end my comments haven't been useful at all, oh well.

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

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2006-03-15 23:06 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-03-15  3:05 page migration: Fail with error if swap not setup Christoph Lameter
2006-03-15  3:24 ` Andrew Morton
2006-03-15  3:49   ` Christoph Lameter
2006-03-15  3:52     ` Andrew Morton
2006-03-15  3:59       ` Christoph Lameter
2006-03-15 12:49         ` Nick Piggin
2006-03-15 16:35           ` Christoph Lameter
2006-03-15  3:53   ` Christoph Lameter
2006-03-15 14:47 ` Lee Schermerhorn
2006-03-15 17:11   ` Christoph Lameter
2006-03-15 20:47     ` Marcelo Tosatti
2006-03-15 18:08       ` Christoph Lameter
2006-03-15 21:39         ` Marcelo Tosatti
2006-03-15 19:00           ` Christoph Lameter
2006-03-15 23:06             ` Marcelo Tosatti

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox