diff options
| author | Pavankumar Kondeti <pkondeti@codeaurora.org> | 2015-04-10 15:10:56 +0530 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:01:59 -0700 |
| commit | c17d7d3c4033e4ccb1022930d88e655230dbc79b (patch) | |
| tree | d73f1e13fd89be32c1ef67e186e2e3c2c9312efa /kernel/sched/sched.h | |
| parent | 37921ca6be838402cbd6cb408a7a3f7aa5cea6f7 (diff) | |
sched: auto adjust the upmigrate and downmigrate thresholds
The load scale factor of a CPU gets boosted when its max freq
is restricted. A task load at the same frequency is scaled higher
than normal under this scenario. This results in tasks migrating
early to the better capacity CPUs and their residency over there
also gets increased as their inflated load would be relatively
higher than than the downmigrate threshold.
Auto adjust the upmigrate and downmigrate thresholds by a factor
equal to rq->max_possible_freq/rq->max_freq of a lower capacity CPU.
If the adjusted upmigrate threshold exceeds the window size, it is
clipped to the window size. If the adjusted downmigrate threshold
decreases the difference between the upmigrate and downmigrate, it is
clipped to a value such that the difference between the modified
and the original thresholds is same.
Change-Id: Ifa70ee5d4ca5fe02789093c7f070c77629907f04
Signed-off-by: Pavankumar Kondeti <pkondeti@codeaurora.org>
Diffstat (limited to 'kernel/sched/sched.h')
| -rw-r--r-- | kernel/sched/sched.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index e485b120ff00..3865b31996b9 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -1001,6 +1001,7 @@ extern unsigned int sched_init_task_load_pelt; extern unsigned int sched_init_task_load_windows; extern u64 scale_load_to_cpu(u64 load, int cpu); extern unsigned int sched_heavy_task; +extern unsigned int up_down_migrate_scale_factor; extern void reset_cpu_hmp_stats(int cpu, int reset_cra); extern void fixup_nr_big_small_task(int cpu, int reset_stats); extern unsigned int task_load(struct task_struct *p); @@ -1009,6 +1010,7 @@ extern void sched_account_irqtime(int cpu, struct task_struct *curr, u64 delta, u64 wallclock); unsigned int cpu_temp(int cpu); extern unsigned int nr_eligible_big_tasks(int cpu); +extern void update_up_down_migrate(void); static inline int capacity(struct rq *rq) { |
