git: dsched - Add the FQ policy

看板DFBSD_commit作者時間16年前 (2010/04/16 04:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
commit 74ce043bc42e99a210c8ddff089908a80e6401ba Author: Alex Hornung <ahornung@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
文章代碼(AID): #1BntV8de (DFBSD_commit)