aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/sched/fair.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index efd664c4926e..4b0e8b8700fd 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -6398,7 +6398,7 @@ static inline void update_sg_lb_stats(struct lb_env *env,
6398 bool *overload) 6398 bool *overload)
6399{ 6399{
6400 unsigned long load; 6400 unsigned long load;
6401 int i; 6401 int i, nr_running;
6402 6402
6403 memset(sgs, 0, sizeof(*sgs)); 6403 memset(sgs, 0, sizeof(*sgs));
6404 6404
@@ -6415,7 +6415,8 @@ static inline void update_sg_lb_stats(struct lb_env *env,
6415 sgs->group_util += cpu_util(i); 6415 sgs->group_util += cpu_util(i);
6416 sgs->sum_nr_running += rq->cfs.h_nr_running; 6416 sgs->sum_nr_running += rq->cfs.h_nr_running;
6417 6417
6418 if (rq->nr_running > 1) 6418 nr_running = rq->nr_running;
6419 if (nr_running > 1)
6419 *overload = true; 6420 *overload = true;
6420 6421
6421#ifdef CONFIG_NUMA_BALANCING 6422#ifdef CONFIG_NUMA_BALANCING
@@ -6423,7 +6424,10 @@ static inline void update_sg_lb_stats(struct lb_env *env,
6423 sgs->nr_preferred_running += rq->nr_preferred_running; 6424 sgs->nr_preferred_running += rq->nr_preferred_running;
6424#endif 6425#endif
6425 sgs->sum_weighted_load += weighted_cpuload(i); 6426 sgs->sum_weighted_load += weighted_cpuload(i);
6426 if (idle_cpu(i)) 6427 /*
6428 * No need to call idle_cpu() if nr_running is not 0
6429 */
6430 if (!nr_running && idle_cpu(i))
6427 sgs->idle_cpus++; 6431 sgs->idle_cpus++;
6428 } 6432 }
6429 6433