diff options
-rw-r--r-- | kernel/sched/fair.c | 10 |
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 | ||