Re: [PATCH 0/5] NUMA CPUs 'auto-fill' for incomplete topologies

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Ping

On 6/1/20 2:50 PM, Daniel Henrique Barboza wrote:
Hi,

This series implements a convenience feature for the case where
the user defines an incomplete NUMA topology in the domain,
when the sum of all cpus in each NUMA cell is less than the
maximum vcpus count of the domain.

This is an implementation based on Peter Krempa's suggestion in [1].
The documentation patch (04), aside from documentating this new
behavior, while also letting the user know that using incomplete
NUMA topologies are not advised.

This feature does not break migration ABI. I tested it in a migration
using an incomplete NUMA topology domain to migrate to another host
with a patched Libvirt. A guest with this NUMA topology, declaring
9 vcpus and short of 7 vcpus to complete the total of 16:

   <vcpu placement='auto'>16</vcpu>
[...]
   <cpu mode='custom' match='exact' check='none'>
     <model fallback='forbid'>POWER9</model>
     <numa>
       <cell id='0' cpus='0-1,6' memory='3906250' unit='KiB'/>
       <cell id='1' cpus='2-4' memory='3906250' unit='KiB'/>
       <cell id='2' cpus='10,12' memory='3906250' unit='KiB'/>
       <cell id='3' cpus='14' memory='3906250' unit='KiB'/>
     </numa>
   </cpu>

Successfully migrates to a patched Libvirt, ending up with
this topology where the missing VCPUs were added to node 0:

   <vcpu placement='auto'>16</vcpu>
[...]
   <cpu mode='custom' match='exact' check='none'>
     <model fallback='forbid'>POWER9</model>
     <numa>
       <cell id='0' cpus='0-1,5-9,11,13,15' memory='3932160' unit='KiB'/>
       <cell id='1' cpus='2-4' memory='3932160' unit='KiB'/>
       <cell id='2' cpus='10,12' memory='3932160' unit='KiB'/>
       <cell id='3' cpus='14' memory='3932160' unit='KiB'/>
     </numa>
   </cpu>


[1] https://www.redhat.com/archives/libvir-list/2019-June/msg00263.html

Daniel Henrique Barboza (5):
   numa_conf.c: add helper functions for cpumap operations
   qemu_domain.c: NUMA CPUs auto-fill for incomplete topologies
   qemuxml2xmltest.c: add NUMA vcpus auto fill tests
   formatdomain.html.in: document the NUMA cpus auto fill feature
   qemu_validate.c: revert NUMA CPU range user warning

  docs/formatdomain.html.in                     | 11 ++++-
  src/conf/numa_conf.c                          | 46 ++++++++++++++++++
  src/conf/numa_conf.h                          |  3 ++
  src/libvirt_private.syms                      |  1 +
  src/qemu/qemu_domain.c                        | 47 +++++++++++++++++++
  src/qemu/qemu_domain.h                        |  4 ++
  src/qemu/qemu_driver.c                        |  9 ++++
  src/qemu/qemu_validate.c                      | 19 ++------
  .../numavcpus-topology-mismatch.xml           | 37 +++++++++++++++
  ...avcpus-topology-mismatch.x86_64-latest.xml | 38 +++++++++++++++
  tests/qemuxml2xmltest.c                       |  1 +
  11 files changed, 201 insertions(+), 15 deletions(-)
  create mode 100644 tests/qemuxml2argvdata/numavcpus-topology-mismatch.xml
  create mode 100644 tests/qemuxml2xmloutdata/numavcpus-topology-mismatch.x86_64-latest.xml





[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux