All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Igor Mammedov <imammedo@redhat.com>
Cc: peter.maydell@linaro.org, ehabkost@redhat.com,
	libvir-list@redhat.com, qemu-devel@nongnu.org,
	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: Fri, 1 Mar 2019 15:49:47 +0000	[thread overview]
Message-ID: <20190301154947.GJ21251@redhat.com> (raw)
In-Reply-To: <1551454936-205218-2-git-send-email-imammedo@redhat.com>

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.

> 
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> ---
>  numa.c               |  2 ++
>  qemu-deprecated.texi | 14 ++++++++++++++
>  2 files changed, 16 insertions(+)
> 
> diff --git a/numa.c b/numa.c
> index 3875e1e..2205773 100644
> --- a/numa.c
> +++ b/numa.c
> @@ -121,6 +121,8 @@ static void parse_numa_node(MachineState *ms, NumaNodeOptions *node,
>  
>      if (node->has_mem) {
>          numa_info[nodenr].node_mem = node->mem;
> +        warn_report("Parameter -numa node,mem is deprecated,"
> +                    " use -numa node,memdev instead");
>      }
>      if (node->has_memdev) {
>          Object *o;
> diff --git a/qemu-deprecated.texi b/qemu-deprecated.texi
> index 45c5795..73f99d4 100644
> --- a/qemu-deprecated.texi
> +++ b/qemu-deprecated.texi
> @@ -60,6 +60,20 @@ Support for invalid topologies will be removed, the user must ensure
>  topologies described with -smp include all possible cpus, i.e.
>    @math{@var{sockets} * @var{cores} * @var{threads} = @var{maxcpus}}.
>  
> +@subsection -numa node,mem=@var{size} (since 4.0)
> +
> +The parameter @option{mem} of @option{-numa node} is used to assign a part of
> +guest RAM to a NUMA node. But when using it, it's impossible to manage specified
> +size on the host side (like bind it to a host node, setting bind policy, ...),
> +so guest end-ups with the fake NUMA configuration with suboptiomal performance.
> +However since 2014 there is an alternative way to assign RAM to a NUMA node
> +using parameter @option{memdev}, which does the same as @option{mem} and has
> +an ability to actualy manage node RAM on the host side. Use parameter
> +@option{memdev} with @var{memory-backend-ram} backend as an replacement for
> +parameter @option{mem} to achieve the same fake NUMA effect or a properly
> +configured @var{memory-backend-file} backend to actually benefit from NUMA
> +configuration.
> +
>  @section QEMU Machine Protocol (QMP) commands
>  
>  @subsection block-dirty-bitmap-add "autoload" parameter (since 2.12.0)
> -- 
> 2.7.4
> 
> --
> libvir-list mailing list
> libvir-list@redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list

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: Igor Mammedov <imammedo@redhat.com>
Cc: qemu-devel@nongnu.org, peter.maydell@linaro.org,
	ehabkost@redhat.com, libvir-list@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: Fri, 1 Mar 2019 15:49:47 +0000	[thread overview]
Message-ID: <20190301154947.GJ21251@redhat.com> (raw)
In-Reply-To: <1551454936-205218-2-git-send-email-imammedo@redhat.com>

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.

> 
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> ---
>  numa.c               |  2 ++
>  qemu-deprecated.texi | 14 ++++++++++++++
>  2 files changed, 16 insertions(+)
> 
> diff --git a/numa.c b/numa.c
> index 3875e1e..2205773 100644
> --- a/numa.c
> +++ b/numa.c
> @@ -121,6 +121,8 @@ static void parse_numa_node(MachineState *ms, NumaNodeOptions *node,
>  
>      if (node->has_mem) {
>          numa_info[nodenr].node_mem = node->mem;
> +        warn_report("Parameter -numa node,mem is deprecated,"
> +                    " use -numa node,memdev instead");
>      }
>      if (node->has_memdev) {
>          Object *o;
> diff --git a/qemu-deprecated.texi b/qemu-deprecated.texi
> index 45c5795..73f99d4 100644
> --- a/qemu-deprecated.texi
> +++ b/qemu-deprecated.texi
> @@ -60,6 +60,20 @@ Support for invalid topologies will be removed, the user must ensure
>  topologies described with -smp include all possible cpus, i.e.
>    @math{@var{sockets} * @var{cores} * @var{threads} = @var{maxcpus}}.
>  
> +@subsection -numa node,mem=@var{size} (since 4.0)
> +
> +The parameter @option{mem} of @option{-numa node} is used to assign a part of
> +guest RAM to a NUMA node. But when using it, it's impossible to manage specified
> +size on the host side (like bind it to a host node, setting bind policy, ...),
> +so guest end-ups with the fake NUMA configuration with suboptiomal performance.
> +However since 2014 there is an alternative way to assign RAM to a NUMA node
> +using parameter @option{memdev}, which does the same as @option{mem} and has
> +an ability to actualy manage node RAM on the host side. Use parameter
> +@option{memdev} with @var{memory-backend-ram} backend as an replacement for
> +parameter @option{mem} to achieve the same fake NUMA effect or a properly
> +configured @var{memory-backend-file} backend to actually benefit from NUMA
> +configuration.
> +
>  @section QEMU Machine Protocol (QMP) commands
>  
>  @subsection block-dirty-bitmap-add "autoload" parameter (since 2.12.0)
> -- 
> 2.7.4
> 
> --
> libvir-list mailing list
> libvir-list@redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list

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-01 16:00 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   ` Daniel P. Berrangé [this message]
2019-03-01 15:49     ` [Qemu-devel] [libvirt] " 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           ` [Qemu-arm] " Daniel P. Berrangé
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=20190301154947.GJ21251@redhat.com \
    --to=berrange@redhat.com \
    --cc=david@gibson.dropbear.id.au \
    --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.