Since qemu has supported numa option -memdev config:
-object memory-backend-ram,size=1024M,policy=membind,host-nodes=0,id=ram-node0 \
-numa node,nodeid=0,cpus=0,memdev=ram-node0 \
for binding guest numa nodes to host numa nodes.
So we introduce this capability in libvirt by configuration
domain XML like:
...
<cpu>
<numa>
<cell cpus='0-1' memdev='ram0'/>
</numa>
</cpu>
...
<devices>
<memdev type='ram' merge='yes' dump='yes'
prealloc='yes'>
<name>ram0</name>
<capacity unit='MiB'>1000</capacity>
<source host-nodes='0-1' policy='bind' />
</memdev>
</devices>
Chen Fan (3):
numa: add '-numa memdev=' support
conf: add memdev device in <devices> XML
tests: add numa -memdev testing and docs support
docs/formatdomain.html.in | 71 ++++++-
docs/schemas/domaincommon.rng | 76 +++++++-
src/conf/cpu_conf.c | 73 ++++++--
src/conf/cpu_conf.h | 13 +-
src/conf/domain_conf.c | 203 ++++++++++++++++++++-
src/conf/domain_conf.h | 42 +++++
src/libvirt_private.syms | 4 +
src/qemu/qemu_capabilities.c | 4 +
src/qemu/qemu_capabilities.h | 2 +
src/qemu/qemu_command.c | 84 ++++++++-
src/qemu/qemu_command.h | 4 +
src/qemu/qemu_hotplug.c | 1 +
tests/qemuxml2argvdata/qemuxml2argv-cpu-numa3.args | 9 +
tests/qemuxml2argvdata/qemuxml2argv-cpu-numa3.xml | 35 ++++
tests/qemuxml2argvdata/qemuxml2argv-cpu-numa4.args | 10 +
tests/qemuxml2argvdata/qemuxml2argv-cpu-numa4.xml | 35 ++++
tests/qemuxml2argvtest.c | 2 +
17 files changed, 644 insertions(+), 24 deletions(-)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-cpu-numa3.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-cpu-numa3.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-cpu-numa4.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-cpu-numa4.xml
--
1.9.3