From: Louis Rilling <Louis.Rilling@kerlabs.com>
To: Dave Hansen <dave@linux.vnet.ibm.com>
Cc: Daniel Lezcano <dlezcano@fr.ibm.com>,
containers@lists.linux-foundation.org,
Cedric Le Goater <clg@fr.ibm.com>,
Andrey Mirkin <major@openvz.org>,
linux-kernel@vger.kernel.org
Subject: Re: [Devel] Re: [PATCH 0/9] OpenVZ kernel based checkpointing/restart
Date: Thu, 30 Oct 2008 19:01:33 +0100 [thread overview]
Message-ID: <20081030180133.GN15171@hawkmoon.kerlabs.com> (raw)
In-Reply-To: <1225386524.12673.284.camel@nimitz>
[-- Attachment #1: Type: text/plain, Size: 3039 bytes --]
On Thu, Oct 30, 2008 at 10:08:44AM -0700, Dave Hansen wrote:
> On Thu, 2008-10-30 at 12:47 +0100, Louis Rilling wrote:
> > 1) this prevents userspace from doing weird things, like changing the task tree
> > and let the kernel detect it and deal with the mess this creates (think about
> > two threads being restarted in separate processes that do not even share their
> > parents). But one can argue that userspace can change the checkpoint image as
> > well, so that the kernel must check for such weird things anyway.
>
> To me, this is one of the strongest arguments out there for doing
> restart as much as possible with existing user<->kernel APIs. Having
> the kernel detect and clean up userspace's messes is not going to work.
> We might as well just do things in the kernel rather than do that.
>
> What we *should* do is leverage all of the existing APIs that we already
> have instead of creating completely new code paths into which my butter
> fingers can introduce new kernel bugs.
>
> > 2) restart will be more efficient with respect to shared objects.
>
> Can you quantify this? Which objects? How much more efficient?
Quantify? No. I expect that investigating both approaches will show us numbers.
Unless Oren already has some?
Which objects? I think that two kinds will especially matter: objects usually
shared only inside a thread group (mm_struct, fs_struct, files_struct,
signal_struct and sighand_struct), and individual file descriptors. The point is
to avoid creating new structures before destroying them because the restarted
task shares them with a previously restarted one.
Concerning individual file descriptors, limiting the number of open files before
calling sys_restart() may avoid these useless creations/destructions (actually
the "useless" work mainly consists in managing ref counts since file descriptors
are shared after fork()).
Concerning thread-shared structures, it is probably easy for userspace to guess
which clone flags to use when restarting threads, but
1) kernel-space will have to check that the sharing is correct anyway, and
2) kernel-space will have to fix it anyway if structures are not shared in an
obvious manner between tasks (think about A creating B with shared files_struct,
B creating C with shared files_struct, B unsharing its files_struct, and then
checkpoint).
So, with a userspace implementation, useless structures will be created anyway,
and optimizing the common cases (regular threads) just duplicates kernel's work
of checking which shared structure to use for each task to restart.
With a kernel-space implementation, all useless creations can be avoided, and no
duplicate work is needed.
That said, numbers may show us that useless creations are not so
time-consuming, but we won't know before seeing them...
Louis
--
Dr Louis Rilling Kerlabs
Skype: louis.rilling Batiment Germanium
Phone: (+33|0) 6 80 89 08 23 80 avenue des Buttes de Coesmes
http://www.kerlabs.com/ 35700 Rennes
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
next prev parent reply other threads:[~2008-10-30 18:01 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-03 10:57 Andrey Mirkin
2008-09-03 10:57 ` [PATCH 1/9] Introduce trivial sys_checkpoint and sys_restore system calls Andrey Mirkin
2008-09-03 10:57 ` [PATCH 2/9] Make checkpoint/restart functionality modular Andrey Mirkin
2008-09-03 10:57 ` [PATCH 3/9] Introduce context structure needed during checkpointing/restart Andrey Mirkin
2008-09-03 10:57 ` [PATCH 4/9] Introduce container dump function Andrey Mirkin
2008-09-03 10:57 ` [PATCH 5/9] Introduce function to dump process Andrey Mirkin
2008-09-03 10:57 ` [PATCH 6/9] Introduce functions to dump mm Andrey Mirkin
2008-09-03 10:57 ` [PATCH 7/9] Introduce function for restarting a container Andrey Mirkin
2008-09-03 10:57 ` [PATCH 8/9] Introduce functions to restart a process Andrey Mirkin
2008-09-03 10:57 ` [PATCH 9/9] Introduce functions to restore mm Andrey Mirkin
2008-09-03 14:32 ` [PATCH 8/9] Introduce functions to restart a process Louis Rilling
2008-09-13 17:34 ` Pavel Machek
2008-09-03 14:17 ` [PATCH 6/9] Introduce functions to dump mm Louis Rilling
2008-09-03 14:23 ` [PATCH 4/9] Introduce container dump function Serge E. Hallyn
2008-09-03 14:45 ` Andrey Mirkin
2008-09-03 12:29 ` [PATCH 3/9] Introduce context structure needed during checkpointing/restart Matthieu Fertré
2008-09-03 14:11 ` Andrey Mirkin
2008-09-03 13:56 ` Louis Rilling
2008-09-03 14:07 ` Andrey Mirkin
2008-09-03 14:13 ` Cedric Le Goater
2008-09-03 14:29 ` Andrey Mirkin
2008-09-03 14:27 ` [PATCH 2/9] Make checkpoint/restart functionality modular Serge E. Hallyn
2008-09-03 14:51 ` Andrey Mirkin
2008-09-03 11:44 ` [PATCH 1/9] Introduce trivial sys_checkpoint and sys_restore system calls Cedric Le Goater
2008-09-03 13:05 ` [Devel] " Andrey Mirkin
2008-09-03 12:28 ` [PATCH 0/9] OpenVZ kernel based checkpointing/restart Cedric Le Goater
2008-09-03 13:59 ` [Devel] " Andrey Mirkin
2008-09-04 22:55 ` Dave Hansen
2008-09-03 14:18 ` Serge E. Hallyn
2008-09-03 13:49 ` Louis Rilling
2008-09-03 14:06 ` Louis Rilling
2008-09-03 14:19 ` Andrey Mirkin
2008-09-03 14:26 ` Cedric Le Goater
2008-09-03 14:53 ` Andrey Mirkin
2008-09-04 8:14 ` Oren Laadan
2008-09-04 14:05 ` Dave Hansen
2008-10-17 23:33 ` Dave Hansen
2008-10-20 11:10 ` Louis Rilling
2008-10-20 13:25 ` Daniel Lezcano
2008-10-20 13:48 ` Cedric Le Goater
2008-10-20 13:49 ` Daniel Lezcano
2008-10-20 15:53 ` Oren Laadan
2008-10-20 16:37 ` Daniel Lezcano
2008-10-20 17:23 ` Serge E. Hallyn
2008-10-21 0:18 ` Oren Laadan
2008-10-21 0:58 ` Serge E. Hallyn
2008-10-21 13:24 ` Daniel Lezcano
2008-10-27 14:45 ` [Devel] " Andrey Mirkin
2008-10-20 16:51 ` Serge E. Hallyn
2008-10-21 9:36 ` Cedric Le Goater
2008-10-20 16:36 ` Dave Hansen
2008-10-20 12:14 ` [Devel] " Andrey Mirkin
2008-10-20 15:55 ` Dave Hansen
2008-10-27 14:07 ` Andrey Mirkin
2008-10-27 14:39 ` Oren Laadan
2008-10-30 6:02 ` Andrey Mirkin
2008-10-30 11:47 ` Louis Rilling
2008-10-30 17:08 ` Dave Hansen
2008-10-30 18:01 ` Louis Rilling [this message]
2008-10-30 18:28 ` Oren Laadan
2008-10-30 17:45 ` Oren Laadan
2008-10-30 18:14 ` Louis Rilling
2008-10-30 18:32 ` Oren Laadan
2008-10-31 10:37 ` Louis Rilling
2008-10-30 14:08 ` Serge E. Hallyn
2008-10-30 17:03 ` Dave Hansen
2008-11-03 19:35 ` Oren Laadan
2008-10-20 17:17 ` Oren Laadan
2008-10-27 14:38 ` Andrey Mirkin
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=20081030180133.GN15171@hawkmoon.kerlabs.com \
--to=louis.rilling@kerlabs.com \
--cc=clg@fr.ibm.com \
--cc=containers@lists.linux-foundation.org \
--cc=dave@linux.vnet.ibm.com \
--cc=dlezcano@fr.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=major@openvz.org \
/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®