Skip to content

Commit

Permalink
added several IO Schedulers, Updated, optimized, etc.
Browse files Browse the repository at this point in the history
Signed-off-by: Javier Sayago <admin@lonasdigital.com>
  • Loading branch information
javilonas committed May 30, 2015
1 parent 104f828 commit f7e8ea7
Show file tree
Hide file tree
Showing 21 changed files with 9,498 additions and 8 deletions.
12 changes: 12 additions & 0 deletions arch/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,18 @@
# General architecture dependent options
#

config MOST
bool "Enable Mobile Storage Analyzer (MOST)"
default n
depends on BLK_DEV_IO_TRACE
help
MOST tool improves task name tracing for block io
calls inside blktrace module. Information is collected
by blktrace tool for parsing by blkparse later. MOST
tool adds tracing of filenames for each request.

If unsure, say N.

config OPROFILE
tristate "OProfile system profiling"
depends on PROFILING
Expand Down
33 changes: 31 additions & 2 deletions arch/arm/configs/apq8084_sec_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -140,8 +140,6 @@ CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
CONFIG_MODVERSIONS=y
CONFIG_PARTITION_ADVANCED=y
# CONFIG_IOSCHED_TEST is not set
CONFIG_DEFAULT_ROW=y
CONFIG_ARCH_MSM=y
CONFIG_ARCH_APQ8084=y
CONFIG_MSM_KRAIT_TBB_ABORT_HANDLER=y
Expand Down Expand Up @@ -869,3 +867,34 @@ CONFIG_DEFAULT_WESTWOOD=y
CONFIG_DEFAULT_TCP_CONG="westwood"

CONFIG_FORCE_FAST_CHARGE=y

#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
# CONFIG_IOSCHED_TEST is not set
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_ROW=y
CONFIG_IOSCHED_SIO=y
CONFIG_IOSCHED_ZEN=y
CONFIG_IOSCHED_FIFO=y
CONFIG_IOSCHED_VR=y
CONFIG_IOSCHED_FIOPS=y
CONFIG_IOSCHED_CFQ=y
CONFIG_IOSCHED_BFQ=y
# CONFIG_CGROUP_BFQIO is not set
# CONFIG_DEFAULT_DEADLINE is not set
CONFIG_DEFAULT_ROW=y
# CONFIG_DEFAULT_CFQ is not set
# CONFIG_DEFAULT_BFQ is not set
# CONFIG_DEFAULT_NOOP is not set
# CONFIG_DEFAULT_SIO is not set
# CONFIG_DEFAULT_FIFO is not set
# CONFIG_DEFAULT_ZEN is not set
# CONFIG_DEFAULT_VR is not set
# CONFIG_DEFAULT_FIOPS is not set
CONFIG_DEFAULT_IOSCHED="row"
CONFIG_UNINLINE_SPIN_UNLOCK=y
CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
CONFIG_MUTEX_SPIN_ON_OWNER=y
CONFIG_FREEZER=y
16 changes: 14 additions & 2 deletions arch/arm/configs/lonas_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -261,11 +261,24 @@ CONFIG_IOSCHED_NOOP=y
# CONFIG_IOSCHED_TEST is not set
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_ROW=y
CONFIG_IOSCHED_SIO=y
CONFIG_IOSCHED_ZEN=y
CONFIG_IOSCHED_FIFO=y
CONFIG_IOSCHED_VR=y
CONFIG_IOSCHED_FIOPS=y
CONFIG_IOSCHED_CFQ=y
CONFIG_IOSCHED_BFQ=y
# CONFIG_CGROUP_BFQIO is not set
# CONFIG_DEFAULT_DEADLINE is not set
CONFIG_DEFAULT_ROW=y
# CONFIG_DEFAULT_CFQ is not set
# CONFIG_DEFAULT_BFQ is not set
# CONFIG_DEFAULT_NOOP is not set
# CONFIG_DEFAULT_SIO is not set
# CONFIG_DEFAULT_FIFO is not set
# CONFIG_DEFAULT_ZEN is not set
# CONFIG_DEFAULT_VR is not set
# CONFIG_DEFAULT_FIOPS is not set
CONFIG_DEFAULT_IOSCHED="row"
CONFIG_UNINLINE_SPIN_UNLOCK=y
CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
Expand Down Expand Up @@ -409,6 +422,7 @@ CONFIG_MSM_SMP2P_TEST=y
# CONFIG_MSM_TEST_QMI_CLIENT is not set
# CONFIG_MSM_CPU_FREQ_SET_MIN_MAX is not set
CONFIG_MSM_DEVFREQ_CPUBW=y
CONFIG_FORCE_FAST_CHARGE=y
# CONFIG_MSM_AVS_HW is not set
CONFIG_RTAC=y
# CONFIG_MSM_VREG_SWITCH_INVERTED is not set
Expand Down Expand Up @@ -505,8 +519,6 @@ CONFIG_SEC_THERMISTOR=y
# CONFIG_SAMSUNG_PRODUCT_SHIP is not set
# CONFIG_PLAT_SPEAR is not set

