From: Nigel Cunningham <ncunningham@cyclades.com>
To: linux-pm@lists.osdl.org
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>, Linux PM <linux-pm@osdl.org>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: [linux-pm] Re: [RFC][PATCH -mm] swsusp: use less memory during resume
Date: Wed, 19 Apr 2006 18:31:41 +1000 [thread overview]
Message-ID: <200604191831.45936.ncunningham@cyclades.com> (raw)
In-Reply-To: <200604191005.41701.rjw@sisk.pl>
[-- Attachment #1: Type: text/plain, Size: 3434 bytes --]
Hi.
On Wednesday 19 April 2006 18:05, Rafael J. Wysocki wrote:
> Hi,
>
> On Tuesday 18 April 2006 15:07, Nigel Cunningham wrote:
> > On Tuesday 18 April 2006 21:19, Rafael J. Wysocki wrote:
> > > Currently during resume swsusp puts the image data in the page frames
> > > that don't conflict with the original locations of the data (ie. the
> > > locations the data will be put in when the saved system state is
> > > restored from the image). These page frames are considered as "safe"
> > > and the other page frames are treadet as "unsafe".
> > >
> > > Of course we cannot force the memory allocator to allocate "safe" pages
> > > only, so if an "unsafe" page is allocated, swsusp treats it as an
> > > "eaten page" and attempts to allocate another page in the hope that
> > > it'll be "safe" etc. swsusp tries to allocate as many "safe" pages as
> > > necessary to store the image data, so it "eats" a considerable number
> > > of "unsafe" pages in the process. Next, it reads the image and puts
> > > the data into the allocated "safe" pages. Finally, the data are copied
> > > to their "original" locations.
> > >
> > > This approach, although it works nicely, is quite inefficient from the
> > > memory utilization point of view and it also turns out to be
> > > unnecessary. Namely, for each "unsafe" page frame returned by the
> > > memory allocator there's exactly one page in the image that finally
> > > should be placed in this page frame. Therefore we can put the right
> > > data into this page frame as soon as they're read from the image and we
> > > won't have to copy these data later on. This way we'll only need to
> > > allocate as many pages as necessary to store the image data and we
> > > won't have to "eat" the "unsafe" pages.
> > >
> > > The appended patch implements this idea. It makes swsusp allocate as
> > > many pages as it'll need to store the data read from the image in one
> > > shot, creating a list of allocated "safe" pages, and uses the
> > > observation that all pages allocated by swsusp are marked with the
> > > PG_nosave and PG_nosave_free flags set. Namely, when it's about to
> > > read a page, it checks whether the page frame corresponding to the
> > > "original" location of this page has been allocated (ie. if the page
> > > frame has the PG_nosave and PG_nosave_free flags set) and if so, it
> > > reads the page directly into this page frame. Otherwise it uses an
> > > allocated "safe" page from the list to store the data that will be
> > > copied to their "original" location later on.
> > >
> > > On my box this patch allows us to save as many as approx. 90000 page
> > > copyings and 90000 (at least - probably twice as many, because it's an
> > > x86_64 box) page allocations for an image of approx. 100000 of pages.
> > > Also it will allow us to read images greater than 50% of the normal
> > > zone (when we learn how to create them ;-)).
> >
> > Haven't looked at the patch itself, but this sounds like a great idea. I
> > wonder though, won't the 50% limit still apply, because you'll still have
> > to make an atomic copy to start with (unless you figure out which pages
> > aren't going to change and therefore don't need to be atomically copied)?
>
> You are right, and I'm going to figure out which pages won't change. I
> think I have some good candidates. ;-)
LRU by any chance? :)
Nigel
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
next prev parent reply other threads:[~2006-04-19 8:31 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-04-18 11:19 [RFC][PATCH -mm] swsusp: use less memory during resume Rafael J. Wysocki
2006-04-18 13:07 ` Nigel Cunningham
2006-04-18 13:07 ` Nigel Cunningham
2006-04-19 8:05 ` Rafael J. Wysocki
2006-04-19 8:31 ` Nigel Cunningham [this message]
2006-04-20 10:05 ` Rafael J. Wysocki
2006-04-20 10:05 ` [linux-pm] " Rafael J. Wysocki
2006-04-18 13:07 ` Pavel Machek
2006-04-18 13:07 ` Pavel Machek
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=200604191831.45936.ncunningham@cyclades.com \
--to=ncunningham@cyclades.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@lists.osdl.org \
--cc=linux-pm@osdl.org \
--cc=rjw@sisk.pl \
/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.