public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Pavel Machek <pavel@ucw.cz>
To: Andrew Morton <akpm@digeo.com>
Cc: William Lee Irwin III <wli@holomorphy.com>,
	kernel list <linux-kernel@vger.kernel.org>
Subject: Re: Hot/cold allocation -- swsusp can not handle hot pages
Date: Sun, 3 Nov 2002 21:08:09 +0100	[thread overview]
Message-ID: <20021103200809.GC27271@elf.ucw.cz> (raw)
In-Reply-To: <3DC44839.A3AEAE41@digeo.com>

Hi!

> > > > Swsusp counts free pages, and relies on fact that when it allocates
> > > > page there's one free page less. That is no longer true with hot
> > > > pages.
> > > > I attempted to work it around but it seems I am getting hot pages even
> > > > when I ask for cold one. This seems to fix it. Does it looks like
> > > > "possibly mergable" patch?
> > > > --- clean/mm/page_alloc.c   2002-11-01 00:37:44.000000000 +0100
> > > > +++ linux-swsusp/mm/page_alloc.c    2002-11-01 22:53:47.000000000 +0100
> > > > @@ -361,7 +361,7 @@
> > > >     unsigned long flags;
> > > >     struct page *page = NULL;
> > > >
> > > > -   if (order == 0) {
> > > > +   if ((order == 0) && !cold) {
> > > >             struct per_cpu_pages *pcp;
> > > >
> > > >             pcp = &zone->pageset[get_cpu()].pcp[cold];
> > > >
> > >
> > > This doesn't seem to be doing what you want, even if it seems to work.
> > > If you want there to be one free page less, then allocating it will
> > > work regardless. What are you looking for besides that? If it's not
> > > already working you want some additional semantics. Could this involve
> > > is_head_of_free_region()? That should be solvable with a per-cpu list
> > > shootdown algorithm to fully merge all the buddy bitmap things.
> > 
> > I need pages I allocate to disappear from "is_head_of_free_region()",
> > so my counts match.
> > 
> 
> hm.  swsusp does funny things.  Would it be posible to get a
> big-picture "how this whole thing works" story?  What exactly
> is the nature of its relationship with the page allocator?

"big-picture" should be in Documentation/swsusp.txt...

*Should* be :-(. I need to copy all used memory, to make sure my
snapshot is atomic.

Copying works by looking at what is allocated, counting needed pages,
allocating 'directory' for them, allocating memory for copies, and
actually copying.

When I suddenly find I have less data to copy than I thought, it
screws up the code.

> I'm not really sure what to suggest here.  Emptying the per-cpu
> page pools would be tricky.  Maybe a swsusp-special page allocator
> which goes direct to the buddy lists or something.

Well, see the patch above. That seems to do the trick for
me. It seems that even "cold" allocation can give page from per-cpu
pool. I thought that was a bug?
								Pavel
-- 
Worst form of spam? Adding advertisment signatures ala sourceforge.net.
What goes next? Inserting advertisment *into* email?

  reply	other threads:[~2002-11-03 20:02 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-11-02 18:19 Hot/cold allocation -- swsusp can not handle hot pages Pavel Machek
2002-11-02 18:46 ` William Lee Irwin III
2002-11-02 20:22   ` Pavel Machek
2002-11-02 21:48     ` Andrew Morton
2002-11-03 20:08       ` Pavel Machek [this message]
2002-11-03 20:14         ` William Lee Irwin III
2002-11-03 20:21         ` Andrew Morton
2002-11-03 20:26           ` Pavel Machek
2002-11-03 20:52         ` William Lee Irwin III
2002-11-03 21:22           ` William Lee Irwin III
2002-11-03 22:53           ` 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=20021103200809.GC27271@elf.ucw.cz \
    --to=pavel@ucw.cz \
    --cc=akpm@digeo.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=wli@holomorphy.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