Skip to content

libvirt_vcpu_plug_unplug: add multi-NUMA hotplug/unplug test variants - #32

Open
Anushree-Mathur wants to merge 1 commit into
lop-devops:KVMCIfrom
Anushree-Mathur:multi_numa
Open

libvirt_vcpu_plug_unplug: add multi-NUMA hotplug/unplug test variants#32
Anushree-Mathur wants to merge 1 commit into
lop-devops:KVMCIfrom
Anushree-Mathur:multi_numa

Conversation

@Anushree-Mathur

Copy link
Copy Markdown

Add support for testing CPU hotplug/unplug on VMs configured with multiple NUMA nodes. The test builds N equal NUMA cells, distributing vCPUs and memory evenly across them, then runs continuous plug/unplug cycles to verify stability.

Changes:

libvirt/tests/cfg/libvirt_vcpu_plug_unplug.cfg:
Add multi_numa_hotplug variant with three sub-variants:

  • numa_2_cells: 2 NUMA nodes, vcpu_max=8, start=2, plug=6, unplug=2
  • numa_4_cells: 4 NUMA nodes, vcpu_max=16, start=4, plug=12, unplug=4
  • numa_8_cells: 8 NUMA nodes, vcpu_max=32, start=8, plug=24, unplug=8 All variants run --live with test_itr=3 (3 continuous plug/unplug cycles).

libvirt/tests/src/libvirt_vcpu_plug_unplug.py:
When numa_cells param is set, replace the standard set_vm_vcpus() call
with explicit multi-NUMA XML setup:

  • Set vcpu max and current counts directly on vmxml
  • Align CPU topology to sockets=1, cores=vcpu_max, threads=1
  • Build N NUMA cells with evenly split CPU ranges and memory (MiB->KiB)
  • Apply via cpu_xml.dicts_to_cells() and vmxml.sync() All existing variants continue through the original set_vm_vcpus() else-branch unchanged.

Signed-off-by: Anushree-Mathur <anushree.mathur@linux.ibm.com>

Add support for testing CPU hotplug/unplug on VMs configured with
multiple NUMA nodes. The test builds N equal NUMA cells, distributing
vCPUs and memory evenly across them, then runs continuous plug/unplug
cycles to verify stability.

Changes:

libvirt/tests/cfg/libvirt_vcpu_plug_unplug.cfg:
  Add multi_numa_hotplug variant with three sub-variants:
  - numa_2_cells:  2 NUMA nodes, vcpu_max=8,  start=2, plug=6,  unplug=2
  - numa_4_cells:  4 NUMA nodes, vcpu_max=16, start=4, plug=12, unplug=4
  - numa_8_cells:  8 NUMA nodes, vcpu_max=32, start=8, plug=24, unplug=8
  All variants run --live with test_itr=3 (3 continuous plug/unplug cycles).

libvirt/tests/src/libvirt_vcpu_plug_unplug.py:
  When numa_cells param is set, replace the standard set_vm_vcpus() call
  with explicit multi-NUMA XML setup:
  - Set vcpu max and current counts directly on vmxml
  - Align CPU topology to sockets=1, cores=vcpu_max, threads=1
  - Build N NUMA cells with evenly split CPU ranges and memory (MiB->KiB)
  - Apply via cpu_xml.dicts_to_cells() and vmxml.sync()
  All existing variants continue through the original set_vm_vcpus()
  else-branch unchanged.

Signed-off-by: Anushree-Mathur <anushree.mathur@linux.ibm.com>
Signed-off-by: Anushree-Mathur <anushree.mathur@linux.ibm.com>
@Anushree-Mathur

Copy link
Copy Markdown
Author
 python3 avocado-setup.py --run-suite guest_cpu_test --guest-os SLES.16.1.ppc64le --only-filter 'virtio_scsi virtio_net qcow2' --no-download
15:24:42 INFO    : Env Config: /home/Anu/tests/config/wrapper/env.conf
15:24:42 INFO    : No Run Config: /home/Anu/tests/config/wrapper/no_run_tests.conf
15:24:42 WARNING : Overriding user setting and enabling kvm bootstrap as guest tests are requested
15:24:43 INFO    : Check for environment
15:24:45 INFO    : Creating temporary mux dir
15:24:45 INFO    :
15:24:45 INFO    : Running Guest Tests Suite cpu_test
15:24:45 INFO    : Running: /usr/local/bin/avocado run --vt-type libvirt --vt-config /home/Anu/tests/data/avocado-vt/backends/libvirt/cfg/cpu_test.cfg                 --force-job-id 53f3d5ff30a42ee0ea29f34f52648d249b5f833d                 --job-results-dir /home/Anu/tests/results  --vt-only-filter                                             "virtio_scsi virtio_net qcow2 SLES.16.1.ppc64le"
/usr/local/lib/python3.13/site-packages/avocado/core/__init__.py:18: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.
  import pkg_resources
