qemu-devel
[Top][All Lists]
Advanced

[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: Mon, 1 Sep 2014 14:34:34 +0000
User-agent: Mutt/1.5.21 (2010-09-15)

On Wed, Aug 20, 2014 at 02:27:06PM +0000, Benoît Canet wrote:
> 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

ping



reply via email to

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