Kconfig.iosched 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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_CFQ
  22. tristate "CFQ I/O scheduler"
  23. default y
  24. ---help---
  25. The CFQ I/O scheduler tries to distribute bandwidth equally
  26. among all processes in the system. It should provide a fair
  27. and low latency working environment, suitable for both desktop
  28. and server systems.
  29. This is the default I/O scheduler.
  30. config CFQ_GROUP_IOSCHED
  31. bool "CFQ Group Scheduling support"
  32. depends on IOSCHED_CFQ && BLK_CGROUP
  33. default n
  34. ---help---
  35. Enable group IO scheduling in CFQ.
  36. choice
  37. prompt "Default I/O scheduler"
  38. default DEFAULT_CFQ
  39. help
  40. Select the I/O scheduler which will be used by default for all
  41. block devices.
  42. config DEFAULT_DEADLINE
  43. bool "Deadline" if IOSCHED_DEADLINE=y
  44. config DEFAULT_CFQ
  45. bool "CFQ" if IOSCHED_CFQ=y
  46. config DEFAULT_NOOP
  47. bool "No-op"
  48. endchoice
  49. config DEFAULT_IOSCHED
  50. string
  51. default "deadline" if DEFAULT_DEADLINE
  52. default "cfq" if DEFAULT_CFQ
  53. default "noop" if DEFAULT_NOOP
  54. config MQ_IOSCHED_DEADLINE
  55. tristate "MQ deadline I/O scheduler"
  56. default y
  57. ---help---
  58. MQ version of the deadline IO scheduler.
  59. config MQ_IOSCHED_KYBER
  60. tristate "Kyber I/O scheduler"
  61. default y
  62. ---help---
  63. The Kyber I/O scheduler is a low-overhead scheduler suitable for
  64. multiqueue and other fast devices. Given target latencies for reads and
  65. synchronous writes, it will self-tune queue depths to achieve that
  66. goal.
  67. config IOSCHED_BFQ
  68. tristate "BFQ I/O scheduler"
  69. default n
  70. ---help---
  71. BFQ I/O scheduler for BLK-MQ. BFQ distributes the bandwidth of
  72. of the device among all processes according to their weights,
  73. regardless of the device parameters and with any workload. It
  74. also guarantees a low latency to interactive and soft
  75. real-time applications. Details in
  76. Documentation/block/bfq-iosched.txt
  77. config BFQ_GROUP_IOSCHED
  78. bool "BFQ hierarchical scheduling support"
  79. depends on IOSCHED_BFQ && BLK_CGROUP
  80. default n
  81. ---help---
  82. Enable hierarchical scheduling in BFQ, using the blkio
  83. (cgroups-v1) or io (cgroups-v2) controller.
  84. endmenu
  85. endif