From: Jamie Lokier <jamie@shareable.org>
To: Avi Kivity <avi@redhat.com>
Cc: Mark McLoughlin <markmc@redhat.com>,
Anthony Liguori <aliguori@us.ibm.com>,
Arnd Bergmann <arndbergmann@googlemail.com>,
agl@linux.vnet.ibm.com, Arnd Bergmann <arnd@arndb.de>,
Juan Quintela <quintela@redhat.com>,
Dustin Kirkland <kirkland@canonical.com>,
qemu-devel@nongnu.org, Michael Tsirkin <mst@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 0/4] net-bridge: rootless bridge support for qemu
Date: Mon, 9 Nov 2009 19:35:21 +0000 [thread overview]
Message-ID: <20091109193521.GF3808@shareable.org> (raw)
In-Reply-To: <4AF558A6.4030804@redhat.com>
Avi Kivity wrote:
> On 11/07/2009 12:44 PM, Jamie Lokier wrote:
> >Aiee - what's the plan? Can a running KVM be forked, as in into two
> >separate processes to run the forked guests in parallel, or not?
>
> kvm fds do not support fork(). Nothing prevents you from stopping the
> guest, reading guest state, fork()ing, and creating a new VM in the
> child with the same state, then restarting both instances.
>
> qemu in general cannot be forked; the two instances would trample on
> each others disk images, host network connections (i.e. vnc, X, the
> monitor), guest network connections, etc.
Oh, I understand that qemu forking is fraught. It would need to fork
at just the right moment and recreate all sorts of things.
And I'm not surprised that the kvm fd does not fork. Why should it?
fds refer to device instances, and fork does not generally create new
instances.
What I'd like to know is, if all of QEMU's state is appropriately
recreated in the child instance, and KVM's device is reopened with a
copy of the kvm state (by using the recently introduced ioctls to get
and set it), will it fork the _guest RAM_ mapped into KVM in the way
that fork does?
Or is it necessary to copy all the guest RAM from original instance
into the new ones, so that there must be multiple copies of all the
guest RAM pages, even if they are the same?
What I have in mind is a "test state server", which is a KVM instance
halted in a state where loadvm has loaded up all of guest memory in a
state where the guest is ready to do something.
Incoming requests cause that server to fork off and start all the
device emulations, open network connections, create -snapshot qcow2
temporary fork files, etc., so the forked child is a running VM, doing
whatever it was poised to do, with no permanent effect.
(Naturally the guest would have to be in a usefully prepared state,
probably it's just about to run a network config script to get it's
per-instance settings and then fetch a test script to run.)
Basically, will KVM (the kernel bits) work using guest RAM which is
shared with other guest instances and a non-guest instance (the parent
process which hasn't yet started KVM) in that way?
Will KVM (the kernel bits) also work the other way, where it is paused
and all the devices closed (as if we're doing savevm and shutting
down), but instead of saving and unmapping guest memory, only the
device state is savevm'd, that's used to put it into the halted state
described above, from which it's able to reload device state and
continue?
In a nutshell, does KVM mind the guest's memory pages (including
device memory like framebuffers) being COW-shared in all the ways that
fork() can cause?
I know it's an arcane question, so thanks a lot if you answer! :-)
-- Jamie
next prev parent reply other threads:[~2009-11-09 19:35 UTC|newest]
Thread overview: 125+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-04 0:28 [Qemu-devel] [PATCH 0/4] net-bridge: rootless bridge support for qemu Anthony Liguori
2009-11-04 0:28 ` [Qemu-devel] [PATCH 1/4] Add basic version of bridge helper Anthony Liguori
2009-11-04 0:28 ` [Qemu-devel] [PATCH 2/4] Add access control support to qemu-bridge-helper Anthony Liguori
2009-11-04 13:38 ` [Qemu-devel] [PATCH 2/4] Add access control support toqemu-bridge-helper Krumme, Chris
2009-11-04 14:23 ` Anthony Liguori
2009-11-04 14:37 ` Krumme, Chris
2009-11-05 15:06 ` [Qemu-devel] [PATCH 2/4] Add access control support to qemu-bridge-helper Daniel P. Berrange
2009-11-04 0:28 ` [Qemu-devel] [PATCH 3/4] Add cap reduction support to enable use as SUID binary Anthony Liguori
2009-11-04 0:28 ` [Qemu-devel] [PATCH 4/4] Add support for -net bridge Anthony Liguori
2009-11-04 13:49 ` Krumme, Chris
2009-11-04 14:23 ` Anthony Liguori
2009-11-05 14:41 ` Avi Kivity
2009-11-05 14:45 ` Anthony Liguori
2009-11-05 14:49 ` Avi Kivity
2009-11-06 2:29 ` Jamie Lokier
2009-11-07 17:29 ` David Woodhouse
2009-11-07 22:11 ` Anthony Liguori
2009-11-08 8:27 ` Avi Kivity
2009-11-08 8:43 ` Arnd Bergmann
2009-11-08 8:55 ` Avi Kivity
2009-11-09 14:20 ` Anthony Liguori
2009-11-09 15:39 ` Jamie Lokier
2009-11-09 15:43 ` Anthony Liguori
2009-11-09 19:19 ` Jamie Lokier
2009-11-10 12:23 ` Avi Kivity
2009-11-04 12:02 ` [Qemu-devel] [PATCH 0/4] net-bridge: rootless bridge support for qemu Alexander Graf
2009-11-04 14:42 ` Anthony Liguori
2009-11-04 15:02 ` Alexander Graf
2009-11-04 16:02 ` Anthony Liguori
2009-11-04 17:04 ` [Qemu-devel] " Michael S. Tsirkin
2009-11-04 19:48 ` Anthony Liguori
2009-11-04 20:04 ` Michael S. Tsirkin
2009-11-04 20:44 ` Anthony Liguori
2009-11-05 8:17 ` Michael S. Tsirkin
2009-11-05 13:05 ` Anthony Liguori
2009-11-04 22:40 ` Dustin Kirkland
2009-11-05 0:52 ` Anthony Liguori
2009-11-05 2:12 ` Dustin Kirkland
2009-11-05 4:12 ` [Qemu-devel] " Jamie Lokier
2009-11-05 8:21 ` Michael S. Tsirkin
2009-11-06 2:03 ` Jamie Lokier
2009-11-06 11:58 ` Arnd Bergmann
2009-11-06 20:26 ` Jamie Lokier
2009-11-08 11:55 ` Michael S. Tsirkin
2009-11-05 13:11 ` Anthony Liguori
2009-11-05 14:33 ` Avi Kivity
2009-11-05 14:36 ` Avi Kivity
2009-11-05 14:46 ` Daniel P. Berrange
2009-11-05 14:53 ` Anthony Liguori
2009-11-05 16:41 ` Jamie Lokier
2009-11-05 16:51 ` Daniel P. Berrange
2009-11-06 1:53 ` Jamie Lokier
2009-11-05 14:50 ` Anthony Liguori
2009-11-05 15:05 ` Avi Kivity
2009-11-05 15:50 ` Anthony Liguori
2009-11-05 16:02 ` Avi Kivity
2009-11-05 16:19 ` Anthony Liguori
2009-11-05 16:28 ` Avi Kivity
2009-11-05 16:37 ` Jamie Lokier
2009-11-05 16:45 ` Anthony Liguori
2009-11-05 17:20 ` Arnd Bergmann
2009-11-05 17:42 ` Anthony Liguori
2009-11-05 18:02 ` Arnd Bergmann
2009-11-05 19:54 ` Anthony Liguori
2009-11-05 18:14 ` Avi Kivity
2009-11-05 18:11 ` Avi Kivity
2009-11-05 19:58 ` Anthony Liguori
2009-11-06 1:48 ` Jamie Lokier
2009-11-06 7:22 ` Avi Kivity
2009-11-06 10:54 ` Jamie Lokier
2009-11-06 12:42 ` Anthony Liguori
2009-11-07 3:44 ` Jamie Lokier
2009-11-06 14:19 ` Anthony Liguori
2009-11-07 9:14 ` Avi Kivity
2009-11-07 9:43 ` Avi Kivity
2009-11-07 14:07 ` Anthony Liguori
2009-11-07 21:50 ` Arnd Bergmann
2009-11-07 22:12 ` Anthony Liguori
2009-11-08 8:11 ` Avi Kivity
2009-11-07 14:04 ` Anthony Liguori
2009-11-06 0:29 ` Anthony Liguori
2009-11-06 7:26 ` Avi Kivity
2009-11-06 16:09 ` Anthony Liguori
2009-11-07 9:27 ` Avi Kivity
2009-11-07 10:44 ` Jamie Lokier
2009-11-07 11:23 ` Avi Kivity
2009-11-09 19:35 ` Jamie Lokier [this message]
2009-11-10 12:25 ` Avi Kivity
2009-11-10 13:33 ` Jamie Lokier
2009-11-07 13:59 ` Anthony Liguori
2009-11-05 16:29 ` Jamie Lokier
2009-11-05 14:57 ` Anthony Liguori
2009-11-05 15:11 ` Avi Kivity
2009-11-05 15:33 ` Avi Kivity
2009-11-05 15:58 ` Anthony Liguori
2009-11-05 16:07 ` Avi Kivity
2009-11-06 2:19 ` Jamie Lokier
2009-11-05 16:06 ` Anthony Liguori
2009-11-05 16:15 ` Avi Kivity
2009-11-05 16:25 ` Anthony Liguori
2009-11-05 16:33 ` Avi Kivity
2009-11-05 16:50 ` Anthony Liguori
2009-11-05 17:16 ` Scott Tsai
2009-11-05 18:19 ` Avi Kivity
2009-11-06 2:16 ` Jamie Lokier
2009-11-05 18:19 ` Avi Kivity
2009-11-06 2:17 ` Jamie Lokier
2009-11-05 15:11 ` Daniel P. Berrange
2009-11-05 15:14 ` Avi Kivity
2009-11-05 15:20 ` Daniel P. Berrange
2009-11-05 15:59 ` Anthony Liguori
2009-11-05 16:20 ` Avi Kivity
2009-11-05 16:28 ` Anthony Liguori
2009-11-05 16:35 ` Avi Kivity
2009-11-05 16:53 ` Daniel P. Berrange
2009-11-05 17:03 ` Anthony Liguori
2009-11-05 17:16 ` Daniel P. Berrange
2009-11-06 2:08 ` Jamie Lokier
2009-11-05 17:26 ` Arnd Bergmann
2009-11-05 19:54 ` Gerhard Stenzel
2009-11-06 2:11 ` Jamie Lokier
2009-11-05 15:00 ` [Qemu-devel] " Mark McLoughlin
2009-11-05 15:14 ` Daniel P. Berrange
2009-11-05 15:28 ` Dustin Kirkland
2009-11-05 15:06 ` Arnd Bergmann
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=20091109193521.GF3808@shareable.org \
--to=jamie@shareable.org \
--cc=agl@linux.vnet.ibm.com \
--cc=aliguori@us.ibm.com \
--cc=arnd@arndb.de \
--cc=arndbergmann@googlemail.com \
--cc=avi@redhat.com \
--cc=kirkland@canonical.com \
--cc=markmc@redhat.com \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.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;
as well as URLs for NNTP newsgroup(s).