| if BLOCK |
| |
| menu "IO Schedulers" |
| |
| config IOSCHED_NOOP |
| bool |
| default y |
| ---help--- |
| The no-op I/O scheduler is a minimal scheduler that does basic merging |
| and sorting. Its main uses include non-disk based block devices like |
| memory devices, and specialised software or hardware environments |
| that do their own scheduling and require only minimal assistance from |
| the kernel. |
| |
| config IOSCHED_TEST |
| tristate "Test I/O scheduler" |
| depends on DEBUG_FS |
| default m |
| ---help--- |
| The test I/O scheduler is a duplicate of the noop scheduler with |
| addition of test utlity. |
| It allows testing a block device by dispatching specific requests |
| according to the test case and declare PASS/FAIL according to the |
| requests completion error code. |
| |
| config IOSCHED_DEADLINE |
| tristate "Deadline I/O scheduler" |
| default y |
| ---help--- |
| The deadline I/O scheduler is simple and compact. It will provide |
| CSCAN service with FIFO expiration of requests, switching to |
| a new point in the service tree and doing a batch of IO from there |
| in case of expiry. |
| |
| config IOSCHED_ROW |
| tristate "ROW I/O scheduler" |
| default y |
| ---help--- |
| The ROW I/O scheduler gives priority to READ requests over the |
| WRITE requests when dispatching, without starving WRITE requests. |
| Requests are kept in priority queues. Dispatching is done in a RR |
| manner when the dispatch quantum for each queue is calculated |
| according to queue priority. |
| Most suitable for mobile devices. |
| |
| config IOSCHED_CFQ |
| tristate "CFQ I/O scheduler" |
| # If BLK_CGROUP is a module, CFQ has to be built as module. |
| depends on (BLK_CGROUP=m && m) || !BLK_CGROUP || BLK_CGROUP=y |
| default y |
| ---help--- |
| The CFQ I/O scheduler tries to distribute bandwidth equally |
| among all processes in the system. It should provide a fair |
| and low latency working environment, suitable for both desktop |
| and server systems. |
| |
| This is the default I/O scheduler. |
| |
| Note: If BLK_CGROUP=m, then CFQ can be built only as module. |
| |
| config CFQ_GROUP_IOSCHED |
| bool "CFQ Group Scheduling support" |
| depends on IOSCHED_CFQ && BLK_CGROUP |
| default n |
| ---help--- |
| Enable group IO scheduling in CFQ. |
| |
| config IOSCHED_BFQ |
| tristate "BFQ I/O scheduler" |
| depends on EXPERIMENTAL |
| default n |
| ---help--- |
| The BFQ I/O scheduler tries to distribute bandwidth among |
| all processes according to their weights. |
| It aims at distributing the bandwidth as desired, independently of |
| the disk parameters and with any workload. It also tries to |
| guarantee low latency to interactive and soft real-time |
| applications. If compiled built-in (saying Y here), BFQ can |
| be configured to support hierarchical scheduling. |
| |
| config CGROUP_BFQIO |
| bool "BFQ hierarchical scheduling support" |
| depends on CGROUPS && IOSCHED_BFQ=y |
| default n |
| ---help--- |
| Enable hierarchical scheduling in BFQ, using the cgroups |
| filesystem interface. The name of the subsystem will be |
| bfqio. |
| |
| choice |
| prompt "Default I/O scheduler" |
| default DEFAULT_CFQ |
| help |
| Select the I/O scheduler which will be used by default for all |
| block devices. |
| |
| config DEFAULT_DEADLINE |
| bool "Deadline" if IOSCHED_DEADLINE=y |
| |
| config DEFAULT_ROW |
| bool "ROW" if IOSCHED_ROW=y |
| help |
| The ROW I/O scheduler gives priority to READ requests |
| over the WRITE requests when dispatching, without starving |
| WRITE requests. Requests are kept in priority queues. |
| Dispatching is done in a RR manner when the dispatch quantum |
| for each queue is defined according to queue priority. |
| Most suitable for mobile devices. |
| |
| config DEFAULT_CFQ |
| bool "CFQ" if IOSCHED_CFQ=y |
| |
| config DEFAULT_BFQ |
| bool "BFQ" if IOSCHED_BFQ=y |
| help |
| Selects BFQ as the default I/O scheduler which will be |
| used by default for all block devices. |
| The BFQ I/O scheduler aims at distributing the bandwidth |
| as desired, independently of the disk parameters and with |
| any workload. It also tries to guarantee low latency to |
| interactive and soft real-time applications. |
| |
| config DEFAULT_NOOP |
| bool "No-op" |
| |
| endchoice |
| |
| config DEFAULT_IOSCHED |
| string |
| default "deadline" if DEFAULT_DEADLINE |
| default "row" if DEFAULT_ROW |
| default "cfq" if DEFAULT_CFQ |
| default "bfq" if DEFAULT_BFQ |
| default "noop" if DEFAULT_NOOP |
| |
| endmenu |
| |
| endif |