[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [Qemu-devel] [PATCH v2 2/7] throttle: Update the thrott
From: |
Eric Blake |
Subject: |
Re: [Qemu-block] [Qemu-devel] [PATCH v2 2/7] throttle: Update the throttle_fix_bucket() documentation |
Date: |
Tue, 29 Aug 2017 16:25:31 -0500 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 |
On 08/24/2017 08:24 AM, Alberto Garcia wrote:
> The way the throttling algorithm works is that requests start being
> throttled once the bucket level exceeds the burst limit. When we get
> there the bucket leaks at the level set by the user (bkt->avg), and
> that leak rate is what prevents guest I/O from exceeding the desired
> limit.
>
> If we don't allow bursts (i.e. bkt->max == 0) then we can start
> throttling requests immediately. The problem with keeping the
> threshold at 0 is that it only allows one request at a time, and as
> soon as there's a bit of I/O from the guest every other request will
> be throttled and performance will suffer considerably. That can even
> make the guest unable to reach the throttle limit if that limit is
> high enough, and that happens regardless of the block scheduler used
> by the guest.
>
> Increasing that threshold gives flexibility to the guest, allowing it
> to perform short bursts of I/O before being throttled. Increasing the
> threshold too much does not make a difference in the long run (because
> it's the leak rate what defines the actual throughput) but it does
> allow the guest to perform longer initial bursts and exceed the
> throttle limit for a short while.
>
> A burst value of bkt->avg / 10 allows the guest to perform 100ms'
> worth of I/O at the target rate without being throttled.
>
> Signed-off-by: Alberto Garcia <address@hidden>
> ---
> util/throttle.c | 11 +++--------
> 1 file changed, 3 insertions(+), 8 deletions(-)
Reviewed-by: Eric Blake <address@hidden>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org
signature.asc
Description: OpenPGP digital signature
- [Qemu-block] [PATCH v2 0/7] Misc throttle fixes, Alberto Garcia, 2017/08/24
- [Qemu-block] [PATCH v2 1/7] throttle: Fix wrong variable name in the header documentation, Alberto Garcia, 2017/08/24
- [Qemu-block] [PATCH v2 3/7] throttle: Make throttle_is_valid() a bit less verbose, Alberto Garcia, 2017/08/24
- [Qemu-block] [PATCH v2 4/7] throttle: Remove throttle_fix_bucket() / throttle_unfix_bucket(), Alberto Garcia, 2017/08/24
- [Qemu-block] [PATCH v2 7/7] throttle: Test the valid range of config values, Alberto Garcia, 2017/08/24
- [Qemu-block] [PATCH v2 5/7] throttle: Make LeakyBucket.avg and LeakyBucket.max integer types, Alberto Garcia, 2017/08/24
- [Qemu-block] [PATCH v2 2/7] throttle: Update the throttle_fix_bucket() documentation, Alberto Garcia, 2017/08/24
- Re: [Qemu-block] [Qemu-devel] [PATCH v2 2/7] throttle: Update the throttle_fix_bucket() documentation,
Eric Blake <=
- [Qemu-block] [PATCH v2 6/7] throttle: Make burst_length 64bit and add range checks, Alberto Garcia, 2017/08/24
- Re: [Qemu-block] [Qemu-devel] [PATCH v2 0/7] Misc throttle fixes, Stefan Hajnoczi, 2017/08/29