android_kernel_samsung_univ.../block/Kconfig.iosched
Joe Maples d90a42c430 block: Add Maple I/O Scheduler
Signed-off-by: Joe Maples <joe@frap129.org>
2018-07-19 15:28:40 +02:00

212 lines
5.9 KiB
Plaintext

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_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 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_FIFO
bool
default n
---help---
Fifo is similar to no-op I/O scheduler and it's a minimal scheduler that does basic merging
and sorting. Ported from: https://github.com/AndroidDeveloperAlliance/ZenKernel_TUNA/blob/master/block/fifo-iosched.c
config IOSCHED_FIOPS
tristate "IOPS based I/O scheduler"
default n
---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 n
---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 IOSCHED_SIOPLUS
tristate "Simple I/O scheduler plus"
default n
---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 IOSCHED_TRIPNDROID
tristate "Tripndroid"
default n
---help---
The Trip N Droid scheduler
config IOSCHED_VR
tristate "V(R) I/O scheduler"
default n
---help---
Requests are chosen according to SSTF with a penalty of rev_penalty
for switching head direction.
config IOSCHED_ZEN
tristate "Zen I/O scheduler"
default n
---help---
FCFS, dispatches are back-inserted, deadlines ensure fairness.
Should work best with devices where there is no travel delay.
config IOSCHED_ROW
tristate "ROW I/O scheduler"
default n
---help---
The ROW I/O scheduler gives priority to READ requests over the
WRITE requests when dispatching, without starving WRITE requests.
Requests are kept in priority queues. Dispatching is done in a RR
manner when the dispatch quantum for each queue is calculated
according to queue priority.
Most suitable for mobile devices.
config IOSCHED_BFQ
tristate "BFQ I/O scheduler"
default n
---help---
The BFQ I/O scheduler distributes bandwidth 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 IOSCHED_MAPLE
tristate "Maple I/O scheduler"
default n
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.
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_FIFO
bool "fifo" if IOSCHED_FIFO=y
config DEFAULT_FIOPS
bool "FIOPS" if IOSCHED_FIOPS=y
config DEFAULT_NOOP
bool "No-op"
config DEFAULT_SIO
bool "SIO" if IOSCHED_SIO=y
config DEFAULT_SIOPLUS
bool "SIOPLUS" if IOSCHED_SIOPLUS=y
config DEFAULT_TRIPNDROID
bool "TRIPNDROID" if IOSCHED_TRIPNDROID=y
config DEFAULT_VR
bool "V(R)" if IOSCHED_VR=y
config DEFAULT_ZEN
bool "ZEN" if IOSCHED_ZEN=y
config DEFAULT_ROW
bool "ROW" if IOSCHED_ROW=y
help
The ROW I/O scheduler gives priority to READ requests
over the WRITE requests when dispatching, without starving
WRITE requests. Requests are kept in priority queues.
Dispatching is done in a RR manner when the dispatch quantum
for each queue is defined according to queue priority.
Most suitable for mobile devices.
config DEFAULT_BFQ
bool "BFQ" if IOSCHED_BFQ=y
help
Selects BFQ as the default I/O scheduler which will be
used by default for all block devices.
The BFQ I/O scheduler aims at distributing the bandwidth
as desired, independently of the disk parameters and with
any workload. It also tries to guarantee low latency to
interactive and soft real-time applications.
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 "fifo" if DEFAULT_FIFO
default "fiops" if DEFAULT_FIOPS
default "sio" if DEFAULT_SIO
default "sioplus" if DEFAULT_SIOPLUS
default "tripndroid" if DEFAULT_TRIPNDROID
default "vr" if DEFAULT_VR
default "zen" if DEFAULT_ZEN
default "row" if DEFAULT_ROW
default "bfq" if DEFAULT_BFQ
default "maple" if DEFAULT_MAPLE
endmenu
endif