123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- # 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_MAPLE
- tristate "Maple I/O scheduler"
- default y
- 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 IOSCHED_FIOPS
- tristate "IOPS based I/O scheduler"
- default y
- ---help---
- This is an IOPS based I/O scheduler. It will try to distribute
- IOPS equally among all processes in the system. It's mainly for
- Flash based storage.
- config IOSCHED_SIO
- tristate "Simple I/O scheduler"
- default y
- ---help---
- The Simple I/O scheduler is an extremely simple scheduler,
- based on noop and deadline, that relies on deadlines to
- ensure fairness. The algorithm does not do any sorting but
- basic merging, trying to keep a minimum overhead. It is aimed
- mainly for aleatory access devices (eg: flash devices).
- 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_ZEN
- tristate "Zen I/O scheduler"
- default y
- ---help---
- FCFS, dispatches are back-inserted, deadlines ensure fairness.
- Should work best with devices where there is no travel delay.
- 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"
- config DEFAULT_SIO
- bool "SIO" if IOSCHED_SIO=y
- config DEFAULT_FIOPS
- bool "FIOPS" if IOSCHED_FIOPS=y
- config DEFAULT_ZEN
- bool "ZEN" if IOSCHED_ZEN=y
-
- config DEFAULT_MAPLE
- bool "Maple" if IOSCHED_MAPLE=y
- endchoice
- config DEFAULT_IOSCHED
- string
- default "deadline" if DEFAULT_DEADLINE
- default "cfq" if DEFAULT_CFQ
- default "noop" if DEFAULT_NOOP
- default "fiops" if DEFAULT_FIOPS
- default "sio" if DEFAULT_SIO
- default "zen" if DEFAULT_ZEN
- default "maple" if DEFAULT_MAPLE
- 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
|