[libvirt] [PATCH 5/5] [RFC] qemu: pass numa node binding preferences to qemu

Daniel P. Berrange berrange at redhat.com
Wed May 28 12:23:20 UTC 2014


On Wed, May 28, 2014 at 01:44:49PM +0200, Martin Kletzander wrote:
> On Wed, May 28, 2014 at 11:29:40AM +0100, Daniel P. Berrange wrote:
> >On Wed, May 28, 2014 at 11:48:36AM +0200, Martin Kletzander wrote:
> >>diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> >>index 4818cfb..b77914e 100644
> >>--- a/src/conf/domain_conf.c
> >>+++ b/src/conf/domain_conf.c
> >>@@ -17524,7 +17524,7 @@ virDomainDefFormatInternal(virDomainDefPtr def,
> >>                 goto error;
> >>             }
> >>             virBufferAsprintf(buf,
> >>-                              "<memnode nodeid='%zu' mode='%s' nodeset='%s'/>\n",
> >>+                              "<memnode cellid='%zu' mode='%s' nodeset='%s'/>\n",
> >>                               i, mode, nodemask);
> >>             VIR_FREE(nodemask);
> >>         }
> >
> >Presumably this belongs in an earlier patch in the series.
> >
> 
> Oh, yes :) the fixup was on the wrong line in interactive rebase.
> 
> >>diff --git a/src/qemu/qemu_cgroup.c b/src/qemu/qemu_cgroup.c
> >>index b1bfb5a..ce03a4f 100644
> >>--- a/src/qemu/qemu_cgroup.c
> >>+++ b/src/qemu/qemu_cgroup.c
> >>@@ -588,6 +588,8 @@ qemuSetupCpusetCgroup(virDomainObjPtr vm,
> >>     if (!virCgroupHasController(priv->cgroup, VIR_CGROUP_CONTROLLER_CPUSET))
> >>         return 0;
> >>
> >>+    /* ASDF: per-node pinnings are not reflected here */
> >
> >Are you refering to per-node vCPU pinnings here ?
> >
> >We already have a per-vCPU pin capability in both the XML and the
> >cgroup setup code and the new <memnode> affinity mask you're adding
> >presumably only applies to memory, not vCPUs, otherwise we'd be
> >effectively having two places to set the same info.
> >
> 
> What we are doing now is that we take the nodeset from <memory>, put
> it into cpuset.mems and do virCgroupCpuSetInherit() for the underlying
> cgroups in the hierarchy.  What we should do is put the right nodeset
> in each (related memnode or global memory, depending on which ones
> were set), but *only* if there's mode='strict'.  However, I'm not sure
> how to properly handle both memory and memnode settings with different
> modes (strict, prefer, interleave).

Oh, so you're thinking that you want to set the memory allocation
policy for the vCPU threads to match the <memnode> that the vCPU
is associated with.

I'm not convinced that is a good idea actually. IMHO <memnode>
should only affect the placement of the guest RAM block. I'd
class memory allocations done by the vCPU threads as being
part of the QEMU global memory pool, so I think I'd expect
them to be using <memory> settings not <memnode>.

Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list