Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Skip to content
Commit 6f701bbe authored by Maria Yu's avatar Maria Yu
Browse files

sched/fair: Avoid unnecessary active load balance



When find busiest group, it will avoid load balance if
it is only 1 task running on src cpu. Consider race when
different cpus do newly idle load balance at the same time,
check src cpu nr_running to avoid unnecessary active load
balance again.
See the race condition example here:
  1) cpu2 have 2 tasks, so cpu2 rq->nr_running == 2 and cfs.h_nr_running
      ==2.
  2) cpu4 and cpu5 doing newly idle load balance at the same time.
  3) cpu4 and cpu5 both see cpu2 sched_load_balance_sg_stats sum_nr_run=2
     so they are both see cpu2 as the busiest rq.
  4) cpu5 did a success migration task from cpu2, so cpu2 only have 1 task
     left, cpu2 rq->nr_running == 1 and cfs.h_nr_running ==1.
  5) cpu4 surely goes to no_move because currently cpu4 only have 1 task
     which is currently running.
  6) and then cpu4 goes here to check if cpu2 need active load balance.

Change-Id: Ia9539a43e9769c4936f06ecfcc11864984c50c29
Signed-off-by: default avatarMaria Yu <aiquny@codeaurora.org>
parent cae1ad55
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment