The goal of this series is to use cpuset to manage numa. Currently numa tuning
is achieved by libnuma, the disadvantage is numa parameters can not be modified
when the domain is running. By using cpuset, we can do this and more:
- a new command, numatune, to get/set numa parameters
- cpuset can migrate pages to new nodes if a domain's numa nodes is changed
when running
This is a draft for early reviews. Comments are welcome.
TODO:
- add --migrate option to numatune
- docs for numatune
Hu Tao (10):
enable cgroup cpuset by default
Add functions to set/get cpuset parameters
use cpuset to manage numa
remove dependence on libnuma
new numa parameters
add new API virDomain{G,S}etNumaParameters
Implement main entries of virDomain{G,S}etNumaParameters
Add virDomain{G,S}etNumaParameters support to the remote driver
Implement virDomain{G,S}etNumaParameters for the qemu driver
add new command numatune to virsh
daemon/remote.c | 63 +++++++++
include/libvirt/libvirt.h.in | 23 +++
python/generator.py | 2 +
src/conf/domain_conf.c | 35 ++---
src/conf/domain_conf.h | 3 +-
src/driver.h | 15 ++
src/libvirt.c | 106 +++++++++++++++
src/libvirt_private.syms | 6 +
src/libvirt_public.syms | 6 +
src/qemu/qemu.conf | 5 +-
src/qemu/qemu_cgroup.c | 37 +++++
src/qemu/qemu_conf.c | 3 +-
src/qemu/qemu_driver.c | 307 ++++++++++++++++++++++++++++++++++++++++++
src/qemu/qemu_process.c | 111 ---------------
src/remote/remote_driver.c | 50 +++++++
src/remote/remote_protocol.x | 25 ++++-
src/remote_protocol-structs | 16 +++
src/util/cgroup.c | 80 +++++++++++
src/util/cgroup.h | 7 +
tools/virsh.c | 187 +++++++++++++++++++++++++
20 files changed, 950 insertions(+), 137 deletions(-)
--
1.7.3.1