From: "Benoît Canet" <benoit.canet@nodalink.com>
To: "Benoît Canet" <benoit.canet@nodalink.com>
Cc: kwolf@redhat.com, pbonzini@redhat.com, qemu-devel@nongnu.org,
stefanha@redhat.com
Subject: Re: [Qemu-devel] [RFC V2 0/8] Throttle group cooperative round robin scheduling
Date: Wed, 20 Aug 2014 14:27:06 +0000 [thread overview]
Message-ID: <20140820142706.GA20887@nodalink.com> (raw)
In-Reply-To: <1407939839-27483-1-git-send-email-benoit.canet@nodalink.com>
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
next prev parent reply other threads:[~2014-08-20 14:27 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-13 14:23 [Qemu-devel] [RFC V2 0/8] Throttle group cooperative round robin scheduling Benoît Canet
2014-08-13 14:23 ` [Qemu-devel] [RFC V2 1/8] throttle: Extract timers from ThrottleState into a separate ThrottleTimers structure Benoît Canet
2014-08-13 14:23 ` [Qemu-devel] [RFC V2 2/8] throttle: Add throttle group infrastructure Benoît Canet
2014-08-13 14:23 ` [Qemu-devel] [RFC V2 3/8] throttle: Add throttle group infrastructure tests Benoît Canet
2014-08-13 14:23 ` [Qemu-devel] [RFC V2 4/8] throttle: Prepare to have multiple timers for one ThrottleState Benoît Canet
2014-08-13 14:23 ` [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-13 14:23 ` [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-13 14:23 ` [Qemu-devel] [RFC V2 7/8] throttle: Add throttle group support Benoît Canet
2014-09-02 22:37 ` Eric Blake
2014-08-13 14:23 ` [Qemu-devel] [RFC V2 8/8] throttle: Update throttle infrastructure copyright Benoît Canet
2014-08-20 14:27 ` Benoît Canet [this message]
2014-09-01 14:34 ` [Qemu-devel] [RFC V2 0/8] Throttle group cooperative round robin scheduling Benoît Canet
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140820142706.GA20887@nodalink.com \
--to=benoit.canet@nodalink.com \
--cc=kwolf@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.