From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Pavel Machek <pavel@ucw.cz>
Cc: Andy Isaacson <adi@hexapodia.org>, linux-kernel@vger.kernel.org
Subject: Re: swsusp intermittent failures in 2.6.15-rc3-mm1
Date: Fri, 2 Dec 2005 22:58:56 +0100 [thread overview]
Message-ID: <200512022258.56822.rjw@sisk.pl> (raw)
In-Reply-To: <20051202181351.GB1854@elf.ucw.cz>
Hi,
On Friday, 2 of December 2005 19:13, Pavel Machek wrote:
> > > > > My Thinkpad X40 (1.25 GB, ipw2200) has had fairly reliable swsusp since
> > > > > 2.6.13 or thereabouts, and as recently as 2.6.15-rc1-mm1 I had about 20
> > > > > successful suspend/resume cycles. But now that I'm running
> > > > > 2.6.15-rc3-mm1 I'm seeing intermittent failures like this:
> > > >
> > > > Thanks a lot for the report.
> > > >
> > > > The problem is apparently caused by my recent patch intended to speed up
> > > > suspend. Could you please apply the appended debug patch, try to reproduce
> > > > the problem and send full dmesg output back to me?
> > > >
> > > > Index: linux-2.6.15-rc3-mm1/kernel/power/swsusp.c
> > > > ===================================================================
> > > > --- linux-2.6.15-rc3-mm1.orig/kernel/power/swsusp.c 2005-12-01 22:13:17.000000000 +0100
> > > > +++ linux-2.6.15-rc3-mm1/kernel/power/swsusp.c 2005-12-01 22:24:56.000000000 +0100
> > > > @@ -635,12 +635,18 @@
> > > > printk("Shrinking memory... ");
> > > > do {
> > > > #ifdef FAST_FREE
> > > > - tmp = count_data_pages() + count_highmem_pages();
> > > > + tmp = count_data_pages();
> > > > + printk("Data pages: %ld\n", tmp);
> > > > + tmp += count_highmem_pages();
> > >
> > > You need at least count_data_pages() + 2*count_highmem_pages() free
> > > pages (in lowmem).
> >
> > Do you mean a separate page is needed for each kmalloc() in
> > save_highmem_zone()?
>
> No, but notice get_zeroed_page() there, and that still needs to be
> atomically copied.
>
> So each higmem page takes:
>
> 1 get_zeroed_page()
> 1 kmalloc(struct(highmem_page))
> + copies of those into snapshot.
Yeah, right. I forgot to count them twice and I didn't take the kmalloc()s
into account. I'll do my best to produce a patch for it ASAP.
BTW, every kmalloc() in there seems to take 32 bytes (ie. the smallest generic
slab object size), which is a bit wasteful. The Andy's numbers indicate it
can take more than 700 pages just for that, and they have to be taken twice,
which gives more than 1400 pages total. It could be as little as about 300
pages _total_ if we did it more carefully. I think I'll place this on my todo
list for after 2.6.15.
Greetings,
Rafael
--
Beer is proof that God loves us and wants us to be happy - Benjamin Franklin
next prev parent reply other threads:[~2005-12-02 22:01 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-12-01 17:36 swsusp intermittent failures in 2.6.15-rc3-mm1 Andy Isaacson
2005-12-01 21:42 ` Rafael J. Wysocki
2005-12-02 0:55 ` Pavel Machek
2005-12-02 9:54 ` Rafael J. Wysocki
2005-12-02 18:13 ` Pavel Machek
2005-12-02 21:58 ` Rafael J. Wysocki [this message]
2005-12-03 0:21 ` Pavel Machek
2005-12-02 18:37 ` Andy Isaacson
2005-12-02 22:02 ` Rafael J. Wysocki
2005-12-02 22:54 ` Rafael J. Wysocki
2005-12-05 8:02 ` Andy Isaacson
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=200512022258.56822.rjw@sisk.pl \
--to=rjw@sisk.pl \
--cc=adi@hexapodia.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pavel@ucw.cz \
/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