Kconfig.iosched 2.71 KB
Newer Older
1
# SPDX-License-Identifier: GPL-2.0
2
if BLOCK
Linus Torvalds's avatar
Linus Torvalds committed
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

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---
20 21 22 23
	  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.
Linus Torvalds's avatar
Linus Torvalds committed
24 25 26 27 28 29 30

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
31 32 33
	  and low latency working environment, suitable for both desktop
	  and server systems.

34
	  This is the default I/O scheduler.
Linus Torvalds's avatar
Linus Torvalds committed
35

36 37
config CFQ_GROUP_IOSCHED
	bool "CFQ Group Scheduling support"
38
	depends on IOSCHED_CFQ && BLK_CGROUP
39 40 41 42
	default n
	---help---
	  Enable group IO scheduling in CFQ.

43
choice
44

45
	prompt "Default I/O scheduler"
46
	default DEFAULT_CFQ
47 48 49 50 51
	help
	  Select the I/O scheduler which will be used by default for all
	  block devices.

	config DEFAULT_DEADLINE
52
		bool "Deadline" if IOSCHED_DEADLINE=y
53 54

	config DEFAULT_CFQ
55
		bool "CFQ" if IOSCHED_CFQ=y
56 57 58 59 60 61 62 63 64 65 66 67

	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

68 69 70 71 72 73
config MQ_IOSCHED_DEADLINE
	tristate "MQ deadline I/O scheduler"
	default y
	---help---
	  MQ version of the deadline IO scheduler.

74 75 76 77 78 79 80 81 82
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.

83 84 85 86 87 88 89 90 91 92 93
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

94 95 96 97 98 99 100 101 102
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.

Linus Torvalds's avatar
Linus Torvalds committed
103
endmenu
104 105

endif