From: Hyman Huang(黄勇) <huangy81(a)chinatelecom.cn>
Ping
How about this series? hoping to get comments if anyone has played
with it.
Thanks very much sincerely.
Yong
v1:
- rebase on master and fix conflicts
- filter out dirty page limit info for hotpluggable vcpu but not active
- drop the documents patch, which can be post later after main series
being reviewed.
- code clean
Abstract
========
Qemu introduced dirty page rate limit feature in 7.1.0, see the details in
the following link:
https://lore.kernel.org/qemu-devel/cover.1656177590.git.huangy81@chinatel...
So may be it's the right time to enabling this feature in libvirt meanwhile
so that upper user can play with it.
Expecting the upper app can use this feature to do a vcpu Qos or whatever else.
This patch add 2 new apis to implement dirty page rate limit:
1. virDomainSetVcpuDirtyLimit, which set vcpu dirty page rate
limit. virsh command 'vcpudirtylimit' also implemented correspondingly.
2. virDomainCancelVcpuDirtyLimit, which cancel vcpu dirty page rate
limit. 'cancel' option was introduced to 'vcpudirtylimit' to cancel
the limit correspondingly.
In addition, function 'qemuMonitorQueryVcpuDirtyLimit' was implemented
to query dirty page rate limit, virsh command 'vcpuinfo' was extended
so that user can query dirty page rate limit info via 'vcpuinfo'.
This series make main modifications as the following:
- introduce QEMU_CAPS_VCPU_DIRTY_LIMIT capability so that libvirt can probe
before using dirty page rate limit feature.
- implement virsh command 'vcpudirtylimit' to set/cancel dirty page rate
limit.
- extend vcpuinfo api so that it can display dirtylimit info.
Please review, thanks!
Best regards!
Hyman Huang(黄勇) (10):
qemu_capabilities: Introduce QEMU_CAPS_VCPU_DIRTY_LIMIT capability
libvirt: Add virDomainSetVcpuDirtyLimit API
qemu_driver: Implement qemuDomainSetVcpuDirtyLimit
virsh: Introduce vcpudirtylimit api
qemu_monitor: Implement qemuMonitorQueryVcpuDirtyLimit
qemu_driver: Extend qemuDomainGetVcpus for dirtylimit
virsh: Extend vcpuinfo api to display dirtylimit info
libvirt: Add virDomainCancelVcpuDirtyLimit API
qemu_driver: Implement qemuDomainCancelVcpuDirtyLimit
virsh: Add cancel option to vcpudirtylimit api
include/libvirt/libvirt-domain.h | 22 ++++
src/driver-hypervisor.h | 13 ++
src/libvirt-domain.c | 94 ++++++++++++++
src/libvirt_public.syms | 6 +
src/qemu/qemu_capabilities.c | 2 +
src/qemu/qemu_capabilities.h | 1 +
src/qemu/qemu_driver.c | 156 +++++++++++++++++++++++
src/qemu/qemu_monitor.c | 36 ++++++
src/qemu/qemu_monitor.h | 26 ++++
src/qemu/qemu_monitor_json.c | 138 ++++++++++++++++++++
src/qemu/qemu_monitor_json.h | 13 ++
src/remote/remote_daemon_dispatch.c | 2 +
src/remote/remote_driver.c | 4 +
src/remote/remote_protocol.x | 30 ++++-
src/remote_protocol-structs | 13 ++
tests/qemucapabilitiesdata/caps_7.1.0.x86_64.xml | 1 +
tools/virsh-domain.c | 112 ++++++++++++++++
17 files changed, 667 insertions(+), 2 deletions(-)
--
1.8.3.1