1
0
Fork 0
alistair23-linux/Documentation/block
Omar Sandoval 00e043936e blk-mq: introduce Kyber multiqueue I/O scheduler
The Kyber I/O scheduler is an I/O scheduler for fast devices designed to
scale to multiple queues. Users configure only two knobs, the target
read and synchronous write latencies, and the scheduler tunes itself to
achieve that latency goal.

The implementation is based on "tokens", built on top of the scalable
bitmap library. Tokens serve as a mechanism for limiting requests. There
are two tiers of tokens: queueing tokens and dispatch tokens.

A queueing token is required to allocate a request. In fact, these
tokens are actually the blk-mq internal scheduler tags, but the
scheduler manages the allocation directly in order to implement its
policy.

Dispatch tokens are device-wide and split up into two scheduling
domains: reads vs. writes. Each hardware queue dispatches batches
round-robin between the scheduling domains as long as tokens are
available for that domain.

These tokens can be used as the mechanism to enable various policies.
The policy Kyber uses is inspired by active queue management techniques
for network routing, similar to blk-wbt. The scheduler monitors
latencies and scales the number of dispatch tokens accordingly. Queueing
tokens are used to prevent starvation of synchronous requests by
asynchronous requests.

Various extensions are possible, including better heuristics and ionice
support. The new scheduler isn't set as the default yet.

Signed-off-by: Omar Sandoval <osandov@fb.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
2017-04-14 14:06:58 -06:00
..
00-INDEX Documentation: update missing index files in block/00-INDEX 2016-03-31 00:44:26 -06:00
biodoc.txt block: better op and flags encoding 2016-10-28 08:48:16 -06:00
biovecs.txt Documentation: update notes in biovecs about arbitrarily sized bios 2015-08-13 12:32:07 -06:00
capability.txt genhd: expose AN to user space 2007-05-23 20:14:11 -07:00
cfq-iosched.txt block: replace REQ_NOIDLE with REQ_IDLE 2016-11-01 09:43:26 -06:00
cmdline-partition.txt block: change config option name for cmdline partition parsing 2013-09-30 14:31:02 -07:00
data-integrity.txt block: Remove integrity tagging functions 2014-09-27 09:14:50 -06:00
deadline-iosched.txt trivial: Miscellaneous documentation typo fixes 2009-06-12 18:01:47 +02:00
ioprio.txt Update Jens Axboe's email in Documentation/* 2007-10-16 09:59:55 +02:00
kyber-iosched.txt blk-mq: introduce Kyber multiqueue I/O scheduler 2017-04-14 14:06:58 -06:00
null_blk.txt null_blk: add usage hints for NVM 2016-11-16 08:26:11 -07:00
pr.txt Doc: Fix double words in Documentation 2017-01-26 15:25:41 -07:00
queue-sysfs.txt block: remove the discard_zeroes_data flag 2017-04-08 11:25:38 -06:00
request.txt Update Jens Axboe's email in Documentation/* 2007-10-16 09:59:55 +02:00
stat.txt [PATCH] block/stat.txt 2006-01-08 20:14:01 -08:00
switching-sched.txt Documentation: drop as block elevator reference in switching-sched.txt 2011-11-04 12:01:48 -07:00
writeback_cache_control.txt block, drivers, fs: rename REQ_FLUSH to REQ_PREFLUSH 2016-06-07 13:41:38 -06:00