[libvirt] [PATCH v2 1/3] qemu: use a bigger unplug timeout for PPC64 guests

Cole Robinson crobinso at redhat.com
Mon Oct 14 16:48:19 UTC 2019


On 10/11/19 3:54 PM, Daniel Henrique Barboza wrote:
> 
> 
> On 10/9/19 5:15 PM, Cole Robinson wrote:
>> On 9/11/19 5:05 PM, Daniel Henrique Barboza wrote:
>>> For some architectures and setups, device removal can take
>>> longer than the default 5 seconds. This results in commands
>>> such as 'virsh setvcpus' to fire timeout messages even if
>>> the operation were successful in the guest, confusing the
>>> user.
>>>
>>> This patch sets a new 10 seconds unplug timeout for PPC64
>>> guests. All other archs will keep the default 5 seconds
>>> timeout.
>>>
>>> Instead of putting 'if PPC64' conditionals inside qemu_hotplug.c
>>> to set the new timeout value, a new QEMU driver attribute
>>> 'unplugTimeout' was added. The timeout value is set during
>>> qemuStateInitialize only once. All qemu_hotplug.c functions
>>> that uses the timeout have easy access to a qemu_driver object,
>>> thus the change to use unplugTimeout is straightforward.
>>>
>>> The now unused 'qemuDomainRemoveDeviceWaitTime' global can't
>>> be simply erased from qemu_hotplug.c though. Next patch will
>>> remove it properly.
>>>
>>
>> Sorry for the wrong review delay. I see this implements danpb's 
>> suggestion from the previous thread. The implementation seems a little 
>> odd to me though because it is differentiating on host arch, but this 
>> is about guest arch right? And probably an arbitrary number of 
>> options, like I imagine TCG would want a longer timeout too (though 
>> that's not anything you need to deal with)
> 
> I think it's sensible to say that a TCG guest would always required a
> greater unplug timeout than a hardware accelerated one. However, never
> thought about considering TCG guests in this patch series though. A shame.
> 
> So, considering that TCG guest exists, we can parametrize this unplug 
> timeout
> calculation by considering guest (not host) architecture and if it's a 
> TCG or
> a KVM guest. Speaking about the problem I'm trying to fix with ppc64 and
> what we already have, we can roll out this unplug timeout logic like:
> 
> - pseries guest on KVM: 10 seconds
> - everyone else on KVM: 5 seconds (untouched, like it is today)
>  > For TCG guests, perhaps double the KVM timeout? This would need
> experimentation, but double the timeout seems ok at first glance. Then we
> can do:
> 
> - TCG pseries guest: 10 * 2 = 20 seconds
> - TCG with every other arch guest = 5 * 2 = 10 seconds
> 
> 
> This TCG calculation can be left alone for now as well - I can create 
> the API
> considering that TCG guest exists, but do not infer the timeout for it. 
> Either
> way works for me.
> 

I suggest just fixing the case you care about, leave TCG as it is (the 
default 5 seconds), otherwise we may be trying to fix something that no 
one cares about in real life.

But I think conceptually the function is a better fit incase the logic 
every becomes more complicated than a single host check.

>>
>> So I think this should be a function that lives in qemu_hotplug.c and 
>> acts on a DomainDef at least. The test suite will have to mock that in 
>> a qemuhotplugmock.c file, tests/qemucpumock.c is a good example to 
>> follow.
> 
> Just to check if we're on the same page, by 'I think this should be a 
> function'
> you mean the calculation of qemuDomainRemoveDeviceWaitTime that I just
> mentioned above, right?
> 

Yup that's what I meant

Thanks,
Cole




More information about the libvir-list mailing list