[PATCH v2 11/15] qemu: Wire up new virDomainSetIOThreadParams parameters

Peter Krempa pkrempa at redhat.com
Tue Jun 7 15:17:19 UTC 2022


On Tue, Jun 07, 2022 at 17:06:50 +0200, Peter Krempa wrote:
> On Tue, Jun 07, 2022 at 14:52:55 +0200, Michal Privoznik wrote:
> > Introduced in previous commit, QEMU driver needs to be taught how
> > to set VIR_DOMAIN_IOTHREAD_THREAD_POOL_MIN and
> > VIR_DOMAIN_IOTHREAD_THREAD_POOL_MAX parameters on given IOThread.
> > Fortunately, this is fairly trivial to do and since these two
> > parameters are exposed in domain XML too the update of inactive
> > XML can be wired up too.
> > 
> > Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> > ---
> >  src/qemu/qemu_driver.c       | 62 +++++++++++++++++++++++++++++++++---
> >  src/qemu/qemu_monitor.h      |  4 +++
> >  src/qemu/qemu_monitor_json.c |  2 ++
> >  3 files changed, 63 insertions(+), 5 deletions(-)
> > 
> > diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> > index 0c6645ed89..1770a1882b 100644
> > --- a/src/qemu/qemu_driver.c
> > +++ b/src/qemu/qemu_driver.c
> 
> [...]
> 
> > diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
> > index dc05dfd047..e8fe1eceae 100644
> > --- a/src/qemu/qemu_monitor_json.c
> > +++ b/src/qemu/qemu_monitor_json.c
> > @@ -7431,6 +7431,8 @@ qemuMonitorJSONSetIOThread(qemuMonitor *mon,
> >      VIR_IOTHREAD_SET_PROP("poll-max-ns", poll_max_ns);
> >      VIR_IOTHREAD_SET_PROP("poll-grow", poll_grow);
> >      VIR_IOTHREAD_SET_PROP("poll-shrink", poll_shrink);
> > +    VIR_IOTHREAD_SET_PROP("thread-pool-min", thread_pool_min);
> > +    VIR_IOTHREAD_SET_PROP("thread-pool-max", thread_pool_max);
> 
> +/**
> + * VIR_DOMAIN_IOTHREAD_THREAD_POOL_MIN:
> + *
> + * Sets the lower bound for thread pool size. A value of -1 disables this bound
> + * leaving hypervisor use its default value. Accepted type is
> + * VIR_TYPED_PARAM_INT.
> + *
> + * Since: 8.5.0
> + */
> +# define VIR_DOMAIN_IOTHREAD_THREAD_POOL_MIN "thread_pool_min"
> 
> 
> I've tried following:
> 
> 
>  $ virsh iothreadset cd --id 3 --thread-pool-min 123
>  error: internal error: unable to execute QEMU command 'qom-set': bad thread-pool-min/thread-pool-max values
> 
>  $ virsh iothreadset cd --id 3 --thread-pool-max 123
> 
>  $ virsh iothreadset cd --id 3 --thread-pool-min 2
> 
>  $ virsh iothreadset cd --id 3 --thread-pool-min -1
>  error: internal error: unable to execute QEMU command 'qom-set': thread-pool-min value must be in range [0, 9223372036854775807]
> 
> 
> There are two conclusions:
>     - '-1' value simply doesn't work as documented
>     - we'll need to document that when live-setting 'max' needs to be
>       set first

So the second happens only if you pick a minimum which is greater than
the maximum auto-picked by qemu.

Also since VIR_IOTHREAD_SET_PROP is a discrete command the following
compound operation doesn't work properly:

 virsh iothreadset cd --id 3  --thread-pool-max 1234 --thread-pool-min 123
 error: internal error: unable to execute QEMU command 'qom-set': bad thread-pool-min/thread-pool-max values

As it would IMO be a bit too overkill to try to order them properly when
changing the size I suggest you ask users to do it sequentially in the
docs.



More information about the libvir-list mailing list