blob: c75899ea134b99e9f3de70c16c4ccf1b0c2fe3c6 [file] [log] [blame]
menu "MTK runqueue statistic calculation and CPU affinity"
config MTK_SCHED_RQAVG_KS
bool "Enable runqueue statistic calculation used in kernel space operation"
depends on SMP
help
MTK ruqueue statistic kernel space CPUfreq governors, e.g., hotplug
TLP estimation,
heavy task detection and
per CPU load for kernel space CPUfreq governors
config MTK_SCHED_RQAVG_US
bool "Enable runqueue staticsic calculation used in user space operation"
depends on SMP && HIGH_RES_TIMERS
help
TLP estimation for user space CPUfreq governors
config MT_CPU_AFFINITY
bool "Enhance CPU affinity in hotplug"
depends on HOTPLUG_CPU
help
The CPU affinity library for Hotplug enhancement is to achieve set CPU
affinity without take care kernel behavior and to avoid affect the original
Linux design.
endmenu
menu "MT load balance and schedule enhancement"
config MT_LOAD_BALANCE_ENHANCEMENT
bool "mt load balance enhancement"
depends on SMP
default n
help
Mediatek aggressive load balance, include 1. wake up load balance,
2. shorten the schedule migration cost and let the idle balance more aggregative,
3. force ignore the cache hot when current rq is idle and src cpu have more
than 2 tasks,
4. migrate heavy load_weight task as long as RT tasks exist in busy cpu
5. when move tasks fil, force migration no matter cache-hot,
use mt_ignore_cachehot_in_idle.
config MT_RT_SCHED
bool "mt RT scheduling enhancement for big.LITTLE"
depends on SCHED_HMP
default n
help
Mediatek big.LITTLE MP Scheduling for RT-class. Linux big.LITTLE MP Scheduling
for RT-class dont aware the different processor power (A15/A7). That would
lead to priority inversion. We want to provide a solution to solve above problem
and let the user experience, and system performance to achieve the best condition
under the consideration with power-saving and following the policy of hotplug and
DVFS (do not UP processor forcedly).
config MT_SCHED_INTEROP
bool "mtk scheduling interopation enhancement"
default n
help
Original Linux Design, RT & CFS do load balance seperatedly,
and let would result in unload balance.
that is, one CPU has more than 2 tasks, however, one CPU is IDLE
We make RT & CFS to check each other and make load more balance.
config MT_SCHED_TRACE
bool "mt scheduling trace, output mtk schedule trace into FTRACE"
default n
help
Provide RT info via ftrace,
mt_sched_printf for scheduling module to output info and
RT scheduling info to ftrace,
including select_task_rq, check_preempt, find_lowest_rq.
Say no if not sure.
config MT_SCHED_DEBUG
bool "mt scheduling log, also output the scheduling log into Kernel log"
depends on MT_SCHED_TRACE
default n
help
MTK scheduling log, add scheduling log into Kernel log.
Including print scheduler debug information at KE and print load balance
information at kernel log.
Say no if not sure.
config MT_DEBUG_PREEMPT
bool "debug preempt, output the preempt enable/disable to FTRACE"
default n
help
Provide preempt debug.
Dump preempt disable/enable backtrace into ftrace.
Dump preempt count in kernel log.
Say no if not sure.
endmenu
menu "MTK Cluster MultiProcessor Scheduler"
config MTK_CPU_TOPOLOGY
bool "MTK cpu topology infrastructure"
depends on (64BIT && OF && SMP) || (ARM_CPU_TOPOLOGY && OF)
default n
help
Say N if you want to build up another wheel
sched_init -> cmp_cputopo_domain_seutp()
rest_init -> fork kernel_init -> kernel_init_freeable ... -> parse_dt_topology
we focus to build up cpu topology and domain before scheduler runs.
config MTK_SCHED_CMP
bool "Enable CMP scheduler"
depends on SMP && SCHED_MC && MTK_CPU_TOPOLOGY
default n
help
CMP Scheduler Enhancement for MTK SoC.
Attempts to introspectively select tasks to optimize
energy and performance.
say no if not sure.
config MTK_SCHED_CMP_TGS
bool "Enable thread group scheduling"
depends on MTK_SCHED_CMP
default n
help
CMP Scheduler Enhancement for MTK SoC.
To utilize the nature of tasks in the same thread group, which eager
to share data (pages) essentially. Balance the same parents tasks to
the same CPU cluster Would get improvement with L2-cache Read-Hit/Miss
and Write.
config MTK_SCHED_CMP_TGS_WAKEUP
bool "Enable thread group scheduling"
depends on MTK_SCHED_CMP_TGS
default n
help
CMP Scheduler Enhancement for MTK SoC.
If the wakeup task is single thread, it will try to find idlest group
and find idlest CPU. Else if the wakeup task has thread group, prefer
the cluster which has idle CPU with most tasks in the same thread group.
endmenu
menu "MTK Heterogenous MultiProcessor Scheduler"
config DISABLE_CPU_SCHED_DOMAIN_BALANCE
bool "(EXPERIMENTAL) Disable CPU level scheduler load-balancing"
help
Disables scheduler load-balancing at CPU sched domain level.
In hmp scheduler, use hmp global balance, a.k.a. force up/down
migration, instead.
If unsure say N here.
config SCHED_HMP
bool "(EXPERIMENTAL) Heterogenous multiprocessor scheduling"
depends on SCHED_MC && FAIR_GROUP_SCHED && !SCHED_AUTOGROUP
help
Experimental scheduler optimizations for heterogeneous platforms.
Attempts to introspectively select task affinity to optimize power
and performance. Basic support for multiple (>2) cpu types is in place,
but it has only been tested with two types of cpus.
There is currently no support for migration of task groups, hence
!SCHED_AUTOGROUP.
config SCHED_HMP_PRIO_FILTER
bool "(EXPERIMENTAL) Filter HMP migrations by task priority"
help
Enables task priority based HMP migration filter. Any task with
a NICE value above the threshold will always be on low-power cpus
with less compute capacity.
If unsure say N here.
config SCHED_HMP_PRIO_FILTER_VAL
int "NICE priority threshold"
default 5
depends on SCHED_HMP_PRIO_FILTER
config HMP_FREQUENCY_INVARIANT_SCALE
bool "(EXPERIMENTAL) Frequency-Invariant Tracked Load for HMP"
depends on !ARCH_SCALE_INVARIANT_CPU_CAPACITY
help
Scales the current load contribution in line with the frequency
of the CPU that the task was executed on.
In this version, we use a simple linear scale derived from the
maximum frequency reported by CPUFreq.
Restricting tracked load to be scaled by the CPU's frequency
represents the consumption of possible compute capacity
(rather than consumption of actual instantaneous capacity as
normal) and allows the HMP migration's simple threshold
migration strategy to interact more predictably with CPUFreq's
asynchronous compute capacity changes.
config HMP_TRACER
bool "(EXPERIMENTAL) Profile HMP scheduler"
help
Profile HMP scheduler
Trace the update of cfs rq, load, and hmp_statisics to evaluate if
the schedule decision is as expected.
If unsure say N here.
config HMP_PACK_SMALL_TASK
bool "(EXPERIMENTAL) Packing Small Tasks"
depends on SCHED_HMP
help
This option enables Packing Small Tasks
Packing small task mechanism is try to limit small tasks to run
on as little CPUs as possible and meke better power efficiency.
If unsure say N here.
config SCHED_HMP_PLUS
bool "(EXPERIMENTAL) Corepilot enhancement"
depends on SCHED_HMP
default n
help
Corepilot hmp enhancement.
1. Do hmp_idle_pull at idle_balance
2. At global balance, consider the tasks in rq, move heaviest/lightest
of first 5 tasks in rq.
3. Enhance down migration rule: Do not migrate task when big core
is idle
endmenu