All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: peter.maydell@linaro.org, ehabkost@redhat.com,
	libvir-list@redhat.com, qemu-devel@nongnu.org,
	"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	qemu-arm@nongnu.org, qemu-ppc@nongnu.org, pbonzini@redhat.com,
	Igor Mammedov <imammedo@redhat.com>,
	david@gibson.dropbear.id.au
Subject: Re: [Qemu-arm] [Qemu-devel] [libvirt] [PATCH 1/2] numa: deprecate 'mem' parameter of '-numa node' option
Date: Mon, 4 Mar 2019 10:19:11 +0000	[thread overview]
Message-ID: <20190304101911.GE4239@redhat.com> (raw)
In-Reply-To: <87va0zcdse.fsf@dusky.pond.sub.org>

On Mon, Mar 04, 2019 at 08:13:53AM +0100, Markus Armbruster wrote:
> Daniel P. Berrangé <berrange@redhat.com> writes:
> 
> > On Fri, Mar 01, 2019 at 06:33:28PM +0100, Igor Mammedov wrote:
> >> On Fri, 1 Mar 2019 15:49:47 +0000
> >> Daniel P. Berrangé <berrange@redhat.com> wrote:
> >> 
> >> > On Fri, Mar 01, 2019 at 04:42:15PM +0100, Igor Mammedov wrote:
> >> > > The parameter allows to configure fake NUMA topology where guest
> >> > > VM simulates NUMA topology but not actually getting a performance
> >> > > benefits from it. The same or better results could be achieved
> >> > > using 'memdev' parameter. In light of that any VM that uses NUMA
> >> > > to get its benefits should use 'memdev' and to allow transition
> >> > > initial RAM to device based model, deprecate 'mem' parameter as
> >> > > its ad-hoc partitioning of initial RAM MemoryRegion can't be
> >> > > translated to memdev based backend transparently to users and in
> >> > > compatible manner (migration wise).
> >> > > 
> >> > > That will also allow to clean up a bit our numa code, leaving only
> >> > > 'memdev' impl. in place and several boards that use node_mem
> >> > > to generate FDT/ACPI description from it.  
> >> > 
> >> > Can you confirm that the  'mem' and 'memdev' parameters to -numa
> >> > are 100% live migration compatible in both directions ?  Libvirt
> >> > would need this to be the case in order to use the 'memdev' syntax
> >> > instead.
> >> Unfortunately they are not migration compatible in any direction,
> >> if it where possible to translate them to each other I'd alias 'mem'
> >> to 'memdev' without deprecation. The former sends over only one
> >> MemoryRegion to target, while the later sends over several (one per
> >> memdev).
> >
> > If we can't migration from one to the other, then we can not deprecate
> > the existing 'mem' syntax. Even if libvirt were to provide a config
> > option to let apps opt-in to the new syntax, we need to be able to
> > support live migration of existing running VMs indefinitely. Effectively
> > this means we need the to keep 'mem' support forever, or at least such
> > a long time that it effectively means forever.
> >
> > So I think this patch has to be dropped & replaced with one that
> > simply documents that memdev syntax is preferred.
> 
> We have this habit of postulating absolutes like "can not deprecate"
> instead of engaging with the tradeoffs.  We need to kick it.
> 
> So let's have an actual look at the tradeoffs.
> 
> We don't actually "support live migration of existing running VMs
> indefinitely".
>
> We support live migration to any newer version of QEMU that still
> supports the machine type.
> 
> We support live migration to any older version of QEMU that already
> supports the machine type and all the devices the machine uses.
> 
> Aside: "support" is really an honest best effort here.  If you rely on
> it, use a downstream that puts in the (substantial!) QA work real
> support takes.

If upstream deletes the feature, then that in turn breaks the downstream
unless downstream reverts the upstream change. When we have large overlap
between downstream & upstream maintainer, it is not beneficial to delete
the feature upstream as any effort saved upstream usually expands into
larger effort downstream.

