• V
    sched/core: Fix find_idlest_group() for fork · f519a3f1
    Vincent Guittot 提交于
    During fork, the utilization of a task is init once the rq has been
    selected because the current utilization level of the rq is used to
    set the utilization of the fork task. As the task's utilization is
    still 0 at this step of the fork sequence, it doesn't make sense to
    look for some spare capacity that can fit the task's utilization.
    Furthermore, I can see perf regressions for the test:
    
       hackbench -P -g 1
    
    because the least loaded policy is always bypassed and tasks are not
    spread during fork.
    
    With this patch and the fix below, we are back to same performances as
    for v4.8. The fix below is only a temporary one used for the test
    until a smarter solution is found because we can't simply remove the
    test which is useful for others benchmarks
    
    | @@ -5708,13 +5708,6 @@ static int select_idle_cpu(struct task_struct *p, struct sched_domain *sd, int t
    |
    |	avg_cost = this_sd->avg_scan_cost;
    |
    | -	/*
    | -	 * Due to large variance we need a large fuzz factor; hackbench in
    | -	 * particularly is sensitive here.
    | -	 */
    | -	if ((avg_idle / 512) < avg_cost)
    | -		return -1;
    | -
    |	time = local_clock();
    |
    |	for_each_cpu_wrap(cpu, sched_domain_span(sd), target, wrap) {
    Tested-by: NMatt Fleming <matt@codeblueprint.co.uk>
    Signed-off-by: NVincent Guittot <vincent.guittot@linaro.org>
    Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: NMatt Fleming <matt@codeblueprint.co.uk>
    Acked-by: NMorten Rasmussen <morten.rasmussen@arm.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: dietmar.eggemann@arm.com
    Cc: kernellwp@gmail.com
    Cc: umgwanakikbuti@gmail.com
    Cc: yuyang.du@intel.comc
    Link: http://lkml.kernel.org/r/1481216215-24651-2-git-send-email-vincent.guittot@linaro.orgSigned-off-by: NIngo Molnar <mingo@kernel.org>
    f519a3f1
fair.c 246.1 KB