[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [Qemu-block] [PATCH v4] throttle-groups: drain before d

From: Stefan Hajnoczi
Subject: Re: [Qemu-devel] [Qemu-block] [PATCH v4] throttle-groups: drain before detaching ThrottleState
Date: Thu, 16 Nov 2017 11:25:35 +0000

On Mon, Nov 13, 2017 at 2:29 PM, Alberto Garcia <address@hidden> wrote:
> On Fri 10 Nov 2017 04:19:34 PM CET, Stefan Hajnoczi wrote:
>> I/O requests hang after stop/cont commands at least since QEMU 2.10.0
>> with -drive iops=100:
>>   (guest)$ dd if=/dev/zero of=/dev/vdb oflag=direct count=1000
>>   (qemu) stop
>>   (qemu) cont
>>   ...I/O is stuck...
>> This happens because blk_set_aio_context() detaches the ThrottleState
>> while requests may still be in flight:
>>   if (tgm->throttle_state) {
>>       throttle_group_detach_aio_context(tgm);
>>       throttle_group_attach_aio_context(tgm, new_context);
>>   }
>> This patch encloses the detach/attach calls in a drained region so no
>> I/O request is left hanging.  Also add assertions so we don't make the
>> same mistake again in the future.
> I'm wondering about the implications of this change... is it possible
> now to bypass the I/O limits simply by stopping and quickly resuming the
> VM? And is that a problem?

bdrv_set_aio_context() already drains so this patch doesn't change
existing behavior with respect to bypassing throttling.

It's not ideal that certain VM lifecycle operations temporarily
disable throttling, but it's a trade-off since synchronous drain is
usually performance sensitive and should not take a long time.
Perhaps there are ways to improve the situation, I haven't studied it
in detail.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]