提交 b759caa1 编写于 作者: Q Qais Yousef 提交者: Peter Zijlstra

sched/uclamp: Make select_idle_capacity() use util_fits_cpu()

Use the new util_fits_cpu() to ensure migration margin and capacity
pressure are taken into account correctly when uclamp is being used
otherwise we will fail to consider CPUs as fitting in scenarios where
they should.

Fixes: b4c9c9f1 ("sched/fair: Prefer prev cpu in asymmetric wakeup path")
Signed-off-by: NQais Yousef <qais.yousef@arm.com>
Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/20220804143609.515789-5-qais.yousef@arm.com
上级 24422603
...@@ -6779,21 +6779,23 @@ static int select_idle_cpu(struct task_struct *p, struct sched_domain *sd, bool ...@@ -6779,21 +6779,23 @@ static int select_idle_cpu(struct task_struct *p, struct sched_domain *sd, bool
static int static int
select_idle_capacity(struct task_struct *p, struct sched_domain *sd, int target) select_idle_capacity(struct task_struct *p, struct sched_domain *sd, int target)
{ {
unsigned long task_util, best_cap = 0; unsigned long task_util, util_min, util_max, best_cap = 0;
int cpu, best_cpu = -1; int cpu, best_cpu = -1;
struct cpumask *cpus; struct cpumask *cpus;
cpus = this_cpu_cpumask_var_ptr(select_rq_mask); cpus = this_cpu_cpumask_var_ptr(select_rq_mask);
cpumask_and(cpus, sched_domain_span(sd), p->cpus_ptr); cpumask_and(cpus, sched_domain_span(sd), p->cpus_ptr);
task_util = uclamp_task_util(p); task_util = task_util_est(p);
util_min = uclamp_eff_value(p, UCLAMP_MIN);
util_max = uclamp_eff_value(p, UCLAMP_MAX);
for_each_cpu_wrap(cpu, cpus, target) { for_each_cpu_wrap(cpu, cpus, target) {
unsigned long cpu_cap = capacity_of(cpu); unsigned long cpu_cap = capacity_of(cpu);
if (!available_idle_cpu(cpu) && !sched_idle_cpu(cpu)) if (!available_idle_cpu(cpu) && !sched_idle_cpu(cpu))
continue; continue;
if (fits_capacity(task_util, cpu_cap)) if (util_fits_cpu(task_util, util_min, util_max, cpu))
return cpu; return cpu;
if (cpu_cap > best_cap) { if (cpu_cap > best_cap) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册