| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 |
- 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 don’t 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 MTK_COMPAT
- bool "mt fast mode switching enhancement"
- depends on COMPAT
- default n
- help
- Current design will save/restore all registers in mode switching.
- However, when kernel layer is 64-bits and application layer is 32 bits,
- the 32-bits application use a part of registers.
- Save/restore all register will consume CPU cycles.
- To avoid the unnecessary save/restore registers behavior,
- we propose fast mode switching method to optimize the mode switching
- 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 parent’s 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
|