Kconfig.iosched 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. if BLOCK
  2. menu "IO Schedulers"
  3. config IOSCHED_NOOP
  4. bool
  5. default y
  6. ---help---
  7. The no-op I/O scheduler is a minimal scheduler that does basic merging
  8. and sorting. Its main uses include non-disk based block devices like
  9. memory devices, and specialised software or hardware environments
  10. that do their own scheduling and require only minimal assistance from
  11. the kernel.
  12. config IOSCHED_TEST
  13. tristate "Test I/O scheduler"
  14. depends on DEBUG_FS
  15. default m
  16. ---help---
  17. The test I/O scheduler is a duplicate of the noop scheduler with
  18. addition of test utlity.
  19. It allows testing a block device by dispatching specific requests
  20. according to the test case and declare PASS/FAIL according to the
  21. requests completion error code.
  22. config IOSCHED_DEADLINE
  23. tristate "Deadline I/O scheduler"
  24. default y
  25. ---help---
  26. The deadline I/O scheduler is simple and compact. It will provide
  27. CSCAN service with FIFO expiration of requests, switching to
  28. a new point in the service tree and doing a batch of IO from there
  29. in case of expiry.
  30. config IOSCHED_ROW
  31. tristate "ROW I/O scheduler"
  32. default y
  33. ---help---
  34. The ROW I/O scheduler gives priority to READ requests over the
  35. WRITE requests when dispatching, without starving WRITE requests.
  36. Requests are kept in priority queues. Dispatching is done in a RR
  37. manner when the dispatch quantum for each queue is calculated
  38. according to queue priority.
  39. Most suitable for mobile devices.
  40. config IOSCHED_CFQ
  41. tristate "CFQ I/O scheduler"
  42. # If BLK_CGROUP is a module, CFQ has to be built as module.
  43. depends on (BLK_CGROUP=m && m) || !BLK_CGROUP || BLK_CGROUP=y
  44. default y
  45. ---help---
  46. The CFQ I/O scheduler tries to distribute bandwidth equally
  47. among all processes in the system. It should provide a fair
  48. and low latency working environment, suitable for both desktop
  49. and server systems.
  50. This is the default I/O scheduler.
  51. Note: If BLK_CGROUP=m, then CFQ can be built only as module.
  52. config CFQ_GROUP_IOSCHED
  53. bool "CFQ Group Scheduling support"
  54. depends on IOSCHED_CFQ && BLK_CGROUP
  55. default n
  56. ---help---
  57. Enable group IO scheduling in CFQ.
  58. config IOSCHED_BFQ
  59. tristate "BFQ I/O scheduler"
  60. depends on EXPERIMENTAL
  61. default n
  62. ---help---
  63. The BFQ I/O scheduler tries to distribute bandwidth among
  64. all processes according to their weights.
  65. It aims at distributing the bandwidth as desired, independently of
  66. the disk parameters and with any workload. It also tries to
  67. guarantee low latency to interactive and soft real-time
  68. applications. If compiled built-in (saying Y here), BFQ can
  69. be configured to support hierarchical scheduling.
  70. config CGROUP_BFQIO
  71. bool "BFQ hierarchical scheduling support"
  72. depends on CGROUPS && IOSCHED_BFQ=y
  73. default n
  74. ---help---
  75. Enable hierarchical scheduling in BFQ, using the cgroups
  76. filesystem interface. The name of the subsystem will be
  77. bfqio.
  78. choice
  79. prompt "Default I/O scheduler"
  80. default DEFAULT_CFQ
  81. help
  82. Select the I/O scheduler which will be used by default for all
  83. block devices.
  84. config DEFAULT_DEADLINE
  85. bool "Deadline" if IOSCHED_DEADLINE=y
  86. config DEFAULT_ROW
  87. bool "ROW" if IOSCHED_ROW=y
  88. help
  89. The ROW I/O scheduler gives priority to READ requests
  90. over the WRITE requests when dispatching, without starving
  91. WRITE requests. Requests are kept in priority queues.
  92. Dispatching is done in a RR manner when the dispatch quantum
  93. for each queue is defined according to queue priority.
  94. Most suitable for mobile devices.
  95. config DEFAULT_CFQ
  96. bool "CFQ" if IOSCHED_CFQ=y
  97. config DEFAULT_BFQ
  98. bool "BFQ" if IOSCHED_BFQ=y
  99. help
  100. Selects BFQ as the default I/O scheduler which will be
  101. used by default for all block devices.
  102. The BFQ I/O scheduler aims at distributing the bandwidth
  103. as desired, independently of the disk parameters and with
  104. any workload. It also tries to guarantee low latency to
  105. interactive and soft real-time applications.
  106. config DEFAULT_NOOP
  107. bool "No-op"
  108. endchoice
  109. config DEFAULT_IOSCHED
  110. string
  111. default "deadline" if DEFAULT_DEADLINE
  112. default "row" if DEFAULT_ROW
  113. default "cfq" if DEFAULT_CFQ
  114. default "bfq" if DEFAULT_BFQ
  115. default "noop" if DEFAULT_NOOP
  116. endmenu
  117. endif