android_kernel_motorola_sm6375/block
Repository files (latest commit first)
Filename Latest commit message Latest commit date
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
..
partitions
badblocks.c
bio-integrity.c
bio.c block: trace completion of all bios. 2017-04-07 09:40:52 -06:00
blk-cgroup.c blkcg: allocate struct blkcg_gq outside request queue spinlock 2017-03-29 11:27:19 -06:00
blk-core.c block: trace completion of all bios. 2017-04-07 09:40:52 -06:00
blk-exec.c
blk-flush.c block: remove outdated part of blkdev_issue_flush() comment 2017-03-24 15:41:30 -06:00
blk-integrity.c block: constify struct blk_integrity_profile 2017-03-24 20:34:39 -06:00
blk-ioc.c Merge branch 'for-linus' of git://git.kernel.dk/linux-block 2017-03-03 10:53:35 -08:00
blk-lib.c block: remove the discard_zeroes_data flag 2017-04-08 11:25:38 -06:00
blk-map.c sched/headers: Prepare for new header dependencies before moving code to <linux/sched/task_stack.h> 2017-03-02 08:42:36 +01:00
blk-merge.c block: implement splitting of REQ_OP_WRITE_ZEROES bios 2017-04-08 11:25:38 -06:00
blk-mq-cpumap.c
blk-mq-debugfs.c blk-mq: Show symbolic names for hctx state and flags 2017-04-10 16:13:33 -06:00
blk-mq-pci.c blk-mq-pci: Fix two spelling mistakes 2017-03-29 11:09:51 -06:00
blk-mq-sched.c blk-mq-sched: provide hooks for initializing hardware queue data 2017-04-07 12:45:41 -06:00
blk-mq-sched.h blk-mq-sched: make completed_request() callback more useful 2017-04-14 14:06:57 -06:00
blk-mq-sysfs.c blk-mq: free hctx->cpumask in release handler of hctx's kobject 2017-03-08 09:56:12 -07:00
blk-mq-tag.c blk-mq: add shallow depth option for blk_mq_get_tag() 2017-04-14 14:06:54 -06:00
blk-mq-tag.h blk-mq-sched: Allocate sched reserved tags as specified in the original queue tagset 2017-03-02 08:56:04 -07:00
blk-mq-virtio.c
blk-mq.c blk-mq-sched: make completed_request() callback more useful 2017-04-14 14:06:57 -06:00
blk-mq.h blk-mq: add shallow depth option for blk_mq_get_tag() 2017-04-14 14:06:54 -06:00
blk-settings.c block: remove the discard_zeroes_data flag 2017-04-08 11:25:38 -06:00
blk-softirq.c sched/headers: Prepare for new header dependencies before moving code to <linux/sched/topology.h> 2017-03-02 08:42:26 +01:00
blk-stat.c blk-throttle: add a mechanism to estimate IO latency 2017-03-28 08:02:20 -06:00
blk-stat.h blk-throttle: add a mechanism to estimate IO latency 2017-03-28 08:02:20 -06:00
blk-sysfs.c block: remove the discard_zeroes_data flag 2017-04-08 11:25:38 -06:00
blk-tag.c
blk-throttle.c blk-throttle: add latency target support 2017-03-28 08:02:20 -06:00
blk-timeout.c
blk-wbt.c block: Fix list corruption of blk stats callback list 2017-04-11 08:09:14 -06:00
blk-wbt.h block: track request size in blk_issue_stat 2017-03-28 08:02:20 -06:00
blk-zoned.c
blk.h blk-throttle: add a mechanism to estimate IO latency 2017-03-28 08:02:20 -06:00
bounce.c
bsg-lib.c
bsg.c
cfq-iosched.c cfq: Disable writeback throttling by default 2017-04-05 08:15:08 -06:00
cmdline-parser.c
compat_ioctl.c block: remove the discard_zeroes_data flag 2017-04-08 11:25:38 -06:00
deadline-iosched.c
elevator.c blk-mq-sched: fix crash in switch error path 2017-04-07 08:56:48 -06:00
genhd.c block: Fix oops scsi_disk_get() 2017-03-22 20:11:37 -06:00
ioctl.c block: remove the discard_zeroes_data flag 2017-04-08 11:25:38 -06:00
ioprio.c sched/headers: Prepare to move the task_lock()/unlock() APIs to <linux/sched/task.h> 2017-03-02 08:42:38 +01:00
Kconfig blk-throttle: add configure option for new .low interface 2017-03-28 08:02:20 -06:00
Kconfig.iosched blk-mq: introduce Kyber multiqueue I/O scheduler 2017-04-14 14:06:58 -06:00
kyber-iosched.c blk-mq: introduce Kyber multiqueue I/O scheduler 2017-04-14 14:06:58 -06:00
Makefile blk-mq: introduce Kyber multiqueue I/O scheduler 2017-04-14 14:06:58 -06:00
mq-deadline.c
noop-iosched.c
opal_proto.h
partition-generic.c
scsi_ioctl.c block, scsi: move the retries field to struct scsi_request 2017-04-05 12:05:08 -06:00
sed-opal.c block: sed-opal: Tone down all the pr_* to debugs 2017-04-07 14:24:16 -06:00
t10-pi.c block: constify struct blk_integrity_profile 2017-03-24 20:34:39 -06:00