summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOsier Yang <jyang@redhat.com>2012-05-09 00:04:34 +0800
committerEric Blake <eblake@redhat.com>2012-05-08 16:57:32 -0600
commit97010eb1f14dfe705d58bf94ad4eec2cb293f560 (patch)
treed1cbed5ed0743575a8e3f50b49532fdf0ee04f23 /tests/qemuxml2argvtest.c
parentsnapshot: allow block devices past cgroup (diff)
downloadlibvirt-97010eb1f14dfe705d58bf94ad4eec2cb293f560.tar.gz
libvirt-97010eb1f14dfe705d58bf94ad4eec2cb293f560.tar.bz2
libvirt-97010eb1f14dfe705d58bf94ad4eec2cb293f560.zip
numad: Set memory policy from numad advisory nodeset
Though numad will manage the memory allocation of task dynamically, it wants management application (libvirt) to pre-set the memory policy according to the advisory nodeset returned from querying numad, (just like pre-bind CPU nodeset for domain process), and thus the performance could benefit much more from it. This patch introduces new XML tag 'placement', value 'auto' indicates whether to set the memory policy with the advisory nodeset from numad, and its value defaults to the value of <vcpu> placement, or 'static' if 'nodeset' is specified. Example of the new XML tag's usage: <numatune> <memory placement='auto' mode='interleave'/> </numatune> Just like what current "numatune" does, the 'auto' numa memory policy setting uses libnuma's API too. If <vcpu> "placement" is "auto", and <numatune> is not specified explicitly, a default <numatume> will be added with "placement" set as "auto", and "mode" set as "strict". The following XML can now fully drive numad: 1) <vcpu> placement is 'auto', no <numatune> is specified. <vcpu placement='auto'>10</vcpu> 2) <vcpu> placement is 'auto', no 'placement' is specified for <numatune>. <vcpu placement='auto'>10</vcpu> <numatune> <memory mode='interleave'/> </numatune> And it's also able to control the CPU placement and memory policy independently. e.g. 1) <vcpu> placement is 'auto', and <numatune> placement is 'static' <vcpu placement='auto'>10</vcpu> <numatune> <memory mode='strict' nodeset='0-10,^7'/> </numatune> 2) <vcpu> placement is 'static', and <numatune> placement is 'auto' <vcpu placement='static' cpuset='0-24,^12'>10</vcpu> <numatune> <memory mode='interleave' placement='auto'/> </numatume> A follow up patch will change the XML formatting codes to always output 'placement' for <vcpu>, even it's 'static'.
Diffstat (limited to 'tests/qemuxml2argvtest.c')
-rw-r--r--tests/qemuxml2argvtest.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
index 4d7cf6972..40471d480 100644
--- a/tests/qemuxml2argvtest.c
+++ b/tests/qemuxml2argvtest.c
@@ -738,6 +738,8 @@ mymain(void)
DO_TEST("blkiotune-device", false, QEMU_CAPS_NAME);
DO_TEST("cputune", false, QEMU_CAPS_NAME);
DO_TEST("numatune-memory", false, NONE);
+ DO_TEST("numad", false, NONE);
+ DO_TEST("numad-auto-vcpu-static-numatune", false, NONE);
DO_TEST("blkdeviotune", false, QEMU_CAPS_NAME, QEMU_CAPS_DEVICE,
QEMU_CAPS_DRIVE, QEMU_CAPS_DRIVE_IOTUNE);