All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
To: Daniel Drake <ddrake@brontes3d.com>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	Juergen Beisert <juergen127@kreuzholzen.de>
Subject: Re: speeding up swapoff
Date: Wed, 29 Aug 2007 12:08:31 -0400	[thread overview]
Message-ID: <1188403712.5121.22.camel@localhost> (raw)
In-Reply-To: <1188394172.22156.67.camel@localhost>

On Wed, 2007-08-29 at 09:29 -0400, Daniel Drake wrote:
> Hi,
> 
> I've spent some time trying to understand why swapoff is such a slow
> operation.
> 
> My experiments show that when there is not much free physical memory,
> swapoff moves pages out of swap at a rate of approximately 5mb/sec. When
> there is a lot of free physical memory, it is faster but still a slow
> CPU-intensive operation, purging swap at about 20mb/sec.
> 
> I've read into the swap code and I have some understanding that this is
> an expensive operation (and has to be). This page was very helpful and
> also agrees:
> http://kernel.org/doc/gorman/html/understand/understand014.html
> 
> After reading that, I have an idea for a possible optimization. If we
> were to create a system call to disable ALL swap partitions (or modify
> the existing one to accept NULL for that purpose), could this process be
> signficantly less complex?
> 
> I'm thinking we could do something like this:
>  1. Prevent any more pages from being swapped out from this point
>  2. Iterate through all process page tables, paging all swapped
>     pages back into physical memory and updating PTEs
>  3. Clear all swap tables and caches
> 
> Due to only iterating through process page tables once, does this sound
> like it would increase performance non-trivially? Is it feasible?
> 
> I'm happy to spend a few more hours looking into implementing this but
> would greatly appreciate any advice from those in-the-know on if my
> ideas are broken to start with...

Daniel:  

in a response, Juergen Beisert asked if you'd tried mlock()  [mlockall()
would probably be a better choice] to lock your application into memory.
That would require modifying the application.  Don't know if you want to
do that.

Back in Feb'07, I posted an RFC regarding [optionally] inheriting
mlockall() semantics across fork and exec.  The original posting is
here:

	http://marc.info/?l=linux-mm&m=117217855508612&w=4

The patch is quite stale now [against 20-rc<something>], but shouldn't
be too much work to rebase to something more recent.  The patch
description points to an ad hoc mlock "prefix command" that would allow
you to:

	mlock <some application>

and run the application as if it had called "mlockall(MCL_CURRENT|
MCL_FUTURE)", without having to modify the application--if that's
something you can't or don't want to do.

Maybe this would help?

Lee


WARNING: multiple messages have this Message-ID (diff)
From: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
To: Daniel Drake <ddrake@brontes3d.com>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	Juergen Beisert <juergen127@kreuzholzen.de>
Subject: Re: speeding up swapoff
Date: Wed, 29 Aug 2007 12:08:31 -0400	[thread overview]
Message-ID: <1188403712.5121.22.camel@localhost> (raw)
In-Reply-To: <1188394172.22156.67.camel@localhost>

On Wed, 2007-08-29 at 09:29 -0400, Daniel Drake wrote:
> Hi,
> 
> I've spent some time trying to understand why swapoff is such a slow
> operation.
> 
> My experiments show that when there is not much free physical memory,
> swapoff moves pages out of swap at a rate of approximately 5mb/sec. When
> there is a lot of free physical memory, it is faster but still a slow
> CPU-intensive operation, purging swap at about 20mb/sec.
> 
> I've read into the swap code and I have some understanding that this is
> an expensive operation (and has to be). This page was very helpful and
> also agrees:
> http://kernel.org/doc/gorman/html/understand/understand014.html
> 
> After reading that, I have an idea for a possible optimization. If we
> were to create a system call to disable ALL swap partitions (or modify
> the existing one to accept NULL for that purpose), could this process be
> signficantly less complex?
> 
> I'm thinking we could do something like this:
>  1. Prevent any more pages from being swapped out from this point
>  2. Iterate through all process page tables, paging all swapped
>     pages back into physical memory and updating PTEs
>  3. Clear all swap tables and caches
> 
> Due to only iterating through process page tables once, does this sound
> like it would increase performance non-trivially? Is it feasible?
> 
> I'm happy to spend a few more hours looking into implementing this but
> would greatly appreciate any advice from those in-the-know on if my
> ideas are broken to start with...

