From: Fabio Checconi <fchecconi@gmail.com>
To: jens.axboe@oracle.com
Cc: linux-kernel@vger.kernel.org, paolo.valente@unimore.it,
fabio@gandalf.sssup.it
Subject: [PATCH 0/3] BFQ I/O Scheduler (second take)
Date: Tue, 11 Nov 2008 13:51:48 +0100 [thread overview]
Message-ID: <20081111125148.GD9508@gandalf.sssup.it> (raw)
Hi Jens, hi all,
this is an updated version of the patchset introducing the BFQ (Budget
Fair Queueing) I/O scheduler. It is based on CFQ and it has been
developed trying to improve the predictability and the fairness of the
service prvided, without penalizing the aggregate throughput.
This new version hopefully addresses the issues pointed out after the
first submission[1]:
1) it introduces a bitmap to notify priority changes to the bfq/cfq;
2) it introduces a timeout to put an higher limit to the time a
task can take to consume its budget;
3) it supports hierarchical scheduling.
With the introduction of a budget timeout, each task is still assigned
a budget measured in number of sectors instead of amount of time,
but a budget is not served to its exhaustion if it's taking too much
to complete. Budgets are still scheduled using a modified version
of WF2Q+.
Using huge values for max_budget turns the scheduler into a pure
time-domain proportional share one, and the timeout controls the duration
of the time quanta.
WRT the support for hierarchical scheduling, that is being discussed
so much in these days, this scheduler does not add anything new, it
supports proportional share distribution of disk bandwidth among
full cgroup hierarchies; the mapping from requests to cgroups is
correct only in case of synchronous reads.
The overall diffstat is the following:
block/Kconfig.iosched | 25 +
block/Makefile | 1 +
block/bfq-cgroup.c | 743 +++++++++++++++
block/bfq-ioc.c | 375 ++++++++
block/bfq-iosched.c | 2010 +++++++++++++++++++++++++++++++++++++++++
block/bfq-sched.c | 950 +++++++++++++++++++
block/bfq.h | 514 +++++++++++
block/blk-ioc.c | 27 +-
block/cfq-iosched.c | 10 +-
fs/ioprio.c | 9 +-
include/linux/cgroup_subsys.h | 6 +
include/linux/iocontext.h | 18 +-
12 files changed, 4669 insertions(+), 19 deletions(-)
For a complete description of the algorithm and of its properties
please refer to [2], (where extensive experiments on older hw can
also be found), and for some performance measurements and implementation
details, to [3].
[1] http://lkml.org/lkml/2008/4/1/234
[2] http://algo.ing.unimo.it/people/paolo/disk_sched/
[3] http://feanor.sssup.it/~fabio/linux/bfq/
As usual, any kind of feedback will be greatly appreciated, thanks
in advance.
Fabio Checconi, Paolo Valente
next reply other threads:[~2008-11-11 12:49 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-11 12:51 Fabio Checconi [this message]
2008-11-11 12:53 ` [PATCH 01/03] block: prepare I/O context code for BFQ Fabio Checconi
2008-11-11 12:56 ` [PATCH 02/03] block: introduce the BFQ I/O scheduler Fabio Checconi
2008-11-11 12:58 ` [PATCH 03/03] block: add cgroups, kconfig and build bits for BFQ Fabio Checconi
2008-11-12 2:48 ` [PATCH 0/3] BFQ I/O Scheduler (second take) Li Zefan
2008-11-12 12:38 ` Fabio Checconi
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=20081111125148.GD9508@gandalf.sssup.it \
--to=fchecconi@gmail.com \
--cc=fabio@gandalf.sssup.it \
--cc=jens.axboe@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=paolo.valente@unimore.it \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox