git: dsched - Add the FQ policy
Alex Hornung
alexh at crater.dragonflybsd.org
Thu Apr 15 13:26:00 PDT 2010
commit 74ce043bc42e99a210c8ddff089908a80e6401ba
Author: Alex Hornung <ahornung at gmail.com>
Date: Thu Feb 25 08:55:55 2010 +0000
dsched - Add the FQ policy
* Add the FQ (fair queueing) policy for the dsched I/O scheduler
framework.
* Right now, this is at best experimental; it only starts rate limiting
when the disk is busy. Each process is allocated an equal fair amount
of disk time, based on the average request latency and tps.
If the disk is busy and one process exceeeds its fair share, its bios
are queued for later dispatch.
To avoid starvation of heavy write processes, heavy writes are
interleaved once every 3 scheduler rebalances. The scheduler rebalance
time is currently set to 1s, so that exceeding processes will be
limited after this period.
* While I've done some limited testing on switching policies at runtime
and even under heavy I/O going on, it is not recommended to do this,
as some problems will crop up.
* Future work to do:
- stabilization pass
- adding bucket support (i.e. having different priority buckets
for groups of processes, so that for example processes A,B and
C get a total aggregate of 80% disk time, while processes D
and E get a total aggregate of 20%, instead of each process
getting 20%)
- adding an "ionice" userland tool to allow to change the
bucket/priority of a process
Summary of changes:
sys/dsched/fq/dsched_fq.h | 195 +++++++++++++
sys/dsched/fq/dsched_fq_core.c | 539 +++++++++++++++++++++++++++++++++++++
sys/dsched/fq/dsched_fq_diskops.c | 367 +++++++++++++++++++++++++
sys/dsched/fq/dsched_fq_procops.c | 153 +++++++++++
sys/dsched/fq/flow.txt | 54 ++++
test/dsched_fq/Makefile | 11 +
test/dsched_fq/fqstats.c | 50 ++++
7 files changed, 1369 insertions(+), 0 deletions(-)
create mode 100644 sys/dsched/fq/dsched_fq.h
create mode 100644 sys/dsched/fq/dsched_fq_core.c
create mode 100644 sys/dsched/fq/dsched_fq_diskops.c
create mode 100644 sys/dsched/fq/dsched_fq_procops.c
create mode 100644 sys/dsched/fq/flow.txt
create mode 100644 test/dsched_fq/Makefile
create mode 100644 test/dsched_fq/fqstats.c
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/74ce043bc42e99a210c8ddff089908a80e6401ba
--
DragonFly BSD source repository
More information about the Commits
mailing list