mirror of https://gitee.com/openkylin/linux.git
sched/fair: Move avg_scan_cost calculations under SIS_PROP
As noted by Vincent Guittot, avg_scan_costs are calculated for SIS_PROP even if SIS_PROP is disabled. Move the time calculations under a SIS_PROP check and while we are at it, exclude the cost of initialising the CPU mask from the average scan cost. Signed-off-by: Mel Gorman <mgorman@techsingularity.net> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Reviewed-by: Vincent Guittot <vincent.guittot@linaro.org> Link: https://lkml.kernel.org/r/20210125085909.4600-3-mgorman@techsingularity.net
This commit is contained in:
parent
e6e0dc2d54
commit
bae4ec1364
|
@ -6166,6 +6166,8 @@ static int select_idle_cpu(struct task_struct *p, struct sched_domain *sd, int t
|
|||
if (!this_sd)
|
||||
return -1;
|
||||
|
||||
cpumask_and(cpus, sched_domain_span(sd), p->cpus_ptr);
|
||||
|
||||
if (sched_feat(SIS_PROP)) {
|
||||
u64 avg_cost, avg_idle, span_avg;
|
||||
|
||||
|
@ -6181,12 +6183,10 @@ static int select_idle_cpu(struct task_struct *p, struct sched_domain *sd, int t
|
|||
nr = div_u64(span_avg, avg_cost);
|
||||
else
|
||||
nr = 4;
|
||||
|
||||
time = cpu_clock(this);
|
||||
}
|
||||
|
||||
time = cpu_clock(this);
|
||||
|
||||
cpumask_and(cpus, sched_domain_span(sd), p->cpus_ptr);
|
||||
|
||||
for_each_cpu_wrap(cpu, cpus, target) {
|
||||
if (!--nr)
|
||||
return -1;
|
||||
|
@ -6194,8 +6194,10 @@ static int select_idle_cpu(struct task_struct *p, struct sched_domain *sd, int t
|
|||
break;
|
||||
}
|
||||
|
||||
time = cpu_clock(this) - time;
|
||||
update_avg(&this_sd->avg_scan_cost, time);
|
||||
if (sched_feat(SIS_PROP)) {
|
||||
time = cpu_clock(this) - time;
|
||||
update_avg(&this_sd->avg_scan_cost, time);
|
||||
}
|
||||
|
||||
return cpu;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue