| # 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 | |
| default n | |
| ---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" | |
| default n | |
| ---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 | |
| default n | |
| ---help--- | |
| Enable hierarchical scheduling in BFQ, using the blkio | |
| (cgroups-v1) or io (cgroups-v2) controller. | |
| endmenu | |
| endif |