From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: david@lang.hm
Cc: LKML <linux-kernel@vger.kernel.org>,
Alan Stern <stern@rowland.harvard.edu>,
Andrew Morton <akpm@linux-foundation.org>,
"Eric W. Biederman" <ebiederm@xmission.com>,
"Huang, Ying" <ying.huang@intel.com>,
Jeremy Maitin-Shepard <jbms@cmu.edu>,
Kyle Moffett <mrmacman_g4@mac.com>,
Nigel Cunningham <nigel@nigel.suspend2.net>,
Pavel Machek <pavel@ucw.cz>,
pm list <linux-pm@lists.linux-foundation.org>,
Al Boldi <a1426z@gawab.com>
Subject: Re: Hibernation considerations
Date: Mon, 16 Jul 2007 00:47:26 +0200 [thread overview]
Message-ID: <200707160047.28420.rjw@sisk.pl> (raw)
In-Reply-To: <Pine.LNX.4.64.0707151253141.25614@asgard.lang.hm>
On Sunday, 15 July 2007 22:13, david@lang.hm wrote:
> On Sun, 15 Jul 2007, Rafael J. Wysocki wrote:
>
> > Hi,
> >
> > Since many alternative approaches to hibernation are now being considered and
> > discussed, I thought it might be a good idea to list some things that in my not
> > so humble opinion should be taken care of by any hibernation framework. They
> > are listed below, not in any particular order, because I think they all are
> > important. Still, I might have forgotten something, so everyone with
> > experience in implementing hibernation, especially Pavel and Nigel, please
> > check if the list is complete.
> >
> > (1) Filesystems mounted before the hibernation are untouchable
> >
> > When there's a memory snapshot, either in the form of a hibernation image,
> > or in the form of the "old" kernel and processes available to the "new"
> > kexeced kernel responsible for saving their memory, the filesystems mounted
> > before the hibernation should not be accessed, even for reading, because
> > that would cause their on-disk state to be inconsistent with the snapshot
> > and might lead to a filesystem corruption.
>
> AFAIK this is only the case with ext3, all other filesystems could be
> accessed read-only safely
>
> this is arguably a bug with ext3 (and has been discussed as such), but
> right now the ext3 team has decided not to change this bahavior so
> hibernate needs to work around it. but don't mistake a work-around for a
> single (admittedly very popular) filesystem with a hard and fast
> directive.
>
> > (2) Swap space in use before the hibernation must be handled with care
> >
> > If swap space is used for saving the memory snapshot, the snapshot-saving
> > application (or kernel) must be careful enough not to overwrite swap pages
> > that contain valid memory contents stored in there before the hibernation.
>
> true, in fact, given that many distros and live-CD's autodetect swap
> partitions and consider them fair game, I would argue that the best thing
> to do would be to have the main system free up it's swap partitions before
> going into hibernation.
>
> however, this could be a decision of the particular hibernate routines.
>
> for the kexec approach the mapping of what swap pages are in use is one
> more chunk of data that needs to be assembled and made available through a
> defined interface.
>
> > (4) The user should be able to limit the size of a hibernation image
> >
> > There are a couple of reasons of that. For example, the storage space
> > used for saving the image may be smaller than the entire RAM or the user
> > may want the image to be saved quickier.
>
> it may make sense for this to be split into hard and soft limits.
>
> if you try to save more then the storage space can hold you cannot
> continue, but if you are just a little over the arbatrary size limit that
> was set to make things fast you are better off saving things as-is then
> punting, going back to the system, trying to free more ram, and trying a
> hibernate again.
>
> with the kexec approach the enforcment of these limits is also split into
> two sections.
>
> when the hibernate command is given in the main kernel, it's userspace
> needs to follow some policy to decide how much (if any) memory to free.
How are you going to achieve this without (a) having hibernation-aware
user space or (b) the freezer?
> this could be anything from 'none, try and save all caches' to 'anything
> you can to minimize the amount of data to be saved, trash all caches' to
> something in between like 'try and free up enough memory to get the saved
> data below 1G, but save caches beyond that point'
>
> then when the second kernel runs, it's userspace tools get the list of
> what memory should be saved that the main kernel handed to it, and then
> decides if this is acceptable (probably mostly the hard limits of 'can
> this work') and proceeds to save it somewhere.
>
> but since the kexec command and the preporation of the devices can change
> the memory, the estimates done by the first kernel's userspace are just
> that, estimates.
>
> > (7) On ACPI systems special platform-related actions have to be carried out at
> > the right points, so that the platform works correctly after the restore
> >
> > The ACPI specification requires us to invoke some global ACPI methods
> > during the hibernation and during the restore. Moreover, the ordering of
> > code related to these ACPI methods may not be arbitrary (eg. some of
> > them have to be executed after devices are put into low power states etc.).
>
> for a pure hibernate mode, you will be powering off the box after saving
> the suspend image. why are there any special ACPI modes involved?
Because, for example, on my machine the status of power supply (present
vs not present) is not updated correctly after the restore if ACPI callbacks
aren't used during the hibernation. That's just experience and it's in line
with the ACPI spec.
> now, for suspend-to-ram you need to be aware of every possible power
> saving option you have and the cost of each of them, and here the ACPI
> modes are heavily used.
>
> I think this is mixing suspend and hibernate still.
Yes, it is, but that's not we who's mixing. We just need to handle some
systems built with ACPI in mind.
Greetings,
Rafael
--
"Premature optimization is the root of all evil." - Donald Knuth
next prev parent reply other threads:[~2007-07-15 22:39 UTC|newest]
Thread overview: 220+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-15 12:33 Rafael J. Wysocki
2007-07-15 12:51 ` Nigel Cunningham
2007-07-15 12:58 ` Dr. David Alan Gilbert
2007-07-15 22:38 ` Rafael J. Wysocki
2007-07-15 22:27 ` david
2007-07-17 17:40 ` Dr. David Alan Gilbert
2007-07-17 17:49 ` david
2007-07-29 6:53 ` Vojtech Pavlik
2007-07-29 9:56 ` Rafael J. Wysocki
2007-08-05 19:56 ` encrypted hibernation (was Re: Hibernation considerations) Pavel Machek
2007-08-11 23:43 ` Dr. David Alan Gilbert
2007-08-12 22:12 ` Rafael J. Wysocki
2007-08-18 19:37 ` Dr. David Alan Gilbert
2007-08-21 7:29 ` Pavel Machek
2007-08-13 2:30 ` Michael Chang
2007-08-13 4:53 ` alon.barlev
2007-07-15 15:10 ` Hibernation considerations Al Boldi
2007-07-15 15:35 ` jimmy bahuleyan
2007-07-15 17:40 ` Al Boldi
2007-07-15 16:29 ` Alan Stern
2007-07-15 17:40 ` Al Boldi
2007-07-15 23:28 ` Alan Stern
2007-07-15 23:58 ` david
2007-07-16 5:02 ` Al Boldi
2007-07-16 6:49 ` david
2007-07-16 13:32 ` Al Boldi
2007-07-17 4:33 ` david
2007-07-17 12:08 ` Al Boldi
2007-07-17 14:18 ` Rafael J. Wysocki
2007-07-17 15:23 ` david
2007-07-16 14:53 ` Alan Stern
2007-07-16 16:51 ` Al Boldi
2007-07-17 4:37 ` david
2007-07-15 19:52 ` david
2007-07-15 20:13 ` david
2007-07-15 22:47 ` Rafael J. Wysocki [this message]
2007-07-15 22:42 ` david
2007-07-15 23:15 ` Alan Stern
2007-07-15 23:38 ` Nigel Cunningham
2007-07-16 14:15 ` Alan Stern
2007-07-16 15:25 ` Rafael J. Wysocki
2007-07-15 23:41 ` david
2007-07-16 14:21 ` Alan Stern
2007-07-17 4:45 ` david
2007-07-17 14:15 ` Alan Stern
2007-07-17 14:40 ` Rafael J. Wysocki
2007-07-17 15:29 ` david
2007-07-17 16:02 ` Rafael J. Wysocki
2007-07-17 17:06 ` david
2007-07-17 19:50 ` Rafael J. Wysocki
2007-07-17 20:18 ` david
2007-07-17 20:39 ` Jeremy Maitin-Shepard
2007-07-17 20:39 ` david
2007-07-17 20:58 ` Rafael J. Wysocki
2007-07-17 20:57 ` Rafael J. Wysocki
2007-07-17 20:53 ` david
2007-07-17 21:37 ` Rafael J. Wysocki
2007-07-17 21:42 ` david
2007-07-17 21:53 ` Jeremy Maitin-Shepard
2007-07-21 10:25 ` Pavel Machek
2007-07-21 15:35 ` Jeremy Maitin-Shepard
2007-07-21 17:56 ` Pavel Machek
2007-07-21 19:35 ` david
2007-07-21 19:49 ` Pavel Machek
2007-07-21 22:14 ` david
2007-08-01 16:58 ` Stefan Seyfried
2007-07-17 20:24 ` Jeremy Maitin-Shepard
2007-07-17 20:44 ` david
2007-07-17 21:00 ` Rafael J. Wysocki
2007-07-17 16:09 ` Jeremy Maitin-Shepard
2007-07-17 19:54 ` Rafael J. Wysocki
2007-07-17 18:32 ` Alan Stern
2007-07-17 20:17 ` Rafael J. Wysocki
2007-07-17 20:34 ` david
2007-07-17 20:54 ` Jeremy Maitin-Shepard
2007-07-17 21:04 ` david
2007-07-17 21:23 ` Rafael J. Wysocki
2007-07-17 21:17 ` david
2007-07-17 21:27 ` Jeremy Maitin-Shepard
2007-07-17 21:27 ` david
2007-07-17 21:54 ` Rafael J. Wysocki
2007-07-17 21:45 ` Rafael J. Wysocki
2007-07-17 21:43 ` Rafael J. Wysocki
2007-07-17 20:34 ` Jeremy Maitin-Shepard
2007-07-17 20:37 ` david
2007-07-17 20:56 ` Jeremy Maitin-Shepard
2007-07-17 21:06 ` david
2007-07-17 21:40 ` Rafael J. Wysocki
2007-07-17 21:24 ` Rafael J. Wysocki
2007-07-17 21:11 ` Rafael J. Wysocki
2007-07-17 20:27 ` david
2007-07-17 21:20 ` Rafael J. Wysocki
[not found] ` <ea7a437ca4038d408ac544bbc3c2434a@bga.com>
2007-07-19 17:31 ` [linux-pm] " david
2007-07-20 14:24 ` Milton Miller
2007-07-20 15:44 ` david
2007-07-19 20:28 ` Rafael J. Wysocki
2007-07-19 23:07 ` david
2007-07-20 11:17 ` Rafael J. Wysocki
2007-07-20 15:35 ` david
2007-07-20 16:15 ` Alan Stern
2007-07-20 21:46 ` Rafael J. Wysocki
2007-07-20 16:56 ` Milton Miller
2007-07-20 17:31 ` Jeremy Maitin-Shepard
2007-07-20 21:30 ` Rafael J. Wysocki
2007-07-20 19:26 ` david
2007-07-20 21:28 ` Rafael J. Wysocki
2007-07-20 21:33 ` Jeremy Maitin-Shepard
2007-07-20 22:19 ` Rafael J. Wysocki
[not found] ` <20070720152744.GH20529@grifter.jdc.home>
2007-07-20 15:36 ` david
2007-07-20 21:43 ` Rafael J. Wysocki
2007-07-20 21:39 ` david
2007-07-20 22:22 ` Rafael J. Wysocki
2007-07-20 22:39 ` david
2007-07-20 16:08 ` Milton Miller
2007-07-20 16:20 ` Alan Stern
2007-07-20 17:32 ` Milton Miller
2007-07-20 18:17 ` Alan Stern
2007-07-20 19:08 ` Milton Miller
2007-07-20 19:37 ` Alan Stern
2007-07-20 20:03 ` Oliver Neukum
2007-07-20 20:12 ` Alan Stern
2007-07-20 21:35 ` Oliver Neukum
2007-07-20 22:25 ` Alan Stern
2007-07-23 14:23 ` Oliver Neukum
2007-07-23 20:05 ` Towards eliminating the freezer Alan Stern
2007-07-24 8:21 ` Oliver Neukum
2007-07-24 14:27 ` Alan Stern
2007-07-24 9:33 ` Rafael J. Wysocki
2007-07-24 14:29 ` Alan Stern
2007-07-24 15:24 ` Rafael J. Wysocki
2007-07-24 16:06 ` Alan Stern
2007-07-24 19:20 ` Rafael J. Wysocki
2007-07-24 20:24 ` Alan Stern
2007-07-24 21:14 ` Rafael J. Wysocki
2007-07-24 22:14 ` Alan Stern
2007-07-25 12:23 ` Rafael J. Wysocki
2007-08-01 9:34 ` [linux-pm] Re: Hibernation considerations Pavel Machek
2007-08-03 3:50 ` david
2007-07-20 20:31 ` david
2007-07-20 21:24 ` Alan Stern
2007-07-20 21:34 ` david
2007-07-20 22:15 ` Rafael J. Wysocki
2007-07-20 21:37 ` Jeremy Maitin-Shepard
2007-07-20 22:35 ` Alan Stern
2007-07-20 22:43 ` david
2007-07-21 5:21 ` Nigel Cunningham
2007-07-21 14:10 ` Alan Stern
2007-07-22 3:43 ` david
2007-07-22 16:00 ` Alan Stern
2007-07-22 21:50 ` david
2007-07-23 15:19 ` Alan Stern
2007-07-23 19:01 ` david
2007-07-23 20:22 ` Alan Stern
2007-07-24 13:26 ` Huang, Ying
2007-07-24 14:50 ` Alan Stern
2007-07-20 22:48 ` Jeremy Maitin-Shepard
2007-07-20 21:02 ` Rafael J. Wysocki
2007-07-21 11:44 ` Miklos Szeredi
2007-07-21 12:43 ` Nigel Cunningham
2007-07-21 13:56 ` Alan Stern
2007-07-21 16:13 ` Jeremy Maitin-Shepard
2007-07-21 18:12 ` Miklos Szeredi
2007-07-21 19:20 ` Rafael J. Wysocki
2007-08-01 9:22 ` Pavel Machek
2007-08-02 17:02 ` Rafael J. Wysocki
2007-07-21 22:21 ` Nigel Cunningham
2007-07-21 22:16 ` Nigel Cunningham
2007-07-22 15:26 ` Alan Stern
2007-07-22 16:27 ` Miklos Szeredi
2007-07-22 20:09 ` Alan Stern
2007-07-22 21:54 ` david
2007-07-22 22:42 ` Nigel Cunningham
2007-07-22 23:09 ` Rafael J. Wysocki
2007-07-22 23:18 ` Nigel Cunningham
2007-07-23 0:04 ` Paul Mackerras
2007-07-23 3:11 ` Nigel Cunningham
2007-07-23 15:23 ` Alan Stern
2007-07-23 21:55 ` Nigel Cunningham
2007-07-23 22:10 ` Rafael J. Wysocki
2007-07-23 5:31 ` david
2007-07-23 10:24 ` Miklos Szeredi
2007-07-23 12:08 ` Rafael J. Wysocki
2007-07-23 12:14 ` Miklos Szeredi
2007-07-23 12:27 ` Rafael J. Wysocki
2007-07-23 12:31 ` Oliver Neukum
2007-07-23 13:08 ` Miklos Szeredi
2007-07-23 14:01 ` Rafael J. Wysocki
2007-07-23 14:01 ` Miklos Szeredi
2007-07-23 19:08 ` david
2007-08-01 9:19 ` Pavel Machek
[not found] ` <40fa2626aff7b6b590ad6aa4737fc873@bga.com>
2007-07-20 14:48 ` Huang, Ying
2007-07-20 15:48 ` david
2007-07-22 2:17 ` Huang, Ying
2007-07-22 2:32 ` david
2007-07-20 21:34 ` Rafael J. Wysocki
2007-07-17 22:38 ` Alan Stern
2007-07-17 22:37 ` david
2007-07-18 14:29 ` Alan Stern
2007-07-18 14:47 ` Rafael J. Wysocki
2007-07-20 4:40 ` Al Boldi
2007-07-20 10:59 ` Rafael J. Wysocki
2007-07-21 10:17 ` Pavel Machek
2007-07-15 23:22 ` Rafael J. Wysocki
2007-07-15 23:49 ` david
2007-07-16 12:06 ` Rafael J. Wysocki
[not found] ` <20070716123849.GC14212@grifter.jdc.home>
2007-07-16 15:29 ` Rafael J. Wysocki
2007-07-17 4:28 ` david
2007-07-17 10:42 ` Matthew Garrett
2007-07-17 15:19 ` david
2007-07-18 2:18 ` Matthew Garrett
2007-07-18 3:54 ` david
2007-07-18 11:10 ` Matthew Garrett
2007-07-18 12:56 ` david
2007-07-15 23:17 ` Alan Stern
2007-07-15 23:53 ` david
2007-07-16 5:18 ` Jeremy Maitin-Shepard
2007-07-15 20:35 ` Cornelius Riemenschneider
2007-07-15 19:46 ` david
2007-07-16 0:51 ` Matthew Garrett
2007-07-16 0:51 ` david
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=200707160047.28420.rjw@sisk.pl \
--to=rjw@sisk.pl \
--cc=a1426z@gawab.com \
--cc=akpm@linux-foundation.org \
--cc=david@lang.hm \
--cc=ebiederm@xmission.com \
--cc=jbms@cmu.edu \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@lists.linux-foundation.org \
--cc=mrmacman_g4@mac.com \
--cc=nigel@nigel.suspend2.net \
--cc=pavel@ucw.cz \
--cc=stern@rowland.harvard.edu \
--cc=ying.huang@intel.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
all inboxes | Powered by JetHome®