From: Linus Torvalds <torvalds@linux-foundation.org>
To: David Lang <david.lang@digitalinsight.com>
Cc: Nigel Cunningham <nigel@nigel.suspend2.net>,
"Rafael J. Wysocki" <rjw@sisk.pl>,
Pekka J Enberg <penberg@cs.helsinki.fi>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: Back to the future.
Date: Fri, 27 Apr 2007 17:40:57 -0700 (PDT) [thread overview]
Message-ID: <alpine.LFD.0.98.0704271728460.9964@woody.linux-foundation.org> (raw)
In-Reply-To: <Pine.LNX.4.63.0704271638150.11000@qynat.qvtvafvgr.pbz>
On Fri, 27 Apr 2007, David Lang wrote:
>
> all that's needed for the snapshot is to prevent userspace from scheduling,
Strictly speaking, all you *really* want to make sure is not so much that
user-space isn't scheduling, as the fact that all device IO buffers must
be empty.
We can trivially snapshot an active user-space, and in fact it would
probably be hard to do a snapshot in a way that it could even *know* or
care about whether there are user-space processes running at the time of
the snapshot.
So that's not the real problem.
What we obviously *cannot* snapshot is if some particular device is in the
middle of being written to or read from, and has outstanding commands on
the device itself (as opposed to just queued to the driver). So what we do
want to make sure happens is that there are no IO queues that are active.
And the best way to make sure that there are no IO queues active is to
make sure that there are no new read or write-requests. And *that* you can
do two ways:
- actually intercepting the read/write requests. Probably not too hard,
we could literally do it in the IO scheduler (and probably much more
easily than doing it in the process scheduler), but the easy cases will
only cover the block device layer, and character devices don't have the
same kind of scheduler you can trap IO in.
- we also don't want to generate new data that needs to be snapshotted,
so we want to trap people who write even just to the page cache and
turn pages dirty. Again, we could probably do it at *that* point (ie
trapping them when they try to dirty a page), and it would be more
logical, but again, there are other cases of people who generate more
data (just any memory allocation obviously is a special case of
generating more data to be snapshotted),
so I do agree that we want to stop producing new data to be snapshotted,
and we want to stop producing new read-requests. But kernel threads really
do neither: in an idle system, kernel threads are idle too. A kernel
thread is not like a user program that actually generates data - they only
tend to act on behalf of other processes' needs.
So I think that what snapshotting really *wants* to stop is not schedulign
per se, but IO. And stopping user processes (as opposed to kernel threads)
is probably a good way to get there.
In fact, I'd argue that you want to stop user space and then encourage
some kernel threads to *start* running, notably things like bdflush should
probably be kicked to clean up some dirty stuff as part of the "shrink
data to be snapshotted" part. Trying to free memory will do that on its
own, of course.
Linus
next prev parent reply other threads:[~2007-04-28 0:41 UTC|newest]
Thread overview: 136+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-04-26 6:04 Back to the future Nigel Cunningham
2007-04-26 7:28 ` Pekka Enberg
[not found] ` <1177573348.50 25.224.camel@nigel.suspend2.net>
2007-04-26 7:42 ` Nigel Cunningham
2007-04-26 8:17 ` Pekka Enberg
2007-04-26 9:28 ` Nigel Cunningham
2007-04-26 17:29 ` Luca Tettamanti
2007-04-26 16:56 ` Linus Torvalds
2007-04-26 17:03 ` Xavier Bestel
2007-04-26 17:34 ` Linus Torvalds
2007-04-26 20:08 ` Nigel Cunningham
2007-04-26 20:45 ` Linus Torvalds
2007-04-26 20:50 ` Nigel Cunningham
2007-04-27 0:10 ` Olivier Galibert
2007-04-27 10:21 ` Daniel Pittman
2007-04-27 23:19 ` Nigel Cunningham
2007-04-26 21:38 ` Theodore Tso
2007-04-27 10:10 ` Christoph Hellwig
2007-04-26 22:08 ` Rafael J. Wysocki
2007-04-26 22:20 ` Nigel Cunningham
2007-04-26 23:15 ` Linus Torvalds
2007-04-27 7:51 ` Pekka Enberg
2007-04-26 17:07 ` Linus Torvalds
2007-04-26 18:22 ` Chase Venters
2007-04-26 18:50 ` David Lang
2007-04-26 19:56 ` Nigel Cunningham
2007-04-27 4:52 ` Pekka J Enberg
2007-04-27 6:08 ` Nigel Cunningham
2007-04-27 6:18 ` Pekka J Enberg
2007-04-27 6:29 ` Pekka J Enberg
2007-04-27 6:34 ` Nigel Cunningham
2007-04-27 6:50 ` Pekka J Enberg
2007-04-27 7:03 ` Nigel Cunningham
2007-04-27 7:24 ` Pekka J Enberg
2007-04-27 9:50 ` Oliver Neukum
2007-04-27 10:12 ` Pekka J Enberg
2007-04-27 19:07 ` Oliver Neukum
2007-04-28 9:22 ` Pekka Enberg
2007-04-28 13:37 ` Oliver Neukum
2007-05-03 12:06 ` Pavel Machek
2007-05-04 21:52 ` Indan Zupancic
2007-05-05 9:16 ` Pavel Machek
2007-05-05 12:02 ` Indan Zupancic
2007-04-28 10:35 ` Rafael J. Wysocki
2007-04-28 18:43 ` David Lang
2007-04-28 19:37 ` Rafael J. Wysocki
2007-04-27 21:24 ` Rafael J. Wysocki
2007-04-27 21:44 ` Linus Torvalds
2007-04-27 22:04 ` Rafael J. Wysocki
2007-04-27 22:08 ` Linus Torvalds
2007-04-27 22:41 ` Rafael J. Wysocki
2007-04-27 22:26 ` David Lang
2007-04-27 23:21 ` Rafael J. Wysocki
2007-04-27 23:01 ` David Lang
2007-04-28 0:02 ` Rafael J. Wysocki
2007-04-27 23:17 ` Linus Torvalds
2007-04-27 23:45 ` Rafael J. Wysocki
2007-04-27 23:57 ` Nigel Cunningham
2007-04-27 23:50 ` David Lang
2007-04-28 0:40 ` Linus Torvalds [this message]
2007-04-28 6:58 ` Oliver Neukum
2007-04-28 9:16 ` Pekka J Enberg
2007-04-28 18:28 ` David Lang
2007-05-03 17:18 ` Pavel Machek
2007-05-07 2:13 ` David Lang
2007-05-07 3:33 ` Kyle Moffett
2007-05-07 12:48 ` Pavel Machek
2007-05-07 12:52 ` Oliver Neukum
2007-05-07 14:37 ` david
2007-05-07 19:51 ` Pavel Machek
2007-05-07 19:55 ` david
2007-05-07 20:38 ` Pavel Machek
2007-05-08 17:36 ` Disconnect
2007-04-27 23:59 ` Linus Torvalds
2007-04-28 0:18 ` Linus Torvalds
2007-05-05 11:42 ` Pavel Machek
2007-04-28 0:50 ` Paul Mackerras
2007-04-28 1:00 ` Rafael J. Wysocki
2007-04-28 1:12 ` Linus Torvalds
2007-04-28 0:54 ` David Lang
2007-04-28 1:44 ` Rafael J. Wysocki
2007-04-28 2:51 ` Daniel Hazelton
2007-04-28 7:00 ` progress meter in s2disk (was Re: Back to the future.) Pavel Machek
2007-04-28 8:50 ` Back to the future Pavel Machek
2007-04-28 9:24 ` Rafael J. Wysocki
2007-04-28 16:28 ` Linus Torvalds
2007-04-28 17:50 ` Rafael J. Wysocki
2007-04-28 21:25 ` Linus Torvalds
2007-04-28 23:03 ` Rafael J. Wysocki
2007-04-28 23:45 ` Linus Torvalds
2007-04-29 0:01 ` Nigel Cunningham
2007-04-29 5:01 ` Bojan Smojver
2007-04-29 3:43 ` Kyle Moffett
2007-04-29 8:57 ` Rafael J. Wysocki
2007-04-29 8:59 ` Pavel Machek
2007-04-29 9:32 ` Rafael J. Wysocki
2007-04-29 8:23 ` Pavel Machek
2007-04-29 9:22 ` Rafael J. Wysocki
2007-04-28 18:32 ` David Lang
2007-04-28 19:14 ` Rafael J. Wysocki
2007-04-28 18:44 ` David Lang
2007-05-03 15:25 ` Pavel Machek
2007-04-27 22:07 ` Nigel Cunningham
2007-04-28 1:03 ` Kyle Moffett
2007-04-28 1:15 ` Rafael J. Wysocki
2007-04-28 0:51 ` David Lang
2007-04-28 1:25 ` Kyle Moffett
2007-05-03 15:10 ` Pavel Machek
2007-05-03 16:53 ` Kyle Moffett
2007-05-04 7:52 ` David Greaves
2007-05-04 13:27 ` Kyle Moffett
2007-04-28 0:18 ` Jeremy Fitzhardinge
2007-04-28 1:00 ` Matthew Garrett
2007-04-28 1:05 ` Jeremy Fitzhardinge
2007-05-03 15:14 ` Pavel Machek
2007-06-01 19:00 ` Eric W. Biederman
2007-04-28 1:08 ` Rafael J. Wysocki
2007-04-27 20:44 ` Rafael J. Wysocki
2007-04-28 19:09 ` Bill Davidsen
2007-04-26 22:40 ` Pavel Machek
2007-04-27 5:41 ` Pekka Enberg
2007-04-27 14:55 ` Pavel Machek
2007-04-27 21:39 ` Nigel Cunningham
2007-04-26 22:42 ` Pavel Machek
2007-04-26 22:24 ` David Lang
2007-04-26 23:12 ` Pavel Machek
2007-04-26 22:49 ` David Lang
2007-04-26 23:27 ` Pavel Machek
2007-04-26 22:56 ` David Lang
2007-04-27 0:23 ` Olivier Galibert
2007-04-27 12:49 ` Pavel Machek
2007-04-27 21:26 ` Rafael J. Wysocki
2007-04-27 22:12 ` David Lang
2007-04-26 8:38 ` Jan Engelhardt
2007-04-26 9:33 ` Nigel Cunningham
2007-04-28 0:28 ` Bojan Smojver
[not found] <8e5l8-7SD-21@gated-at.bofh.it>
[not found] ` <8e6Ka-1uR-3@gated-at.bofh.it>
[not found] ` <8e6TS-1Id-11@gated-at.bofh.it>
[not found] ` <8efu9-6mF-1@gated-at.bofh.it>
[not found] ` <8ekWV-6FF-33@gated-at.bofh.it>
[not found] ` <8el6y-6Sj-5@gated-at.bofh.it>
[not found] ` <8elpT-7wY-21@gated-at.bofh.it>
2007-04-28 11:04 ` Bodo Eggert
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=alpine.LFD.0.98.0704271728460.9964@woody.linux-foundation.org \
--to=torvalds@linux-foundation.org \
--cc=david.lang@digitalinsight.com \
--cc=linux-kernel@vger.kernel.org \
--cc=nigel@nigel.suspend2.net \
--cc=penberg@cs.helsinki.fi \
--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;
as well as URLs for NNTP newsgroup(s).