All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Roger Pau Monné" <roger.pau@citrix.com>
To: Tamas K Lengyel <tamas@tklengyel.com>
Cc: Petre Pircalabu <ppircalabu@bitdefender.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Tamas K Lengyel <tamas.lengyel@intel.com>, Wei Liu <wl@xen.org>,
	Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
	George Dunlap <george.dunlap@eu.citrix.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Ian Jackson <ian.jackson@eu.citrix.com>,
	Julien Grall <julien.grall@gmail.com>,
	Alexandru Isaila <aisaila@bitdefender.com>,
	Jan Beulich <jbeulich@suse.com>,
	Xen-devel <xen-devel@lists.xenproject.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Julien Grall <julien@xen.org>
Subject: Re: [Xen-devel] [PATCH v2 00/20] VM forking
Date: Wed, 8 Jan 2020 16:08:41 +0100	[thread overview]
Message-ID: <20200108150841.GR11756@Air-de-Roger> (raw)
In-Reply-To: <CABfawhkHK3FYuGTwm6A4Ni+_a6wdqHwDxbDYqofcNyS_kQT-Yw@mail.gmail.com>

On Tue, Dec 31, 2019 at 09:36:01AM -0700, Tamas K Lengyel wrote:
> On Tue, Dec 31, 2019 at 9:08 AM Tamas K Lengyel <tamas@tklengyel.com> wrote:
> >
> > On Tue, Dec 31, 2019 at 8:11 AM Roger Pau Monné <roger.pau@citrix.com> wrote:
> > >
> > > On Tue, Dec 31, 2019 at 08:00:17AM -0700, Tamas K Lengyel wrote:
> > > > On Tue, Dec 31, 2019 at 3:40 AM Roger Pau Monné <roger.pau@citrix.com> wrote:
> > > > >
> > > > > On Mon, Dec 30, 2019 at 05:37:38PM -0700, Tamas K Lengyel wrote:
> > > > > > On Mon, Dec 30, 2019 at 5:20 PM Julien Grall <julien.grall@gmail.com> wrote:
> > > > > > >
> > > > > > > Hi,
> > > > > > >
> > > > > > > On Mon, 30 Dec 2019, 20:49 Tamas K Lengyel, <tamas@tklengyel.com> wrote:
> > > > > > >>
> > > > > > >> On Mon, Dec 30, 2019 at 11:43 AM Julien Grall <julien@xen.org> wrote:
> > > > > > >> But keep in mind that the "fork-vm" command even with this update
> > > > > > >> would still not produce for you a "fully functional" VM on its own.
> > > > > > >> The user still has to produce a new VM config file, create the new
> > > > > > >> disk, save the QEMU state, etc.
> > > > >
> > > > > IMO the default behavior of the fork command should be to leave the
> > > > > original VM paused, so that you can continue using the same disk and
> > > > > network config in the fork and you won't need to pass a new config
> > > > > file.
> > > > >
> > > > > As Julien already said, maybe I wasn't clear in my previous replies:
> > > > > I'm not asking you to implement all this, it's fine if the
> > > > > implementation of the fork-vm xl command requires you to pass certain
> > > > > options, and that the default behavior is not implemented.
> > > > >
> > > > > We need an interface that's sane, and that's designed to be easy and
> > > > > comprehensive to use, not an interface built around what's currently
> > > > > implemented.
> > > >
> > > > OK, so I think that would look like "xl fork-vm <parent_domid>" with
> > > > additional options for things like name, disk, vlan, or a completely
> > > > new config, all of which are currently not implemented, + an
> > > > additional option to not launch QEMU at all, which would be the only
> > > > one currently working. Also keeping the separate "xl fork-launch-dm"
> > > > as is. Is that what we are talking about?
> > >
> > > I think fork-launch-vm should just be an option of fork-vm (ie:
> > > --launch-dm-only or some such). I don't think there's a reason to have
> > > a separate top-level command to just launch the device model.
> >
> > It's just that the fork-launch-dm needs the domid of the fork, while
> > the fork-vm needs the parent's domid. But I guess we can interpret the
> > "domid" required input differently depending on which sub-option is
> > specified for the command. Let's see how it pans out.
> 
> How does the following look for the interface?
> 
>     { "fork-vm",
>       &main_fork_vm, 0, 1,
>       "Fork a domain from the running parent domid",
>       "[options] <Domid>",
>       "-h                           Print this help.\n"
>       "-N <name>                    Assign name to VM fork.\n"
>       "-D <disk>                    Assign disk to VM fork.\n"
>       "-B <bridge                   Assign bridge to VM fork.\n"
>       "-V <vlan>                    Assign vlan to VM fork.\n"

IMO I think the name of fork is the only useful option. Being able to
assign disks or bridges from the command line seems quite complicated.
What about VMs with multiple disks? Or VMs with multiple nics on
different bridges?

I think it's easier for both the implementation and the user to just
use a config file in that case.

>       "-C <config>                  Use config file for VM fork.\n"
>       "-Q <qemu-save-file>          Use qemu save file for VM fork.\n"
>       "--launch-dm  <yes|no|late>   Launch device model (QEMU) for VM fork.\n"
>       "--fork-reset                 Reset VM fork.\n"
>       "-p                           Do not unpause VMs after fork."

I think the default behaviour should be to leave the original VM
paused and the forked one running, and hence this should be:

        "-p                           Leave forked VM paused."
	"-u                           Leave parent VM unpaused."

>       "-h                           Print this help.\n"
>       "-d                           Enable debug messages.\n"
>     },
> 
> Currently the parts that are implemented would look like:
> xl fork-vm -p --launch-dm no <parent_domid>
> xl fork-vm -p --launch-dm late -C <config> -Q <qemu-save-file> <fork_domid>

