blob: eba7ba74a4fdb479a9f6f7bd57bc228277ee9d79 [file] [log] [blame]
David Howells93614012006-09-30 20:45:40 +02001if BLOCK
Linus Torvalds1da177e2005-04-16 15:20:36 -07002
3menu "IO Schedulers"
4
5config IOSCHED_NOOP
6 bool
7 default y
8 ---help---
9 The no-op I/O scheduler is a minimal scheduler that does basic merging
10 and sorting. Its main uses include non-disk based block devices like
11 memory devices, and specialised software or hardware environments
12 that do their own scheduling and require only minimal assistance from
13 the kernel.
14
Maya Erez60181552012-06-27 11:25:26 +030015config IOSCHED_TEST
16 tristate "Test I/O scheduler"
17 depends on DEBUG_FS
Lee Susmanb09c0412012-12-19 14:28:52 +020018 default m
Maya Erez60181552012-06-27 11:25:26 +030019 ---help---
20 The test I/O scheduler is a duplicate of the noop scheduler with
21 addition of test utlity.
22 It allows testing a block device by dispatching specific requests
23 according to the test case and declare PASS/FAIL according to the
24 requests completion error code.
25
Linus Torvalds1da177e2005-04-16 15:20:36 -070026config IOSCHED_DEADLINE
27 tristate "Deadline I/O scheduler"
28 default y
29 ---help---
Jens Axboe492af632009-10-03 09:37:51 +020030 The deadline I/O scheduler is simple and compact. It will provide
31 CSCAN service with FIFO expiration of requests, switching to
32 a new point in the service tree and doing a batch of IO from there
33 in case of expiry.
Linus Torvalds1da177e2005-04-16 15:20:36 -070034
Tatyana Brokhman16349062012-09-20 10:46:10 +030035config IOSCHED_ROW
36 tristate "ROW I/O scheduler"
37 default y
38 ---help---
39 The ROW I/O scheduler gives priority to READ requests over the
40 WRITE requests when dispatching, without starving WRITE requests.
41 Requests are kept in priority queues. Dispatching is done in a RR
42 manner when the dispatch quantum for each queue is calculated
43 according to queue priority.
44 Most suitable for mobile devices.
45
Linus Torvalds1da177e2005-04-16 15:20:36 -070046config IOSCHED_CFQ
47 tristate "CFQ I/O scheduler"
Vivek Goyalafc24d42010-04-26 19:27:56 +020048 # If BLK_CGROUP is a module, CFQ has to be built as module.
49 depends on (BLK_CGROUP=m && m) || !BLK_CGROUP || BLK_CGROUP=y
Linus Torvalds1da177e2005-04-16 15:20:36 -070050 default y
51 ---help---
52 The CFQ I/O scheduler tries to distribute bandwidth equally
53 among all processes in the system. It should provide a fair
Jens Axboe08dc8722009-10-03 09:40:47 +020054 and low latency working environment, suitable for both desktop
55 and server systems.
56
Jesper Juhla8e14b92007-02-17 20:08:22 +010057 This is the default I/O scheduler.
Linus Torvalds1da177e2005-04-16 15:20:36 -070058
Vivek Goyalafc24d42010-04-26 19:27:56 +020059 Note: If BLK_CGROUP=m, then CFQ can be built only as module.
60
Vivek Goyal25bc6b02009-12-03 12:59:43 -050061config CFQ_GROUP_IOSCHED
62 bool "CFQ Group Scheduling support"
Vivek Goyalafc24d42010-04-26 19:27:56 +020063 depends on IOSCHED_CFQ && BLK_CGROUP
Vivek Goyal25bc6b02009-12-03 12:59:43 -050064 default n
65 ---help---
66 Enable group IO scheduling in CFQ.
67
Arianna Avanzini4995e332014-01-27 23:50:08 +010068config IOSCHED_BFQ
69 tristate "BFQ I/O scheduler"
70 depends on EXPERIMENTAL
71 default n
72 ---help---
73 The BFQ I/O scheduler tries to distribute bandwidth among
74 all processes according to their weights.
75 It aims at distributing the bandwidth as desired, independently of
76 the disk parameters and with any workload. It also tries to
77 guarantee low latency to interactive and soft real-time
78 applications. If compiled built-in (saying Y here), BFQ can
79 be configured to support hierarchical scheduling.
80
81config CGROUP_BFQIO
82 bool "BFQ hierarchical scheduling support"
83 depends on CGROUPS && IOSCHED_BFQ=y
84 default n
85 ---help---
86 Enable hierarchical scheduling in BFQ, using the cgroups
87 filesystem interface. The name of the subsystem will be
88 bfqio.
89
Nate Diller131dda72005-10-30 15:02:19 -080090choice
91 prompt "Default I/O scheduler"
Jens Axboeb17fd9b2006-06-19 10:06:48 +020092 default DEFAULT_CFQ
Nate Diller131dda72005-10-30 15:02:19 -080093 help
94 Select the I/O scheduler which will be used by default for all
95 block devices.
96
Nate Diller131dda72005-10-30 15:02:19 -080097 config DEFAULT_DEADLINE
Jens Axboec6ea2ba2005-11-04 08:44:58 +010098 bool "Deadline" if IOSCHED_DEADLINE=y
Nate Diller131dda72005-10-30 15:02:19 -080099
Tatyana Brokhman16349062012-09-20 10:46:10 +0300100 config DEFAULT_ROW
101 bool "ROW" if IOSCHED_ROW=y
102 help
103 The ROW I/O scheduler gives priority to READ requests
104 over the WRITE requests when dispatching, without starving
105 WRITE requests. Requests are kept in priority queues.
106 Dispatching is done in a RR manner when the dispatch quantum
107 for each queue is defined according to queue priority.
108 Most suitable for mobile devices.
109
Nate Diller131dda72005-10-30 15:02:19 -0800110 config DEFAULT_CFQ
Jens Axboec6ea2ba2005-11-04 08:44:58 +0100111 bool "CFQ" if IOSCHED_CFQ=y
Nate Diller131dda72005-10-30 15:02:19 -0800112
Arianna Avanzini4995e332014-01-27 23:50:08 +0100113 config DEFAULT_BFQ
114 bool "BFQ" if IOSCHED_BFQ=y
115 help
116 Selects BFQ as the default I/O scheduler which will be
117 used by default for all block devices.
118 The BFQ I/O scheduler aims at distributing the bandwidth
119 as desired, independently of the disk parameters and with
120 any workload. It also tries to guarantee low latency to
121 interactive and soft real-time applications.
122
Nate Diller131dda72005-10-30 15:02:19 -0800123 config DEFAULT_NOOP
124 bool "No-op"
125
126endchoice
127
128config DEFAULT_IOSCHED
129 string
Nate Diller131dda72005-10-30 15:02:19 -0800130 default "deadline" if DEFAULT_DEADLINE
Tatyana Brokhman16349062012-09-20 10:46:10 +0300131 default "row" if DEFAULT_ROW
Nate Diller131dda72005-10-30 15:02:19 -0800132 default "cfq" if DEFAULT_CFQ
Arianna Avanzini4995e332014-01-27 23:50:08 +0100133 default "bfq" if DEFAULT_BFQ
Nate Diller131dda72005-10-30 15:02:19 -0800134 default "noop" if DEFAULT_NOOP
135
Linus Torvalds1da177e2005-04-16 15:20:36 -0700136endmenu
David Howells93614012006-09-30 20:45:40 +0200137
138endif