aboutsummaryrefslogtreecommitdiff
path: root/kernel/sched/fair.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/sched/fair.c')
-rw-r--r--kernel/sched/fair.c20
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 */