[PATCH v7 0/2] Dirty Ring support (Libvirt)
Hyman
huangy81 at chinatelecom.cn
Mon Nov 29 16:22:09 UTC 2021
Ping
Any corrections and suggetions are welcome.
Please review, thanks!
在 2021/11/23 22:36, huangy81 at chinatelecom.cn 写道:
> From: "Hyman Huang(黄勇)" <huangy81 at chinatelecom.cn>
>
> v7
> - rebase on master
> - modify the following points according to the advice given by Peter
> 1. skip the -accel switch and reuse the existing commit d20ebdda2
> 'qemu: Switch to -accel'
> 2. remove the post-parse function and do the parse work in
> virDomainFeaturesKVMDefParse once for all
> 3. throw an error if "size" not specified when kvm-dirty-ring
> feature enabled in xml
> 4. fix the memory leak when parsing xml
> 5. use macro VIR_ROUND_UP_POWER_OF_TWO to check power-of-two
> 6. put error messages in one line
> 7. squash the last 2 commit into 1
> 8. add test for kvm-dirty-ring feature
>
> Thanks for the careful reviews made by Peter.
>
> Please review, Thanks!
>
> Hyman
>
> Ping for this series.
>
> I still keep thinking the dirty ring feature is something good to
> have for libvirt.
>
> qemu-6.1 has supported dirty ring feature and followed up with the
> commit 0e21bf24 "support dirtyrate at the granualrity of vcpu",
> which is a typical usage scenario of dirty ring. another usage
> scenario may be the implementation of per-vcpu auto-converge during
> live migration which is already being reviewed. so we can make full
> use of dirty ring feature if libvirt supports. and any corrections
> and comments about this series would be very appreciated.
>
> Please review, Thanks!
>
> Hyman
>
> v6
> - rebase on master
>
> v5,v4: blank, just make v6 be the the latest version.
>
> v3
> - rebase master and fix the confilict when apply
> "conf: introduce dirty_ring_size in struct "_virDomainDef" to current
> master.
>
> v2
> - split patchset into 4 patches
>
> - leave out the tcg case when building commandline.
>
> - handle the VIR_DOMAIN_KVM_DIRTY_RING case independently in ,
> virDomainFeatureDefParse and virDomainDefFeaturesCheckABIStability,
> do not integrate it with other cases...
>
> - add dirty ring size check in virDomainDefFeaturesCheckABIStability
>
> - modify zero checks on integers of dirty ring size in a explicit way.
>
> - set the default value of dirty ring size in a post-parser callback.
>
> - check the absence of kvm_feature in a explicit way.
>
> - code clean of virTristateSwitchTypeToString function.
>
> this version's modification base on Peter's advices mostly, thanks
> a lot, please review !
>
> v1
> since qemu has introduced a dirty ring feature in 6.1.0, may be it's
> the right time to introduce dirty ring in libvirt meanwhile.
>
> this patch add feature named 'dirty-ring', which enable dirty ring
> feature when starting vm. to try this out, three things has done
> in this patchset:
>
> - introduce QEMU_CAPS_ACCEL so the the libvirt can use it to select
> the right option when specifying the accelerator type.
>
> - switch the option "-machine accel=xxx" to "-accel xxx" when specifying
> accelerator type once libvirt build QEMU command line, so that
> dirty-ring-size property can be passed to qemu when start vm.
>
> - introduce dirty_ring_size to hold the ring size configured by user
> and pass dirty_ring_size when building qemu commandline if dirty
> ring feature enabled.
>
> though dirty ring is per-cpu logically, the size of dirty ring is
> registered by 'struct kvm' in QEMU. so we would like to place the
> dirty_ring_size as a property of vm in Libvirt as the QEMU do.
>
> the dirty ring feature is disabled by default, and if enabled, the
> default value of ring size if 4096 if size not configured.
>
> for more details about dirty ring and "-accel" option, please refer to:
> https://lore.kernel.org/qemu-devel/20210108165050.406906-10-peterx@redhat.com/
> https://lore.kernel.org/qemu-devel/3aa73987-40e8-3619-0723-9f17f73850bd@redhat.com/
>
> please review, Thanks!
>
> Best Regards !
>
> Hyman Huang(黄勇) (2):
> qemu: support dirty ring feature
> tests: add test for kvm-dirty-ring feature
>
> docs/formatdomain.rst | 18 ++++---
> docs/schemas/domaincommon.rng | 10 ++++
> src/conf/domain_conf.c | 54 +++++++++++++++++++
> src/conf/domain_conf.h | 4 ++
> src/qemu/qemu_command.c | 12 +++++
> tests/qemuxml2argvdata/kvm-features-off.xml | 1 +
> tests/qemuxml2argvdata/kvm-features.args | 2 +-
> tests/qemuxml2argvdata/kvm-features.xml | 1 +
> tests/qemuxml2xmloutdata/kvm-features-off.xml | 1 +
> tests/qemuxml2xmloutdata/kvm-features.xml | 1 +
> 10 files changed, 95 insertions(+), 9 deletions(-)
>
More information about the libvir-list
mailing list