From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Juan Quintela <quintela@redhat.com>
Cc: "Markus Armbruster" <armbru@redhat.com>,
"Peter Xu" <peterx@redhat.com>,
qemu-devel@nongnu.org, "Fabiano Rosas" <farosas@suse.de>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Thomas Huth" <thuth@redhat.com>
Subject: Re: Configuring migration
Date: Tue, 14 Nov 2023 10:45:12 +0000 [thread overview]
Message-ID: <ZVNPuOu47R7OzppW@redhat.com> (raw)
In-Reply-To: <87h6loobu4.fsf@secure.mitica>
On Tue, Nov 14, 2023 at 11:42:27AM +0100, Juan Quintela wrote:
> Daniel P. Berrangé <berrange@redhat.com> wrote:
> > On Tue, Nov 14, 2023 at 11:28:28AM +0100, Juan Quintela wrote:
> >> Daniel P. Berrangé <berrange@redhat.com> wrote:
> >> > On Thu, Nov 02, 2023 at 03:25:25PM +0100, Markus Armbruster wrote:
> >> >> Now let's try to apply this to migration.
> >> >>
> >> >> As long as we can have just one migration, we need just one QAPI object
> >> >> to configure it.
> >> >>
> >> >> We could create the object with -object / object_add. For convenience,
> >> >> we'd probably want to create one with default configuration
> >> >> automatically on demand.
> >> >>
> >> >> We could use qom-set to change configuration. If we're not comfortable
> >> >> with using qom-set for production, we could do something like
> >> >> blockdev-reopen instead.
> >> >
> >> > Do we even need to do this via a QAPI object ?
> >> >
> >> > Why are we not just making the obvious design change of passing everything
> >> > with the 'migrate' / 'migrate-incoming' commands that kick it off:
> >> >
> >> > ie:
> >> >
> >> > { 'command': 'migrate',
> >> > 'data': {'uri': 'str',
> >> > '*channels': [ 'MigrationChannel' ],
> >> > '*capabilities': [ 'MigrateCapability' ],
> >> > '*parameters': [ 'MigrateParameters' ],
> >> > '*detach': 'bool', '*resume': 'bool' } }
> >>
> >> Once that we are doing incompatible changes:
> >
> > This is not incompatible - it is fully backcompatible with existing
> > usage initially, which should make it pretty trivial to introduce
> > to the code. Mgmt apps can carry on using migrate-set-capabilities
> > and migrate-set-parameters, and ignore these new 'capabilities'
> > and 'parameters' fields if desired.
> >
> > Only once we decide to deprecate migrate-set-capabilities, would
> > it become incompatible.
>
> Oh, I mean that the interface is incompatible. Not that we can't do the
> current one on top of this one.
>
> >> - resume can be another parameter
> >
> > Potentially yes, but 'resume' is conceptually different to all
> > the other capabilities and parameters, so I could see it remaining
> > as a distinct field as it is now
>
> It is conceptually different. But it is the _only_ one needed that
> capability. And putting that on the parameters and just checking it
> first will achieve the same result. I think that being special here
> don't help, for instance, to check for incompatible things, we need to
> also pass resume (it is only valid for postcopy).
>
> >> - detach is not needed. QMP don't use it, and HMP don't need to pass it
> >> to qmp_migrate() to make the non-detached implemntation.
> >
> > We could deprecate that today then.
>
> Yeap. Will do it.
>
> >> > (deprecated bits trimmed for clarity)
> >> >
> >> > and the counterpart:
> >> >
> >> > { 'command': 'migrate-incoming',
> >> > 'data': {'*uri': 'str',
> >> > '*channels': [ 'MigrationChannel' ],
> >> > '*capabilities': [ 'MigrateCapability' ],
> >> > '*parameters': [ 'MigrateParameters' ] } }
> >> >
> >> > such that the design is just like 99% of other commands which take
> >> > all their parameters directly. We already have 'migrate-set-parameters'
> >> > remaining for the runtime tunables, and can deprecate the usage of this
> >> > when migration is not already running, and similarly deprecate
> >> > migrate-set-capabilities.
> >>
> >> This makes sense to me, but once that we change, we could try to merge
> >> capabilities and parameters. See my other email on this topic.
> >> Basically the distition is arbitrary, so just have one of them.
> >>
> >> Or better, as I said in the other email, we have two types of
> >> parameters:
> >> - the ones that need to be set before migration starts
> >> - the ones that can be changed at any time
> >>
> >> So to be simpler, I think that 1st set should be passed to the commands
> >> themselves and the others should only be set with
> >> migrate_set_parameters.
> >
> > As a mgmt app dev I don't want there to be an arbitrary distinction
> > between what I can pass with 'migrate' and what I have to use a
> > separate command for.
>
> If it ever wants to set the parameter that it "can" change after
> migration starts, it needs to know that they are different.
>
> Once told that, I don't write management apps and you do so I am not
> discussing further O:-)
>
> > If I'm starting a migration, I just want to
> > pass all the settings with the 'migrate' command. I should not have
> > to care about separate 'migrate-set-parameters' command at all, unless
> > I actually need to change something on the fly (many migrates will
> > never need this).
>
>
> What OpenStack/CNV do?
>
> If my memory is right, at least one of them used progressive downtimes
> every couple of iterations or something like that.
If they're using pre-copy, yes, they both can do progressive tuning.
If using post-copy though, you potentially never need to change any
tunable on the fly.
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2023-11-14 10:45 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-05 16:23 [PATCH v3 0/4] qapi/migration: Dedup migration parameter objects and fix tls-authz crash Peter Xu
2023-09-05 16:23 ` [PATCH v3 1/4] migration/qmp: Fix crash on setting tls-authz with null Peter Xu
2023-09-28 4:47 ` Michael Tokarev
2023-09-28 5:36 ` Markus Armbruster
2023-09-28 6:56 ` Michael Tokarev
2023-10-04 13:58 ` Juan Quintela
2023-10-16 6:05 ` Markus Armbruster
2023-09-05 16:23 ` [PATCH v3 2/4] tests/migration-test: Add a test for null parameter setups Peter Xu
2023-10-04 13:58 ` Juan Quintela
2023-09-05 16:23 ` [PATCH v3 3/4] migration/qapi: Replace @MigrateSetParameters with @MigrationParameters Peter Xu
2023-09-26 20:40 ` Markus Armbruster
2023-10-02 19:52 ` Peter Xu
2023-10-09 12:25 ` Markus Armbruster
2023-10-10 15:05 ` Peter Xu
2023-10-10 19:18 ` Markus Armbruster
2023-10-10 20:09 ` Peter Xu
2023-10-11 4:28 ` Markus Armbruster
2023-10-11 14:21 ` Markus Armbruster
2023-10-12 19:28 ` Peter Xu
2023-10-13 5:36 ` Markus Armbruster
2023-10-31 11:08 ` Juan Quintela
2023-11-02 14:25 ` Configuring migration (was: [PATCH v3 3/4] migration/qapi: Replace @MigrateSetParameters with @MigrationParameters) Markus Armbruster
2023-11-02 18:05 ` Peter Xu
2023-11-14 7:27 ` Configuring migration Markus Armbruster
2023-11-14 10:20 ` Juan Quintela
2023-11-14 9:13 ` Configuring migration (was: [PATCH v3 3/4] migration/qapi: Replace @MigrateSetParameters with @MigrationParameters) Daniel P. Berrangé
2023-11-14 9:53 ` Configuring migration Markus Armbruster
2023-11-14 9:55 ` Daniel P. Berrangé
2023-11-14 10:28 ` Juan Quintela
2023-11-14 10:34 ` Daniel P. Berrangé
2023-11-14 10:42 ` Juan Quintela
2023-11-14 10:45 ` Daniel P. Berrangé [this message]
2023-10-12 15:58 ` [PATCH v3 3/4] migration/qapi: Replace @MigrateSetParameters with @MigrationParameters Peter Xu
2023-10-13 5:41 ` Markus Armbruster
2023-09-05 16:23 ` [PATCH v3 4/4] migration/qapi: Drop @MigrationParameter enum Peter Xu
2023-09-06 4:42 ` Philippe Mathieu-Daudé
2023-09-06 9:00 ` Daniel P. Berrangé
2023-09-06 10:14 ` Philippe Mathieu-Daudé
2023-09-06 10:46 ` Daniel P. Berrangé
2023-09-26 19:05 ` Peter Xu
2023-09-26 20:43 ` Markus Armbruster
2023-10-02 20:42 ` Peter Xu
2023-10-16 6:29 ` Markus Armbruster
2023-10-16 16:16 ` Peter Xu
2023-10-16 17:36 ` Markus Armbruster
2023-09-25 12:59 ` [PATCH v3 0/4] qapi/migration: Dedup migration parameter objects and fix tls-authz crash Markus Armbruster
2023-09-26 17:06 ` Peter Xu
2023-09-26 20:03 ` Markus Armbruster
2023-10-16 7:08 ` Markus Armbruster
2023-10-16 16:29 ` Peter Xu
2023-10-17 6:32 ` Markus Armbruster
2023-10-17 15:28 ` Peter Xu
2023-10-18 5:38 ` Markus Armbruster
2023-10-25 13:17 ` QAPI doc generator improvements (was: [PATCH v3 0/4] qapi/migration: Dedup migration parameter objects and fix tls-authz crash) Markus Armbruster
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=ZVNPuOu47R7OzppW@redhat.com \
--to=berrange@redhat.com \
--cc=armbru@redhat.com \
--cc=farosas@suse.de \
--cc=peterx@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=thuth@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 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.