diff options
Diffstat (limited to 'kernel/sched/proc.c')
-rw-r--r-- | kernel/sched/proc.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/kernel/sched/proc.c b/kernel/sched/proc.c index bb3a6a0b8623..ce5cd4892e43 100644 --- a/kernel/sched/proc.c +++ b/kernel/sched/proc.c | |||
@@ -501,6 +501,18 @@ static void __update_cpu_load(struct rq *this_rq, unsigned long this_load, | |||
501 | sched_avg_update(this_rq); | 501 | sched_avg_update(this_rq); |
502 | } | 502 | } |
503 | 503 | ||
504 | #ifdef CONFIG_SMP | ||
505 | unsigned long get_rq_runnable_load(struct rq *rq) | ||
506 | { | ||
507 | return rq->cfs.runnable_load_avg; | ||
508 | } | ||
509 | #else | ||
510 | unsigned long get_rq_runnable_load(struct rq *rq) | ||
511 | { | ||
512 | return rq->load.weight; | ||
513 | } | ||
514 | #endif | ||
515 | |||
504 | #ifdef CONFIG_NO_HZ_COMMON | 516 | #ifdef CONFIG_NO_HZ_COMMON |
505 | /* | 517 | /* |
506 | * There is no sane way to deal with nohz on smp when using jiffies because the | 518 | * There is no sane way to deal with nohz on smp when using jiffies because the |
@@ -522,7 +534,7 @@ static void __update_cpu_load(struct rq *this_rq, unsigned long this_load, | |||
522 | void update_idle_cpu_load(struct rq *this_rq) | 534 | void update_idle_cpu_load(struct rq *this_rq) |
523 | { | 535 | { |
524 | unsigned long curr_jiffies = ACCESS_ONCE(jiffies); | 536 | unsigned long curr_jiffies = ACCESS_ONCE(jiffies); |
525 | unsigned long load = this_rq->load.weight; | 537 | unsigned long load = get_rq_runnable_load(this_rq); |
526 | unsigned long pending_updates; | 538 | unsigned long pending_updates; |
527 | 539 | ||
528 | /* | 540 | /* |
@@ -568,11 +580,12 @@ void update_cpu_load_nohz(void) | |||
568 | */ | 580 | */ |
569 | void update_cpu_load_active(struct rq *this_rq) | 581 | void update_cpu_load_active(struct rq *this_rq) |
570 | { | 582 | { |
583 | unsigned long load = get_rq_runnable_load(this_rq); | ||
571 | /* | 584 | /* |
572 | * See the mess around update_idle_cpu_load() / update_cpu_load_nohz(). | 585 | * See the mess around update_idle_cpu_load() / update_cpu_load_nohz(). |
573 | */ | 586 | */ |
574 | this_rq->last_load_update_tick = jiffies; | 587 | this_rq->last_load_update_tick = jiffies; |
575 | __update_cpu_load(this_rq, this_rq->load.weight, 1); | 588 | __update_cpu_load(this_rq, load, 1); |
576 | 589 | ||
577 | calc_load_account_active(this_rq); | 590 | calc_load_account_active(this_rq); |
578 | } | 591 | } |