> Feature deprecation is not a contract to drop the feature after two
> releases, or even five.  It's a formal notice that users of the feature
> should transition to its replacement in an orderly manner.
> 
> If I understand Igor correctly, all users should transition away from
> outdated NUMA configurations at least for new VMs in an orderly manner.
> 
> So, how could this formal notice be served constructively?
> 
> If we reject outdated NUMA configurations starting with machine type T,
> we can remove the means to create those configurations along with
> machine type T-1.  Won't happen anytime soon, will happen eventually,
> because in the long run, all machine types are dead (apologies to
> Keynes).
> 
> If we deprecate outdated NUMA configurations now, we can start rejecting
> them with new machine types after a suitable grace period.

How is libvirt going to know what machines it can use with the feature ?
We don't have any way to introspect machine type specific logic, since we
run all probing with "-machine none", and QEMU can't report anything about
machines without instantiating them.

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 :|

WARNING: multiple messages have this Message-ID (diff)
From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: Igor Mammedov <imammedo@redhat.com>,
	peter.maydell@linaro.org, ehabkost@redhat.com,
	libvir-list@redhat.com, qemu-devel@nongnu.org,
	"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	qemu-arm@nongnu.org, qemu-ppc@nongnu.org, pbonzini@redhat.com,
	david@gibson.dropbear.id.au
Subject: Re: [Qemu-devel] [libvirt] [PATCH 1/2] numa: deprecate 'mem' parameter of '-numa node' option
Date: Mon, 4 Mar 2019 10:19:11 +0000	[thread overview]
Message-ID: <20190304101911.GE4239@redhat.com> (raw)
In-Reply-To: <87va0zcdse.fsf@dusky.pond.sub.org>

On Mon, Mar 04, 2019 at 08:13:53AM +0100, Markus Armbruster wrote:
> Daniel P. Berrangé <berrange@redhat.com> writes:
> 
> > On Fri, Mar 01, 2019 at 06:33:28PM +0100, Igor Mammedov wrote:
> >> On Fri, 1 Mar 2019 15:49:47 +0000
> >> Daniel P. Berrangé <berrange@redhat.com> wrote:
> >> 
> >> > On Fri, Mar 01, 2019 at 04:42:15PM +0100, Igor Mammedov wrote:
> >> > > The parameter allows to configure fake NUMA topology where guest
> >> > > VM simulates NUMA topology but not actually getting a performance
> >> > > benefits from it. The same or better results could be achieved
> >> > > using 'memdev' parameter. In light of that any VM that uses NUMA
> >> > > to get its benefits should use 'memdev' and to allow transition
> >> > > initial RAM to device based model, deprecate 'mem' parameter as
> >> > > its ad-hoc partitioning of initial RAM MemoryRegion can't be
> >> > > translated to memdev based backend transparently to users and in
> >> > > compatible manner (migration wise).
> >> > > 
> >> > > That will also allow to clean up a bit our numa code, leaving only
> >> > > 'memdev' impl. in place and several boards that use node_mem
> >> > > to generate FDT/ACPI description from it.  
> >> > 
> >> > Can you confirm that the  'mem' and 'memdev' parameters to -numa
> >> > are 100% live migration compatible in both directions ?  Libvirt
> >> > would need this to be the case in order to use the 'memdev' syntax
> >> > instead.
> >> Unfortunately they are not migration compatible in any direction,
> >> if it where possible to translate them to each other I'd alias 'mem'
> >> to 'memdev' without deprecation. The former sends over only one
> >> MemoryRegion to target, while the later sends over several (one per
> >> memdev).
> >
> > If we can't migration from one to the other, then we can not deprecate
> > the existing 'mem' syntax. Even if libvirt were to provide a config
> > option to let apps opt-in to the new syntax, we need to be able to
> > support live migration of existing running VMs indefinitely. Effectively
> > this means we need the to keep 'mem' support forever, or at least such
> > a long time that it effectively means forever.
> >
> > So I think this patch has to be dropped & replaced with one that
> > simply documents that memdev syntax is preferred.
> 
> We have this habit of postulating absolutes like "can not deprecate"
> instead of engaging with the tradeoffs.  We need to kick it.
> 
> So let's have an actual look at the tradeoffs.
> 
> We don't actually "support live migration of existing running VMs
> indefinitely".
>
> We support live migration to any newer version of QEMU that still
> supports the machine type.
> 
> We support live migration to any older version of QEMU that already
> supports the machine type and all the devices the machine uses.
> 
> Aside: "support" is really an honest best effort here.  If you rely on
> it, use a downstream that puts in the (substantial!) QA work real
> support takes.

