diff options
Diffstat (limited to 'kernel/sched/fair.c')
-rw-r--r-- | kernel/sched/fair.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 7ecc962e66c9..053a57c6112f 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -4901,6 +4901,7 @@ struct energy_env { int dst_cpu; int energy; int energy_payoff; + struct task_struct *task; struct { int before; int after; @@ -5125,7 +5126,11 @@ static int energy_diff_evaluate(struct energy_env *eenv) int nrg_delta; /* Return energy diff when boost margin is 0 */ +#ifdef CONFIG_CGROUP_SCHEDTUNE + boost = schedtune_taskgroup_boost(eenv->task); +#else boost = get_sysctl_sched_cfs_boost(); +#endif if (boost == 0) return eenv->nrg.diff; @@ -5368,7 +5373,11 @@ schedtune_task_margin(struct task_struct *task) unsigned long utilization; unsigned long margin; +#ifdef CONFIG_CGROUP_SCHEDTUNE + boost = schedtune_taskgroup_boost(task); +#else boost = get_sysctl_sched_cfs_boost(); +#endif if (boost == 0) return 0; @@ -5439,12 +5448,16 @@ static inline bool task_fits_cpu(struct task_struct *p, int cpu) #ifdef CONFIG_SCHED_TUNE static inline unsigned int -schedtune_cpu_margin(unsigned long usage) +schedtune_cpu_margin(int cpu, unsigned long usage) { unsigned int boost; unsigned long margin; +#ifdef CONFIG_CGROUP_SCHEDTUNE + boost = schedtune_cpu_boost(cpu); +#else boost = get_sysctl_sched_cfs_boost(); +#endif if (boost == 0) return 0; margin = schedtune_margin(usage, boost); @@ -5455,7 +5468,7 @@ schedtune_cpu_margin(unsigned long usage) #else /* CONFIG_SCHED_TUNE */ static inline unsigned int -schedtune_cpu_margin(unsigned long usage) +schedtune_cpu_margin(int cpu, unsigned long usage) { return 0; } @@ -5469,7 +5482,7 @@ get_boosted_cpu_usage(int cpu) unsigned long margin; usage = get_cpu_usage(cpu); - margin = schedtune_cpu_margin(usage); + margin = schedtune_cpu_margin(cpu, usage); usage += margin; return usage; @@ -5731,6 +5744,7 @@ static int energy_aware_wake_cpu(struct task_struct *p, int target) .usage_delta = task_utilization(p), .src_cpu = task_cpu(p), .dst_cpu = target_cpu, + .task = p, }; /* Not enough spare capacity on previous cpu */ |