On Thu, Jun 06, 2024 at 07:58:04 -0000, Chun Feng Wu wrote:
> Thanks Peter for above comments! 
> 
> My original design goal is exact the same as what QEMU doc says at 
> https://github.com/qemu/qemu/blob/master/docs/throttle.txt:
> "In this example the individual drives have IOPS limits of 2000, 2500
> and 3000 respectively but the total combined I/O can never exceed 4000
> IOPS."
> 
> I haven't thought about such case: "somebody would want to apply different 
> throttling on a backing image", do we have such case design for other feature?

Currently, we support configuring some specifics such as the qcow2
metadata cache, which can be configured per-image and not just per disk:

https://www.libvirt.org/formatdomain.html#hard-drives-floppy-disks-cdroms

look for 'metadata_cache'. While the patchet doesn't necessarily need to
implement it for backing images at this point you need to do it so that
future change will be available.

> About configuring old throttling via the 'throttle' blockdev layer, it seems 
> possible, however, this new design and implementation has dependency on 
> QEMU6,  the reason about this is that starting from QEMU6, "-object"(case to 
> launching vm along with throttlegroup) supports json format value: e.g. 
> -object 
> '{"qom-type":"throttle-group","id":"limits0","limits":{"iops-total":200}}'), 
> while for qemu4.2, non-stable API works: e.g. -object 
> throttle-group,id=limits0,x-iops-total=200, current implementation follows 
> json way:  it calls "qemuBuildObjectCommandlineFromJSON" to create 
> throttle-group object, within "qemuBuildObjectCommandlineFromJSON", I see 
> check about QEMU_CAPS_OBJECT_JSON: virQEMUCapsGet(qemuCaps, 
> QEMU_CAPS_OBJECT_JSON)

Okay, but I don't see any code in this series which would limit it to
the appropriate qemu versions. In cases when this is not supported by
all qemu releases libvirt supports (currently qemu-4.2 and later) you'll
have to add a capability and interlock the new feature based on it.

> 
> in addition, for "object-add"(case to hot attach disk with throttles), it 
> seems QMP json format is different between QEMU 6 and QEMU 4.2 ("props" 
> required)
> 

Okay another case when you must stay compatible and/or reject new
configs with old qemu.

Note that adding support for experimental features (x-NAME) is not
acceptable.

Reply via email to