Why do you need a config file for launching the Qemu device model?
Doesn't the save-file contain all the information?

I think you also need something like:

# xl fork-vm --launch-dm late <parent_domid> <fork_domid>

So that a user doesn't need to pass a qemu-save-file?

Can you also list the command used to get the Qemu save-file from the
parent? (just for completeness purposes).

Thanks, Roger.

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

  parent reply	other threads:[~2020-01-08 15:09 UTC|newest]

Thread overview: 96+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-18 19:40 [Xen-devel] [PATCH v2 00/20] VM forking Tamas K Lengyel
2019-12-18 19:40 ` [Xen-devel] [PATCH v2 01/20] x86: make hvm_{get/set}_param accessible Tamas K Lengyel
2019-12-19 19:07   ` Andrew Cooper
2019-12-19 19:38     ` Tamas K Lengyel
2019-12-19 19:40       ` Andrew Cooper
2019-12-19 19:49         ` Tamas K Lengyel
2019-12-19 19:57           ` Andrew Cooper
2019-12-19 20:09             ` Tamas K Lengyel
2019-12-20 16:46   ` Jan Beulich
2019-12-20 17:27     ` Tamas K Lengyel
2019-12-20 17:32       ` Andrew Cooper
2019-12-20 17:36         ` Tamas K Lengyel
2019-12-20 17:46           ` Andrew Cooper
2019-12-20 17:50             ` Tamas K Lengyel
2019-12-20 18:00               ` Andrew Cooper
2019-12-20 18:05                 ` Tamas K Lengyel
2019-12-23  9:37         ` Jan Beulich
2019-12-23 14:55           ` Tamas K Lengyel
2019-12-27  8:02             ` Jan Beulich
2019-12-27 13:10               ` Tamas K Lengyel
2019-12-27 13:44                 ` Jan Beulich
2019-12-27 14:06                   ` Tamas K Lengyel
2019-12-18 19:40 ` [Xen-devel] [PATCH v2 02/20] xen/x86: Make hap_get_allocation accessible Tamas K Lengyel
2019-12-19 19:08   ` Andrew Cooper
2019-12-20 16:48   ` Jan Beulich
2019-12-18 19:40 ` [Xen-devel] [PATCH v2 03/20] tools/libxc: clean up memory sharing files Tamas K Lengyel
2019-12-18 19:40 ` [Xen-devel] [PATCH v2 04/20] x86/mem_sharing: cleanup code and comments in various locations Tamas K Lengyel
2019-12-19 11:18   ` Andrew Cooper
2019-12-19 16:20     ` Tamas K Lengyel
2019-12-19 16:21     ` Tamas K Lengyel
2019-12-19 18:51       ` Andrew Cooper
2019-12-19 19:26         ` Tamas K Lengyel
2019-12-18 19:40 ` [Xen-devel] [PATCH v2 05/20] x86/mem_sharing: make get_two_gfns take locks conditionally Tamas K Lengyel
2019-12-19 19:12   ` Andrew Cooper
2019-12-18 19:40 ` [Xen-devel] [PATCH v2 06/20] x86/mem_sharing: drop flags from mem_sharing_unshare_page Tamas K Lengyel
2019-12-18 19:40 ` [Xen-devel] [PATCH v2 07/20] x86/mem_sharing: don't try to unshare twice during page fault Tamas K Lengyel
2019-12-19 19:19   ` Andrew Cooper
2019-12-18 19:40 ` [Xen-devel] [PATCH v2 08/20] x86/mem_sharing: define mem_sharing_domain to hold some scattered variables Tamas K Lengyel
2019-12-18 19:40 ` [Xen-devel] [PATCH v2 09/20] x86/mem_sharing: Use INVALID_MFN and p2m_is_shared in relinquish_shared_pages Tamas K Lengyel
2019-12-18 19:40 ` [Xen-devel] [PATCH v2 10/20] x86/mem_sharing: Make add_to_physmap static and shorten name Tamas K Lengyel
2019-12-18 19:40 ` [Xen-devel] [PATCH v2 11/20] x86/mem_sharing: Convert MEM_SHARING_DESTROY_GFN to a bool Tamas K Lengyel
2019-12-18 21:29   ` Julien Grall
2019-12-18 22:19     ` Tamas K Lengyel
2019-12-18 19:40 ` [Xen-devel] [PATCH v2 12/20] x86/mem_sharing: Replace MEM_SHARING_DEBUG with gdprintk Tamas K Lengyel
2019-12-18 19:40 ` [Xen-devel] [PATCH v2 13/20] x86/mem_sharing: ASSERT that p2m_set_entry succeeds Tamas K Lengyel
2019-12-18 19:40 ` [Xen-devel] [PATCH v2 14/20] x86/mem_sharing: Enable mem_sharing on first memop Tamas K Lengyel
2019-12-18 19:40 ` [Xen-devel] [PATCH v2 15/20] x86/mem_sharing: Skip xen heap pages in memshr nominate Tamas K Lengyel
2019-12-18 19:40 ` [Xen-devel] [PATCH v2 16/20] x86/mem_sharing: check page type count earlier Tamas K Lengyel
2019-12-18 19:40 ` [Xen-devel] [PATCH v2 17/20] xen/mem_sharing: VM forking Tamas K Lengyel
2019-12-18 19:40 ` [Xen-devel] [PATCH v2 18/20] xen/mem_access: Use __get_gfn_type_access in set_mem_access Tamas K Lengyel
2019-12-19  7:59   ` Alexandru Stefan ISAILA
2019-12-19 16:00     ` Tamas K Lengyel
2019-12-18 19:40 ` [Xen-devel] [PATCH v2 19/20] x86/mem_sharing: reset a fork Tamas K Lengyel
2019-12-18 22:00   ` Julien Grall
2019-12-18 22:33     ` Tamas K Lengyel
2019-12-18 23:01       ` Julien Grall
2019-12-19  0:15         ` Tamas K Lengyel
2019-12-19  7:45           ` Julien Grall
2019-12-19 16:11             ` Tamas K Lengyel
2019-12-19 16:57               ` Julien Grall
2019-12-19 17:23                 ` Tamas K Lengyel
2019-12-19 17:38                   ` Julien Grall
2019-12-19 18:00                     ` Tamas K Lengyel
2019-12-19 11:06           ` Jan Beulich
2019-12-19 16:02             ` Tamas K Lengyel
2019-12-18 19:40 ` [Xen-devel] [PATCH v2 20/20] xen/tools: VM forking toolstack side Tamas K Lengyel
2019-12-19  9:48 ` [Xen-devel] [PATCH v2 00/20] VM forking Roger Pau Monné
2019-12-19 15:58   ` Tamas K Lengyel
2019-12-30 17:59     ` Roger Pau Monné
2019-12-30 18:15       ` Tamas K Lengyel
2019-12-30 18:43         ` Julien Grall
2019-12-30 20:46           ` Tamas K Lengyel
2019-12-31  0:20             ` Julien Grall
2019-12-31  0:37               ` Tamas K Lengyel
2019-12-31 10:40                 ` Roger Pau Monné
2019-12-31 15:00                   ` Tamas K Lengyel
2019-12-31 15:11                     ` Roger Pau Monné
2019-12-31 16:08                       ` Tamas K Lengyel
2019-12-31 16:36                         ` Tamas K Lengyel
2020-01-08  9:42                           ` Julien Grall
2020-01-08 15:08                           ` Roger Pau Monné [this message]
2020-01-08 15:32                             ` Tamas K Lengyel
2020-01-08 18:00                               ` Roger Pau Monné
2020-01-08 18:14                                 ` Tamas K Lengyel
2020-01-08 18:23                                   ` Tamas K Lengyel
2020-01-08 18:44                                     ` Roger Pau Monné
2020-01-08 19:47                                       ` Tamas K Lengyel
2020-01-08 18:36                                   ` Roger Pau Monné
2020-01-08 19:51                                     ` Tamas K Lengyel
2020-01-09  9:47                                       ` Roger Pau Monné
2020-01-09 13:31                                         ` Tamas K Lengyel
2020-01-08 16:34                       ` George Dunlap
2020-01-08 17:06                         ` Tamas K Lengyel
2020-01-08 17:16                           ` George Dunlap
2020-01-08 17:25                             ` Tamas K Lengyel
2020-01-08 18:07                         ` Roger Pau Monné

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=20200108150841.GR11756@Air-de-Roger \
    --to=roger.pau@citrix.com \
    --cc=aisaila@bitdefender.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=anthony.perard@citrix.com \
    --cc=george.dunlap@eu.citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=jbeulich@suse.com \
    --cc=julien.grall@gmail.com \
    --cc=julien@xen.org \
    --cc=konrad.wilk@oracle.com \
    --cc=ppircalabu@bitdefender.com \
    --cc=sstabellini@kernel.org \
    --cc=tamas.lengyel@intel.com \
    --cc=tamas@tklengyel.com \
    --cc=wl@xen.org \
    --cc=xen-devel@lists.xenproject.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.