No python imaging library installed. Screendump and Windows guest BSOD detection are disabled. In order to enable it, please install python-imaging or the equivalent for your distro.
No python imaging library installed. PPM image conversion to JPEG disabled. In order to enable it, please install python-imaging or the equivalent for your distro.
No python imaging library installed. Screendump and Windows guest BSOD detection are disabled. In order to enable it, please install python-imaging or the equivalent for your distro.
No python imaging library installed. PPM image conversion to JPEG disabled. In order to enable it, please install python-imaging or the equivalent for your distro.
JOB ID     : 53f3d5ff30a42ee0ea29f34f52648d249b5f833d
JOB LOG    : /home/Anu/tests/results/job-2026-08-11T15.24-53f3d5f/job.log
 (01/35) io-github-autotest-qemu.unattended_install.import.import.default_install.aio_native: STARTED
 (01/35) io-github-autotest-qemu.unattended_install.import.import.default_install.aio_native: PASS (74.32 s)
 (02/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_2_cells: STARTED
 (02/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_2_cells: PASS (210.80 s)
 (03/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_4_cells: STARTED
 (03/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_4_cells: PASS (253.49 s)
 (04/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_8_cells: STARTED
 (04/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_8_cells: PASS (344.71 s)
 (05/35) io-github-autotest-libvirt.remove_guest.without_disk: STARTED
 (05/35) io-github-autotest-libvirt.remove_guest.without_disk: PASS (8.90 s)
 (06/35) io-github-autotest-qemu.unattended_install.import.import.default_install.aio_native: STARTED
 (06/35) io-github-autotest-qemu.unattended_install.import.import.default_install.aio_native: PASS (114.02 s)
 (07/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_2_cells: STARTED
 (07/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_2_cells: PASS (212.48 s)
 (08/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_4_cells: STARTED
 (08/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_4_cells: PASS (253.23 s)
 (09/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_8_cells: STARTED
 (09/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_8_cells: PASS (344.05 s)
 (10/35) io-github-autotest-libvirt.remove_guest.without_disk: STARTED
 (10/35) io-github-autotest-libvirt.remove_guest.without_disk: PASS (9.00 s)
 (11/35) io-github-autotest-qemu.unattended_install.import.import.default_install.aio_native: STARTED
 (11/35) io-github-autotest-qemu.unattended_install.import.import.default_install.aio_native: PASS (76.30 s)
 (12/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_2_cells: STARTED
 (12/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_2_cells: PASS (210.23 s)
 (13/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_4_cells: STARTED
 (13/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_4_cells: PASS (274.25 s)
 (14/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_8_cells: STARTED
 (14/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_8_cells: PASS (344.89 s)
 (15/35) io-github-autotest-libvirt.remove_guest.without_disk: STARTED
 (15/35) io-github-autotest-libvirt.remove_guest.without_disk: PASS (8.84 s)
 (16/35) io-github-autotest-qemu.unattended_install.import.import.default_install.aio_native: STARTED
 (16/35) io-github-autotest-qemu.unattended_install.import.import.default_install.aio_native: PASS (77.70 s)
 (17/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_2_cells: STARTED
 (17/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_2_cells: PASS (209.64 s)
 (18/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_4_cells: STARTED
 (18/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_4_cells: PASS (264.84 s)
 (19/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_8_cells: STARTED
 (19/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_8_cells: PASS (344.54 s)
 (20/35) io-github-autotest-libvirt.remove_guest.without_disk: STARTED
 (20/35) io-github-autotest-libvirt.remove_guest.without_disk: PASS (8.79 s)
 (21/35) io-github-autotest-qemu.unattended_install.import.import.default_install.aio_native: STARTED
 (21/35) io-github-autotest-qemu.unattended_install.import.import.default_install.aio_native: PASS (72.81 s)
 (22/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_2_cells: STARTED



 (22/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_2_cells: PASS (206.59 s)
 (23/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_4_cells: STARTED
 (23/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_4_cells: PASS (270.24 s)
 (24/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_8_cells: STARTED
 (24/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_8_cells: PASS (341.86 s)
 (25/35) io-github-autotest-libvirt.remove_guest.without_disk: STARTED
 (25/35) io-github-autotest-libvirt.remove_guest.without_disk: PASS (7.17 s)
 (26/35) io-github-autotest-qemu.unattended_install.import.import.default_install.aio_native: STARTED
 (26/35) io-github-autotest-qemu.unattended_install.import.import.default_install.aio_native: PASS (69.91 s)
 (27/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_2_cells: STARTED
 (27/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_2_cells: PASS (210.05 s)
 (28/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_4_cells: STARTED
 (28/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_4_cells: PASS (260.86 s)
 (29/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_8_cells: STARTED
 (29/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_8_cells: PASS (340.81 s)
 (30/35) io-github-autotest-libvirt.remove_guest.without_disk: STARTED
 (30/35) io-github-autotest-libvirt.remove_guest.without_disk: PASS (7.09 s)
 (31/35) io-github-autotest-qemu.unattended_install.import.import.default_install.aio_native: STARTED
 (31/35) io-github-autotest-qemu.unattended_install.import.import.default_install.aio_native: PASS (76.69 s)
 (32/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_2_cells: STARTED
 (32/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_2_cells: PASS (210.52 s)
 (33/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_4_cells: STARTED
 (33/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_4_cells: PASS (274.03 s)
 (34/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_8_cells: STARTED

 (34/35) type_specific.io-github-autotest-libvirt.libvirt_vcpu_plug_unplug.positive_test.vcpu_set.live.multi_numa_hotplug.numa_8_cells: PASS (344.15 s)
 (35/35) io-github-autotest-libvirt.remove_guest.without_disk: STARTED
 (35/35) io-github-autotest-libvirt.remove_guest.without_disk: PASS (8.82 s)
RESULTS    : PASS 35 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 0
JOB HTML   : /home/Anu/tests/results/job-2026-08-11T15.24-53f3d5f/results.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant