public inbox for linux-pm@vger.kernel.org
 help / color / mirror / Atom feed
From: Nigel Cunningham <nigel@nigel.suspend2.net>
To: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: linux-pm@lists.osdl.org, Jiri Slaby <jirislaby@gmail.com>,
	Pavel Machek <pavel@ucw.cz>,
	Linux kernel mailing list <linux-kernel@vger.kernel.org>
Subject: Re: [RFD] swsusp problem: Drivers allocate much memory during	suspend (was: Re: 2.6.21-rc5: swsusp: Not enough free memory)
Date: Sat, 14 Apr 2007 07:34:43 +1000	[thread overview]
Message-ID: <1176500083.7112.180.camel@nigel.suspend2.net> (raw)
In-Reply-To: <200704132241.52725.rjw@sisk.pl>

Hi.

On Fri, 2007-04-13 at 22:41 +0200, Rafael J. Wysocki wrote:
> On Friday, 13 April 2007 14:21, Nigel Cunningham wrote:
> > Hi.
> > 
> > On Fri, 2007-04-13 at 14:00 +0200, Rafael J. Wysocki wrote:
> > > > 
> > > > Shrinking memory...  Pages needed: 128103 normal, 0 highmem
> > > > Pages needed: 125226 normal, 0 highmem
> > > > Pages needed: -5757 normal, 0 highmem
> > > > Pages needed: -5757 normal, 0 highmem
> > > > Pages needed: -5757 normal, 0 highmem
> > > > Pages needed: -5757
> > > > Pages needed: 127953 normal, 0 highmem
> > > > Pages needed: 125076 normal, 0 highmem
> > > > Pages needed: -6043 normal, 0 highmem
> > > > Pages needed: -6043 normal, 0 highmem
> > > > Pages needed: -6043 normal, 0 highmem
> > > > Pages needed: -6043
> > > > done (200 pages freed)
> > > > Freed 800 kbytes in 0.16 seconds (5.00 MB/s)
> > > > Suspending console(s)
> > > > ...
> > > > CPU1 is down
> > > > swsusp: critical section:
> > > > swsusp: Need to copy 131358 pages
> > > > swsusp: Normal pages needed: 131358
> > > > swsusp: Normal pages needed: 131358 + 1024 + 22, available pages: 130607
> > > 
> > > Well, it looks like someone allocated about 6000 pages after we had freed
> > > enough memory for suspending.
> > 
> > We have a tunable allowance in Suspend2 for this, because fglrx
> > allocates a lot of pages in its suspend routine if DRI is enabled. I
> > think some other drivers do too, but fglrx is the main one I know.
> 
> I wasn't aware of that, thanks for the information.
> 
> I think this means we'll probably need to add a tunable, similar to image_size,
> that will allow the users to specify how much spare memory they want to reserve
> for suspending (instead of the constant PAGES_FOR_IO).  IMO we can call it
> 'spare_memory'.
> 
> Still, this doesn't look like a real solution, because it would require the
> users affected by this problem to experiment with suspending in order to
> figure out how much spare memory they will need.
> 
> IMO to really fix the problem, we should let the drivers that need much memory
> for suspending allocate it _before_ the memory shrinker is called.  For this
> purpose we can use notifiers that will be called before we start the shrinking
> of memory.  Namely, if a driver needs to allocate substantial amount of memory
> for suspending, it can register a notifier that will be called before we try to
> shrink memory.  Then, the memory needed by the driver may be allocated in
> this notifier (of course, in that case it will also have to be called if the
> shrinking of memory fails, so that the memory allocated by the driver for
> suspending can be freed) and used in the driver's .suspend() routine.
> 
> Comments welcome.

Yeah. I've thought about it too. It could also be good for that acpi
routine that was allocating memory during in an atomic context with the
wrong flagas. Another idea that occurred to me would be to allow drivers
to have a routine saying how much memory they will need, which we could
call to calculate the allowance we need. Personally, I think the
notifier chain is simpler and preferable :)

Regards,

Nigel

  reply	other threads:[~2007-04-13 21:34 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-03-29  7:44 2.6.21-rc5: swsusp: Not enough free memory Jiri Slaby
2007-03-29 14:39 ` Rafael J. Wysocki
2007-03-29 14:39   ` Jiri Slaby
2007-04-01 18:17   ` Jiri Slaby
2007-04-01 19:23     ` Rafael J. Wysocki
2007-04-02  8:24       ` Jiri Slaby
2007-04-02 21:18         ` Rafael J. Wysocki
2007-04-03  7:37           ` Jiri Slaby
2007-04-03 10:50             ` Rafael J. Wysocki
2007-04-03 19:59               ` Jiri Slaby
2007-04-09 20:07               ` Jiri Slaby
2007-04-09 20:20                 ` Rafael J. Wysocki
2007-04-11  7:36                   ` Jiri Slaby
2007-04-11  9:55                     ` Rafael J. Wysocki
2007-04-11 10:45                       ` Jiri Slaby
2007-04-11 14:40                         ` Rafael J. Wysocki
2007-04-11 15:02                           ` Jiri Slaby
2007-04-12 21:36                             ` Rafael J. Wysocki
2007-04-13 10:14                               ` Jiri Slaby
2007-04-13 12:00                                 ` Rafael J. Wysocki
2007-04-13 12:21                                   ` Nigel Cunningham
2007-04-13 20:41                                     ` [RFD] swsusp problem: Drivers allocate much memory during suspend (was: Re: 2.6.21-rc5: swsusp: Not enough free memory) Rafael J. Wysocki
2007-04-13 21:34                                       ` Nigel Cunningham [this message]
2007-04-13 21:40                                       ` [RFD] swsusp problem: Drivers allocate much memory during suspend Chuck Ebbert
2007-04-13 22:10                                       ` [RFD] swsusp problem: Drivers allocate much memory during suspend (was: Re: 2.6.21-rc5: swsusp: Not enough free memory) Pavel Machek
2007-04-13 22:34                                         ` Nigel Cunningham
2007-04-13 22:38                                           ` Pavel Machek
2007-04-13 22:43                                             ` Nigel Cunningham
2007-04-13 22:35                                         ` Rafael J. Wysocki
2007-04-13 22:36                                           ` Nigel Cunningham
2007-04-13 22:40                                           ` Pavel Machek
2007-04-13 22:45                                             ` Nigel Cunningham
2007-04-13 22:57                                               ` Rafael J. Wysocki
2007-04-13 23:03                                                 ` Nigel Cunningham
2007-04-14  9:33                                                   ` Rafael J. Wysocki
2007-04-14 22:53                                           ` Rafael J. Wysocki

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=1176500083.7112.180.camel@nigel.suspend2.net \
    --to=nigel@nigel.suspend2.net \
    --cc=jirislaby@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@lists.osdl.org \
    --cc=pavel@ucw.cz \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox