[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC V2 0/8] Throttle group cooperative round robin sch
From: |
Benoît Canet |
Subject: |
Re: [Qemu-devel] [RFC V2 0/8] Throttle group cooperative round robin scheduling |
Date: |
Wed, 20 Aug 2014 14:27:06 +0000 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Wed, Aug 13, 2014 at 04:23:51PM +0200, Benoît Canet wrote:
> Hi,
>
> Here is my current wip on the throttle group support.
>
> For the user interface I implemented Stefanha's idea proposed in Stuttgart.
>
> For the throttling algorithm I use a cooperative round robin scheduler.
>
> Classical round robin works with a fixed HZ ticks and it's totaly incompatible
> with the throttling algorithm.
>
> So the cooperative round robin scheduler is a way for each block device to
> decide
> if a pause must be done and a timer be armed and most important of all which
> other block device of the group must resume the work once the timer is fired.
>
> The advantages of this algorigthm are:
>
> -only one timer active at a given time (no more cpu usage than regular
> throttling)
> -no central place didacting the sheduling policy like a didactureship:
> we love collaboration isn't it ?:)
> -No need to deal with incoming queues to collect requests before scheduling
> then with and dispatchs queues
> -Compatible with the throttling code with almost no changes
> -As you go scheduling
>
> Best regards
>
> Benoît
>
> Benoît Canet (8):
> throttle: Extract timers from ThrottleState into a separate
> ThrottleTimers structure
> throttle: Add throttle group infrastructure
> throttle: Add throttle group infrastructure tests
> throttle: Prepare to have multiple timers for one ThrottleState
> throttle: Add a way to know if throttle_schedule_timer had armed a
> timer
> throttle: Add a way to fire one of the timers asap like a bottom half
> throttle: Add throttle group support
> throttle: Update throttle infrastructure copyright
>
> block.c | 211 ++++++++++++++++++++++++++++++++++-----
> block/Makefile.objs | 1 +
> block/qapi.c | 7 +-
> block/throttle-groups.c | 212
> ++++++++++++++++++++++++++++++++++++++++
> blockdev.c | 18 +++-
> hmp.c | 4 +-
> include/block/block.h | 3 +-
> include/block/block_int.h | 9 +-
> include/block/throttle-groups.h | 45 +++++++++
> include/qemu/throttle.h | 46 ++++++---
> qapi/block-core.json | 5 +-
> qemu-options.hx | 1 +
> qmp-commands.hx | 3 +-
> tests/test-throttle.c | 137 +++++++++++++++++++-------
> util/throttle.c | 107 +++++++++++++-------
> 15 files changed, 684 insertions(+), 125 deletions(-)
> create mode 100644 block/throttle-groups.c
> create mode 100644 include/block/throttle-groups.h
>
> --
> 2.1.0.rc1
>
ping
- [Qemu-devel] [RFC V2 0/8] Throttle group cooperative round robin scheduling, Benoît Canet, 2014/08/14
- [Qemu-devel] [RFC V2 2/8] throttle: Add throttle group infrastructure, Benoît Canet, 2014/08/14
- [Qemu-devel] [RFC V2 4/8] throttle: Prepare to have multiple timers for one ThrottleState, Benoît Canet, 2014/08/14
- [Qemu-devel] [RFC V2 1/8] throttle: Extract timers from ThrottleState into a separate ThrottleTimers structure, Benoît Canet, 2014/08/14
- [Qemu-devel] [RFC V2 8/8] throttle: Update throttle infrastructure copyright, Benoît Canet, 2014/08/14
- [Qemu-devel] [RFC V2 5/8] throttle: Add a way to know if throttle_schedule_timer had armed a timer, Benoît Canet, 2014/08/14
- [Qemu-devel] [RFC V2 6/8] throttle: Add a way to fire one of the timers asap like a bottom half, Benoît Canet, 2014/08/14
- [Qemu-devel] [RFC V2 3/8] throttle: Add throttle group infrastructure tests, Benoît Canet, 2014/08/14
- [Qemu-devel] [RFC V2 7/8] throttle: Add throttle group support, Benoît Canet, 2014/08/14
- Re: [Qemu-devel] [RFC V2 0/8] Throttle group cooperative round robin scheduling,
Benoît Canet <=