CONFIG_FORCE_FAST_CHARGE=y

#
# Processor Type
#
Expand Down
91 changes: 91 additions & 0 deletions block/Kconfig.iosched
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,45 @@ config IOSCHED_ROW
according to queue priority.
Most suitable for mobile devices.

config IOSCHED_SIO
tristate "Simple I/O scheduler"
default y
---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_ZEN
tristate "Zen I/O scheduler"
default y
---help---
FCFS, dispatches are back-inserted, deadlines ensure fairness.
Should work best with devices where there is no travel delay.

config IOSCHED_FIFO
tristate "Fifo I/O scheduler"
default y
---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_VR
tristate "V(R) I/O scheduler"
default y
---help---
Requests are chosen according to SSTF with a penalty of rev_penalty
for switching head direction.

config IOSCHED_FIOPS
tristate "FIOPS I/O scheduler"
default y
---help---
Requests are chosen according to SSTF with a penalty of rev_penalty
for switching head direction.

config IOSCHED_CFQ
tristate "CFQ I/O scheduler"
default y
Expand All @@ -61,6 +100,27 @@ config CFQ_GROUP_IOSCHED
---help---
Enable group IO scheduling in CFQ.

config IOSCHED_BFQ
tristate "BFQ I/O scheduler"
default n
---help---
The BFQ I/O scheduler tries to distribute bandwidth among
all processes according to their weights.
It 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. If compiled built-in (saying Y here), BFQ can
be configured to support hierarchical scheduling.

config CGROUP_BFQIO
bool "BFQ hierarchical scheduling support"
depends on CGROUPS && IOSCHED_BFQ=y
default n
---help---
Enable hierarchical scheduling in BFQ, using the cgroups
filesystem interface. The name of the subsystem will be
bfqio.

choice
prompt "Default I/O scheduler"
default DEFAULT_CFQ
Expand All @@ -84,17 +144,48 @@ choice
config DEFAULT_CFQ
bool "CFQ" if IOSCHED_CFQ=y

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_NOOP
bool "No-op"

config DEFAULT_SIO
bool "SIO" if IOSCHED_SIO=y

config DEFAULT_FIFO
bool "FIFO" if IOSCHED_FIFO=y

config DEFAULT_ZEN
bool "ZEN" if IOSCHED_ZEN=y

config DEFAULT_VR
bool "VR" if IOSCHED_VR=y

config DEFAULT_FIOPS
bool "FIOPS" if IOSCHED_FIOPS=y

endchoice

config DEFAULT_IOSCHED
string
default "deadline" if DEFAULT_DEADLINE
default "row" if DEFAULT_ROW
default "cfq" if DEFAULT_CFQ
default "bfq" if DEFAULT_BFQ
default "noop" if DEFAULT_NOOP
default "sio" if DEFAULT_SIO
default "fifo" if DEFAULT_FIFO
default "zen" if DEFAULT_ZEN
default "vr" if DEFAULT_VR
default "fiops" if DEFAULT_FIOPS

endmenu

Expand Down
6 changes: 6 additions & 0 deletions block/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,13 @@ obj-$(CONFIG_IOSCHED_NOOP) += noop-iosched.o
obj-$(CONFIG_IOSCHED_DEADLINE) += deadline-iosched.o
obj-$(CONFIG_IOSCHED_ROW) += row-iosched.o
obj-$(CONFIG_IOSCHED_CFQ) += cfq-iosched.o
obj-$(CONFIG_IOSCHED_BFQ) += bfq-iosched.o
obj-$(CONFIG_IOSCHED_TEST) += test-iosched.o
obj-$(CONFIG_IOSCHED_SIO) += sio-iosched.o
obj-$(CONFIG_IOSCHED_FIFO) += fifo-iosched.o
obj-$(CONFIG_IOSCHED_ZEN) += zen-iosched.o
obj-$(CONFIG_IOSCHED_VR) += vr-iosched.o
obj-$(CONFIG_IOSCHED_FIOPS) += fiops-iosched.o

obj-$(CONFIG_BLOCK_COMPAT) += compat_ioctl.o
obj-$(CONFIG_BLK_DEV_INTEGRITY) += blk-integrity.o
Loading

0 comments on commit f7e8ea7

Please sign in to comment.