blob: 5fd98eaed10d5572eecf7d314daeea0361f46258 [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
Nate Diller131dda72005-10-30 15:02:19 -080068choice
69 prompt "Default I/O scheduler"
Jens Axboeb17fd9b2006-06-19 10:06:48 +020070 default DEFAULT_CFQ
Nate Diller131dda72005-10-30 15:02:19 -080071 help
72 Select the I/O scheduler which will be used by default for all
73 block devices.
74
Nate Diller131dda72005-10-30 15:02:19 -080075 config DEFAULT_DEADLINE
Jens Axboec6ea2ba2005-11-04 08:44:58 +010076 bool "Deadline" if IOSCHED_DEADLINE=y
Nate Diller131dda72005-10-30 15:02:19 -080077
Tatyana Brokhman16349062012-09-20 10:46:10 +030078 config DEFAULT_ROW
79 bool "ROW" if IOSCHED_ROW=y
80 help
81 The ROW I/O scheduler gives priority to READ requests
82 over the WRITE requests when dispatching, without starving
83 WRITE requests. Requests are kept in priority queues.
84 Dispatching is done in a RR manner when the dispatch quantum
85 for each queue is defined according to queue priority.
86 Most suitable for mobile devices.
87
Nate Diller131dda72005-10-30 15:02:19 -080088 config DEFAULT_CFQ
Jens Axboec6ea2ba2005-11-04 08:44:58 +010089 bool "CFQ" if IOSCHED_CFQ=y
Nate Diller131dda72005-10-30 15:02:19 -080090
91 config DEFAULT_NOOP
92 bool "No-op"
93
94endchoice
95
96config DEFAULT_IOSCHED
97 string
Nate Diller131dda72005-10-30 15:02:19 -080098 default "deadline" if DEFAULT_DEADLINE
Tatyana Brokhman16349062012-09-20 10:46:10 +030099 default "row" if DEFAULT_ROW
Nate Diller131dda72005-10-30 15:02:19 -0800100 default "cfq" if DEFAULT_CFQ
101 default "noop" if DEFAULT_NOOP
102
Linus Torvalds1da177e2005-04-16 15:20:36 -0700103endmenu
David Howells93614012006-09-30 20:45:40 +0200104
105endif