diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-05-16 17:47:16 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-05-16 17:47:16 -0400 |
commit | 825a3b2605c3aa193e0075d0f9c72e33c17ab16a (patch) | |
tree | e8665c4cc20076ae53165475839d36b4bc641cd3 /kernel/time | |
parent | cf6ed9a6682d3f171cf9550d4bbe0ef31b768a7e (diff) | |
parent | ef0491ea17f8019821c7e9c8e801184ecf17f85a (diff) |
Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull scheduler updates from Ingo Molnar:
- massive CPU hotplug rework (Thomas Gleixner)
- improve migration fairness (Peter Zijlstra)
- CPU load calculation updates/cleanups (Yuyang Du)
- cpufreq updates (Steve Muckle)
- nohz optimizations (Frederic Weisbecker)
- switch_mm() micro-optimization on x86 (Andy Lutomirski)
- ... lots of other enhancements, fixes and cleanups.
* 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (66 commits)
ARM: Hide finish_arch_post_lock_switch() from modules
sched/core: Provide a tsk_nr_cpus_allowed() helper
sched/core: Use tsk_cpus_allowed() instead of accessing ->cpus_allowed
sched/loadavg: Fix loadavg artifacts on fully idle and on fully loaded systems
sched/fair: Correct unit of load_above_capacity
sched/fair: Clean up scale confusion
sched/nohz: Fix affine unpinned timers mess
sched/fair: Fix fairness issue on migration
sched/core: Kill sched_class::task_waking to clean up the migration logic
sched/fair: Prepare to fix fairness problems on migration
sched/fair: Move record_wakee()
sched/core: Fix comment typo in wake_q_add()
sched/core: Remove unused variable
sched: Make hrtick_notifier an explicit call
sched/fair: Make ilb_notifier an explicit call
sched/hotplug: Make activate() the last hotplug step
sched/hotplug: Move migration CPU_DYING to sched_cpu_dying()
sched/migration: Move CPU_ONLINE into scheduler state
sched/migration: Move calc_load_migrate() into CPU_DYING
sched/migration: Move prepare transition to SCHED_STARTING state
...
Diffstat (limited to 'kernel/time')
-rw-r--r-- | kernel/time/tick-sched.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c index 3daa49ff0719..536ada80f6dd 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c | |||
@@ -776,6 +776,7 @@ static ktime_t tick_nohz_stop_sched_tick(struct tick_sched *ts, | |||
776 | if (!ts->tick_stopped) { | 776 | if (!ts->tick_stopped) { |
777 | nohz_balance_enter_idle(cpu); | 777 | nohz_balance_enter_idle(cpu); |
778 | calc_load_enter_idle(); | 778 | calc_load_enter_idle(); |
779 | cpu_load_update_nohz_start(); | ||
779 | 780 | ||
780 | ts->last_tick = hrtimer_get_expires(&ts->sched_timer); | 781 | ts->last_tick = hrtimer_get_expires(&ts->sched_timer); |
781 | ts->tick_stopped = 1; | 782 | ts->tick_stopped = 1; |
@@ -802,11 +803,11 @@ out: | |||
802 | return tick; | 803 | return tick; |
803 | } | 804 | } |
804 | 805 | ||
805 | static void tick_nohz_restart_sched_tick(struct tick_sched *ts, ktime_t now, int active) | 806 | static void tick_nohz_restart_sched_tick(struct tick_sched *ts, ktime_t now) |
806 | { | 807 | { |
807 | /* Update jiffies first */ | 808 | /* Update jiffies first */ |
808 | tick_do_update_jiffies64(now); | 809 | tick_do_update_jiffies64(now); |
809 | update_cpu_load_nohz(active); | 810 | cpu_load_update_nohz_stop(); |
810 | 811 | ||
811 | calc_load_exit_idle(); | 812 | calc_load_exit_idle(); |
812 | touch_softlockup_watchdog_sched(); | 813 | touch_softlockup_watchdog_sched(); |
@@ -833,7 +834,7 @@ static void tick_nohz_full_update_tick(struct tick_sched *ts) | |||
833 | if (can_stop_full_tick(ts)) | 834 | if (can_stop_full_tick(ts)) |
834 | tick_nohz_stop_sched_tick(ts, ktime_get(), cpu); | 835 | tick_nohz_stop_sched_tick(ts, ktime_get(), cpu); |
835 | else if (ts->tick_stopped) | 836 | else if (ts->tick_stopped) |
836 | tick_nohz_restart_sched_tick(ts, ktime_get(), 1); | 837 | tick_nohz_restart_sched_tick(ts, ktime_get()); |
837 | #endif | 838 | #endif |
838 | } | 839 | } |
839 | 840 | ||
@@ -1024,7 +1025,7 @@ void tick_nohz_idle_exit(void) | |||
1024 | tick_nohz_stop_idle(ts, now); | 1025 | tick_nohz_stop_idle(ts, now); |
1025 | 1026 | ||
1026 | if (ts->tick_stopped) { | 1027 | if (ts->tick_stopped) { |
1027 | tick_nohz_restart_sched_tick(ts, now, 0); | 1028 | tick_nohz_restart_sched_tick(ts, now); |
1028 | tick_nohz_account_idle_ticks(ts); | 1029 | tick_nohz_account_idle_ticks(ts); |
1029 | } | 1030 | } |
1030 | 1031 | ||