summaryrefslogtreecommitdiffstats
path: root/Documentation/block/bfq-iosched.txt
diff options
context:
space:
mode:
authorPaolo Valente <paolo.valente@linaro.org>2017-04-12 12:23:12 -0400
committerJens Axboe <axboe@fb.com>2017-04-19 10:30:26 -0400
commit44e44a1b329ed37a98bc41ab21fb6897d5a922ac (patch)
treeb98a87130dddbba1fa3b7a755ea77998d4841ee1 /Documentation/block/bfq-iosched.txt
parentc074170e65995706be78e8c57ed2017c638d5464 (diff)
block, bfq: improve responsiveness
This patch introduces a simple heuristic to load applications quickly, and to perform the I/O requested by interactive applications just as quickly. To this purpose, both a newly-created queue and a queue associated with an interactive application (we explain in a moment how BFQ decides whether the associated application is interactive), receive the following two special treatments: 1) The weight of the queue is raised. 2) The queue unconditionally enjoys device idling when it empties; in fact, if the requests of a queue are sync, then performing device idling for the queue is a necessary condition to guarantee that the queue receives a fraction of the throughput proportional to its weight (see [1] for details). For brevity, we call just weight-raising the combination of these two preferential treatments. For a newly-created queue, weight-raising starts immediately and lasts for a time interval that: 1) depends on the device speed and type (rotational or non-rotational), and 2) is equal to the time needed to load (start up) a large-size application on that device, with cold caches and with no additional workload. Finally, as for guaranteeing a fast execution to interactive, I/O-related tasks (such as opening a file), consider that any interactive application blocks and waits for user input both after starting up and after executing some task. After a while, the user may trigger new operations, after which the application stops again, and so on. Accordingly, the low-latency heuristic weight-raises again a queue in case it becomes backlogged after being idle for a sufficiently long (configurable) time. The weight-raising then lasts for the same time as for a just-created queue. According to our experiments, the combination of this low-latency heuristic and of the improvements described in the previous patch allows BFQ to guarantee a high application responsiveness. [1] P. Valente, A. Avanzini, "Evolution of the BFQ Storage I/O Scheduler", Proceedings of the First Workshop on Mobile System Technologies (MST-2015), May 2015. http://algogroup.unimore.it/people/paolo/disk_sched/mst-2015.pdf Signed-off-by: Paolo Valente <paolo.valente@linaro.org> Signed-off-by: Arianna Avanzini <avanzini.arianna@gmail.com> Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'Documentation/block/bfq-iosched.txt')
-rw-r--r--Documentation/block/bfq-iosched.txt9
1 files changed, 9 insertions, 0 deletions
diff --git a/Documentation/block/bfq-iosched.txt b/Documentation/block/bfq-iosched.txt
index 461b27fce979..1b87df6cd476 100644
--- a/Documentation/block/bfq-iosched.txt
+++ b/Documentation/block/bfq-iosched.txt
@@ -375,6 +375,11 @@ default, low latency mode is enabled. If enabled, interactive and soft
375real-time applications are privileged and experience a lower latency, 375real-time applications are privileged and experience a lower latency,
376as explained in more detail in the description of how BFQ works. 376as explained in more detail in the description of how BFQ works.
377 377
378DO NOT enable this mode if you need full control on bandwidth
379distribution. In fact, if it is enabled, then BFQ automatically
380increases the bandwidth share of privileged applications, as the main
381means to guarantee a lower latency to them.
382
378timeout_sync 383timeout_sync
379------------ 384------------
380 385
@@ -507,6 +512,10 @@ linear mapping between ioprio and weights, described at the beginning
507of the tunable section, is still valid, but all weights higher than 512of the tunable section, is still valid, but all weights higher than
508IOPRIO_BE_NR*10 are mapped to ioprio 0. 513IOPRIO_BE_NR*10 are mapped to ioprio 0.
509 514
515Recall that, if low-latency is set, then BFQ automatically raises the
516weight of the queues associated with interactive and soft real-time
517applications. Unset this tunable if you need/want to control weights.
518
510 519
511[1] P. Valente, A. Avanzini, "Evolution of the BFQ Storage I/O 520[1] P. Valente, A. Avanzini, "Evolution of the BFQ Storage I/O
512 Scheduler", Proceedings of the First Workshop on Mobile System 521 Scheduler", Proceedings of the First Workshop on Mobile System