Kconfig.iosched 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. # SPDX-License-Identifier: GPL-2.0
  2. if BLOCK
  3. menu "IO Schedulers"
  4. config IOSCHED_NOOP
  5. bool
  6. default y
  7. ---help---
  8. The no-op I/O scheduler is a minimal scheduler that does basic merging
  9. and sorting. Its main uses include non-disk based block devices like
  10. memory devices, and specialised software or hardware environments
  11. that do their own scheduling and require only minimal assistance from
  12. the kernel.
  13. config IOSCHED_DEADLINE
  14. tristate "Deadline I/O scheduler"
  15. default y
  16. ---help---
  17. The deadline I/O scheduler is simple and compact. It will provide
  18. CSCAN service with FIFO expiration of requests, switching to
  19. a new point in the service tree and doing a batch of IO from there
  20. in case of expiry.
  21. config IOSCHED_MAPLE
  22. tristate "Maple I/O scheduler"
  23. default y
  24. config IOSCHED_CFQ
  25. tristate "CFQ I/O scheduler"
  26. default y
  27. ---help---
  28. The CFQ I/O scheduler tries to distribute bandwidth equally
  29. among all processes in the system. It should provide a fair
  30. and low latency working environment, suitable for both desktop
  31. and server systems.
  32. This is the default I/O scheduler.
  33. config IOSCHED_FIOPS
  34. tristate "IOPS based I/O scheduler"
  35. default y
  36. ---help---
  37. This is an IOPS based I/O scheduler. It will try to distribute
  38. IOPS equally among all processes in the system. It's mainly for
  39. Flash based storage.
  40. config IOSCHED_SIO
  41. tristate "Simple I/O scheduler"
  42. default y
  43. ---help---
  44. The Simple I/O scheduler is an extremely simple scheduler,
  45. based on noop and deadline, that relies on deadlines to
  46. ensure fairness. The algorithm does not do any sorting but
  47. basic merging, trying to keep a minimum overhead. It is aimed
  48. mainly for aleatory access devices (eg: flash devices).
  49. config CFQ_GROUP_IOSCHED
  50. bool "CFQ Group Scheduling support"
  51. depends on IOSCHED_CFQ && BLK_CGROUP
  52. default n
  53. ---help---
  54. Enable group IO scheduling in CFQ.
  55. config IOSCHED_ZEN
  56. tristate "Zen I/O scheduler"
  57. default y
  58. ---help---
  59. FCFS, dispatches are back-inserted, deadlines ensure fairness.
  60. Should work best with devices where there is no travel delay.
  61. choice
  62. prompt "Default I/O scheduler"
  63. default DEFAULT_CFQ
  64. help
  65. Select the I/O scheduler which will be used by default for all
  66. block devices.
  67. config DEFAULT_DEADLINE
  68. bool "Deadline" if IOSCHED_DEADLINE=y
  69. config DEFAULT_CFQ
  70. bool "CFQ" if IOSCHED_CFQ=y
  71. config DEFAULT_NOOP
  72. bool "No-op"
  73. config DEFAULT_SIO
  74. bool "SIO" if IOSCHED_SIO=y
  75. config DEFAULT_FIOPS
  76. bool "FIOPS" if IOSCHED_FIOPS=y
  77. config DEFAULT_ZEN
  78. bool "ZEN" if IOSCHED_ZEN=y
  79. config DEFAULT_MAPLE
  80. bool "Maple" if IOSCHED_MAPLE=y
  81. endchoice
  82. config DEFAULT_IOSCHED
  83. string
  84. default "deadline" if DEFAULT_DEADLINE
  85. default "cfq" if DEFAULT_CFQ
  86. default "noop" if DEFAULT_NOOP
  87. default "fiops" if DEFAULT_FIOPS
  88. default "sio" if DEFAULT_SIO
  89. default "zen" if DEFAULT_ZEN
  90. default "maple" if DEFAULT_MAPLE
  91. config MQ_IOSCHED_DEADLINE
  92. tristate "MQ deadline I/O scheduler"
  93. default y
  94. ---help---
  95. MQ version of the deadline IO scheduler.
  96. config MQ_IOSCHED_KYBER
  97. tristate "Kyber I/O scheduler"
  98. default y
  99. ---help---
  100. The Kyber I/O scheduler is a low-overhead scheduler suitable for
  101. multiqueue and other fast devices. Given target latencies for reads and
  102. synchronous writes, it will self-tune queue depths to achieve that
  103. goal.
  104. config IOSCHED_BFQ
  105. tristate "BFQ I/O scheduler"
  106. default n
  107. ---help---
  108. BFQ I/O scheduler for BLK-MQ. BFQ distributes the bandwidth of
  109. of the device among all processes according to their weights,
  110. regardless of the device parameters and with any workload. It
  111. also guarantees a low latency to interactive and soft
  112. real-time applications. Details in
  113. Documentation/block/bfq-iosched.txt
  114. config BFQ_GROUP_IOSCHED
  115. bool "BFQ hierarchical scheduling support"
  116. depends on IOSCHED_BFQ && BLK_CGROUP
  117. default n
  118. ---help---
  119. Enable hierarchical scheduling in BFQ, using the blkio
  120. (cgroups-v1) or io (cgroups-v2) controller.
  121. endmenu
  122. endif