| # SPDX-License-Identifier: GPL-2.0 |
| 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_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_CFQ |
| tristate "CFQ I/O scheduler" |
| 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. |
| |
| config CFQ_GROUP_IOSCHED |
| bool "CFQ Group Scheduling support" |
| depends on IOSCHED_CFQ && BLK_CGROUP |
| ---help--- |
| Enable group IO scheduling in CFQ. |
| |
| 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_CFQ |
| bool "CFQ" if IOSCHED_CFQ=y |
| |
| config DEFAULT_NOOP |
| bool "No-op" |
| |
| endchoice |
| |
| config DEFAULT_IOSCHED |
| string |
| default "deadline" if DEFAULT_DEADLINE |
| default "cfq" if DEFAULT_CFQ |
| default "noop" if DEFAULT_NOOP |
| |
| config MQ_IOSCHED_DEADLINE |
| tristate "MQ deadline I/O scheduler" |
| default y |
| ---help--- |
| MQ version of the deadline IO scheduler. |
| |
| config MQ_IOSCHED_KYBER |
| tristate "Kyber I/O scheduler" |
| default y |
| ---help--- |
| The Kyber I/O scheduler is a low-overhead scheduler suitable for |
| multiqueue and other fast devices. Given target latencies for reads and |
| synchronous writes, it will self-tune queue depths to achieve that |
| goal. |
| |
| config IOSCHED_BFQ |
| tristate "BFQ I/O scheduler" |
| ---help--- |
| BFQ I/O scheduler for BLK-MQ. BFQ distributes the bandwidth of |
| of the device among all processes according to their weights, |
| regardless of the device parameters and with any workload. It |
| also guarantees a low latency to interactive and soft |
| real-time applications. Details in |
| Documentation/block/bfq-iosched.txt |
| |
| config BFQ_GROUP_IOSCHED |
| bool "BFQ hierarchical scheduling support" |
| depends on IOSCHED_BFQ && BLK_CGROUP |
| ---help--- |
| |
| Enable hierarchical scheduling in BFQ, using the blkio |
| (cgroups-v1) or io (cgroups-v2) controller. |
| |
| endmenu |
| |
| endif |