TODO:
1. We create sub directory for each vcpu in cpu subsystem. So
we should recalculate cpu.shares for each vcpu.
Changelog:
v2: almost rewrite the patchset to support to control each vcpu's
bandwidth.
Limit quota to [-1, 2^64/1000] at the schemas level. We will
check it at cgroup level.
Wen Congyang (10):
Introduce the function virCgroupForVcpu
cgroup: Implement cpu.cfs_period_us and cpu.cfs_quota_us tuning API
Update XML Schema for new entries
qemu: Implement period and quota tunable XML configuration and
parsing.
support to pass VIR_DOMAIN_AFFECT_CURRENT to virDomainGetVcpusFlags()
vcpubandwidth: introduce two new libvirt APIs
vcpubandwidth: implement the code to support new API for the qemu
driver
vcpubandwidth: implement the remote protocol to address the new API
vcpubandwidth: Implement virsh support
doc: Add documentation for new cputune elements period and quota
daemon/remote.c | 132 +++++++
docs/formatdomain.html.in | 19 +
docs/schemas/domain.rng | 29 ++-
include/libvirt/libvirt.h.in | 41 +++-
python/generator.py | 2 +
src/conf/domain_conf.c | 272 ++++++++++++++-
src/conf/domain_conf.h | 17 +
src/driver.h | 14 +
src/libvirt.c | 129 +++++++-
src/libvirt_private.syms | 9 +
src/libvirt_public.syms | 6 +
src/qemu/qemu_cgroup.c | 131 +++++++
src/qemu/qemu_cgroup.h | 2 +
src/qemu/qemu_driver.c | 429 ++++++++++++++++++++++-
src/qemu/qemu_process.c | 4 +
src/remote/remote_driver.c | 64 ++++
src/remote/remote_protocol.x | 32 ++-
src/rpc/gendispatch.pl | 30 ++
src/util/cgroup.c | 153 ++++++++-
src/util/cgroup.h | 11 +
tests/qemuxml2argvdata/qemuxml2argv-cputune.xml | 2 +
tools/virsh.c | 142 ++++++++-
tools/virsh.pod | 16 +
23 files changed, 1658 insertions(+), 28 deletions(-)