If upstream deletes the feature, then that in turn breaks the downstream
unless downstream reverts the upstream change. When we have large overlap
between downstream & upstream maintainer, it is not beneficial to delete
the feature upstream as any effort saved upstream usually expands into
larger effort downstream.

> Feature deprecation is not a contract to drop the feature after two
> releases, or even five.  It's a formal notice that users of the feature
> should transition to its replacement in an orderly manner.
> 
> If I understand Igor correctly, all users should transition away from
> outdated NUMA configurations at least for new VMs in an orderly manner.
> 
> So, how could this formal notice be served constructively?
> 
> If we reject outdated NUMA configurations starting with machine type T,
> we can remove the means to create those configurations along with
> machine type T-1.  Won't happen anytime soon, will happen eventually,
> because in the long run, all machine types are dead (apologies to
> Keynes).
> 
> If we deprecate outdated NUMA configurations now, we can start rejecting
> them with new machine types after a suitable grace period.

How is libvirt going to know what machines it can use with the feature ?
We don't have any way to introspect machine type specific logic, since we
run all probing with "-machine none", and QEMU can't report anything about
machines without instantiating them.

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 :|

  reply	other threads:[~2019-03-04 10:19 UTC|newest]

Thread overview: 77+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-01 15:42 [Qemu-devel] [PATCH 0/2] numa: deprecate -numa node, mem and default memory distribution Igor Mammedov
2019-03-01 15:42 ` Igor Mammedov
2019-03-01 15:42 ` [Qemu-arm] [PATCH 1/2] numa: deprecate 'mem' parameter of '-numa node' option Igor Mammedov
2019-03-01 15:42   ` [Qemu-devel] " Igor Mammedov
2019-03-01 15:49   ` [Qemu-devel] [libvirt] " Daniel P. Berrangé
2019-03-01 15:49     ` Daniel P. Berrangé
2019-03-01 17:33     ` [Qemu-arm] " Igor Mammedov
2019-03-01 17:33       ` Igor Mammedov
2019-03-01 17:48       ` [Qemu-arm] " Daniel P. Berrangé
2019-03-01 17:48         ` Daniel P. Berrangé
2019-03-04  7:13         ` [Qemu-arm] " Markus Armbruster
2019-03-04  7:13           ` Markus Armbruster
2019-03-04 10:19           ` Daniel P. Berrangé [this message]
2019-03-04 10:19             ` Daniel P. Berrangé
2019-03-04 11:45             ` [Qemu-arm] " Markus Armbruster
2019-03-04 11:45               ` Markus Armbruster
2019-03-04 15:28               ` [Qemu-arm] " Daniel P. Berrangé
2019-03-04 15:28                 ` Daniel P. Berrangé
2019-03-04 15:46                 ` [Qemu-arm] " Igor Mammedov
2019-03-04 15:46                   ` Igor Mammedov
2019-03-10 10:14                 ` [Qemu-arm] " Markus Armbruster
2019-03-10 10:14                   ` Markus Armbruster
2019-03-19 14:17                   ` [Qemu-arm] " Igor Mammedov
2019-03-04 14:24             ` Michal Privoznik
2019-03-04 14:24               ` Michal Privoznik
2019-03-04 15:03               ` [Qemu-arm] [libvirt] [Qemu-devel] " Igor Mammedov
2019-03-04 15:03                 ` [Qemu-devel] [libvirt] " Igor Mammedov
2019-03-04 12:25           ` [Qemu-arm] " Igor Mammedov
2019-03-04 12:25             ` Igor Mammedov
2019-03-04 12:39             ` [Qemu-arm] " Daniel P. Berrangé
2019-03-04 12:39               ` Daniel P. Berrangé
2019-03-04 14:16               ` [Qemu-arm] " Igor Mammedov
2019-03-04 14:16                 ` Igor Mammedov
2019-03-04 14:24                 ` [Qemu-arm] " Daniel P. Berrangé
2019-03-04 14:24                   ` Daniel P. Berrangé
2019-03-04 15:19                   ` [Qemu-arm] " Igor Mammedov
2019-03-04 15:19                     ` Igor Mammedov
2019-03-04 16:12                     ` [Qemu-arm] " Michal Privoznik
2019-03-04 16:12                       ` Michal Privoznik
2019-03-04 16:27                       ` [Qemu-arm] " Daniel P. Berrangé
2019-03-04 16:27                         ` Daniel P. Berrangé
2019-03-04 16:20                   ` Michal Privoznik
2019-03-04 16:20                     ` Michal Privoznik
2019-03-04 16:31                     ` Dr. David Alan Gilbert
2019-03-04 16:31                       ` Dr. David Alan Gilbert
2019-03-04 16:35                     ` [Qemu-arm] " Daniel P. Berrangé
2019-03-04 16:35                       ` Daniel P. Berrangé
2019-03-06 19:03                       ` [Qemu-arm] " Igor Mammedov
2019-03-06 19:03                         ` Igor Mammedov
2019-03-07  9:59                         ` [Qemu-arm] " Daniel P. Berrangé
2019-03-07  9:59                           ` Daniel P. Berrangé
2019-03-10 10:16                           ` [Qemu-arm] " Markus Armbruster
2019-03-10 10:16                             ` Markus Armbruster
2019-03-14 14:52                             ` Igor Mammedov
2019-03-06 19:56                     ` [Qemu-arm] " Igor Mammedov
2019-03-06 19:56                       ` Igor Mammedov
2019-03-04 14:34                 ` Michal Privoznik
2019-03-04 14:34                   ` Michal Privoznik
2019-03-04  8:11         ` [Qemu-arm] [Qemu-ppc] " Thomas Huth
2019-03-04  8:11           ` [Qemu-devel] [Qemu-ppc] " Thomas Huth
2019-03-04 13:55           ` [Qemu-arm] [Qemu-ppc] [Qemu-devel] " Igor Mammedov
2019-03-04 13:55             ` [Qemu-devel] [Qemu-ppc] " Igor Mammedov
2019-03-04 13:59             ` [Qemu-arm] [Qemu-ppc] [Qemu-devel] " Daniel P. Berrangé
2019-03-04 13:59               ` [Qemu-devel] [Qemu-ppc] " Daniel P. Berrangé
2019-03-04 14:54               ` [Qemu-arm] [Qemu-ppc] [Qemu-devel] " Igor Mammedov
2019-03-04 14:54                 ` [Qemu-devel] [Qemu-ppc] " Igor Mammedov
2019-03-04 15:02                 ` [Qemu-arm] [Qemu-ppc] [Qemu-devel] " Daniel P. Berrangé
2019-03-04 15:02                   ` [Qemu-devel] [Qemu-ppc] " Daniel P. Berrangé
2019-03-04 16:45                   ` [Qemu-arm] [Qemu-ppc] [Qemu-devel] " Igor Mammedov
2019-03-04 16:45                     ` [Qemu-devel] [Qemu-ppc] " Igor Mammedov
2019-03-01 18:01       ` [Qemu-arm] [Qemu-devel] " Dr. David Alan Gilbert
2019-03-01 18:01         ` Dr. David Alan Gilbert
2019-03-04 13:52         ` [Qemu-arm] " Igor Mammedov
2019-03-04 13:52           ` Igor Mammedov
2019-03-18 16:44           ` [Qemu-arm] " Igor Mammedov
2019-03-01 15:42 ` [Qemu-arm] [PATCH 2/2] numa: deprecate implict memory distribution between nodes Igor Mammedov
2019-03-01 15:42   ` [Qemu-devel] " Igor Mammedov

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=20190304101911.GE4239@redhat.com \
    --to=berrange@redhat.com \
    --cc=armbru@redhat.com \
    --cc=david@gibson.dropbear.id.au \
    --cc=dgilbert@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=imammedo@redhat.com \
    --cc=libvir-list@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.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.