Daniel:  

in a response, Juergen Beisert asked if you'd tried mlock()  [mlockall()
would probably be a better choice] to lock your application into memory.
That would require modifying the application.  Don't know if you want to
do that.

Back in Feb'07, I posted an RFC regarding [optionally] inheriting
mlockall() semantics across fork and exec.  The original posting is
here:

	http://marc.info/?l=linux-mm&m=117217855508612&w=4

The patch is quite stale now [against 20-rc<something>], but shouldn't
be too much work to rebase to something more recent.  The patch
description points to an ad hoc mlock "prefix command" that would allow
you to:

	mlock <some application>

and run the application as if it had called "mlockall(MCL_CURRENT|
MCL_FUTURE)", without having to modify the application--if that's
something you can't or don't want to do.

Maybe this would help?

Lee

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

  parent reply	other threads:[~2007-08-29 16:08 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-08-29 13:29 speeding up swapoff Daniel Drake
2007-08-29 13:29 ` Daniel Drake
2007-08-29 14:30 ` Arjan van de Ven
2007-08-29 14:30   ` Arjan van de Ven
2007-08-29 14:36   ` Oliver Neukum
2007-08-29 14:36     ` Oliver Neukum
2007-08-29 16:04     ` Hugh Dickins
2007-08-29 16:04       ` Hugh Dickins
2007-08-29 16:18       ` Oliver Neukum
2007-08-29 16:18         ` Oliver Neukum
2007-08-29 14:44   ` Daniel Drake
2007-08-29 14:44     ` Daniel Drake
2007-08-29 15:12     ` Juergen Beisert
2007-08-29 15:12       ` Juergen Beisert
2007-08-30 15:57     ` Bill Davidsen
2007-08-30 15:57       ` Bill Davidsen
2007-09-01 22:20     ` Andi Kleen
2007-09-01 22:20       ` Andi Kleen
2007-08-29 15:58   ` Hugh Dickins
2007-08-29 15:58     ` Hugh Dickins
2007-08-29 15:36 ` Hugh Dickins
2007-08-29 15:36   ` Hugh Dickins
2007-08-30  8:27   ` Eric W. Biederman
2007-08-30  8:27     ` Eric W. Biederman
2007-08-30 10:36     ` Hugh Dickins
2007-08-30 10:36       ` Hugh Dickins
2007-08-30 15:05       ` Daniel Drake
2007-08-30 15:05         ` Daniel Drake
2007-08-29 16:08 ` Lee Schermerhorn [this message]
2007-08-29 16:08   ` Lee Schermerhorn
     [not found] <fa.j/pO3mTWDugTdvZ3XNr9XpvgzPQ@ifi.uio.no>
     [not found] ` <fa.ed9fasZXOwVCrbffkPQTX7G3a7g@ifi.uio.no>
     [not found]   ` <fa./NZA3biuO1+qW5pW8ybdZMDWcZs@ifi.uio.no>
2007-08-30  1:37     ` Robert Hancock
2007-08-30  1:37       ` Robert Hancock
2007-08-30 13:55       ` Helge Hafting
2007-08-30 13:55         ` Helge Hafting
2007-08-30 14:06         ` Xavier Bestel
2007-08-30 14:06           ` Xavier Bestel
2007-08-30 14:06           ` Helge Hafting
2007-08-30 14:06             ` Helge Hafting
2007-08-30 14:14             ` Xavier Bestel
2007-08-30 14:14               ` Xavier Bestel

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=1188403712.5121.22.camel@localhost \
    --to=lee.schermerhorn@hp.com \
    --cc=ddrake@brontes3d.com \
    --cc=juergen127@kreuzholzen.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.