linux/kernel/sched
Dave Kleikamp c249f255aa sched/rt: Minimize rq->lock contention in do_sched_rt_period_timer()
With CONFIG_RT_GROUP_SCHED=y, do_sched_rt_period_timer() sequentially
takes each CPU's rq->lock. On a large, busy system, the cumulative time it
takes to acquire each lock can be excessive, even triggering a watchdog
timeout.

If rt_rq->rt_time and rt_rq->rt_nr_running are both zero, this function does
nothing while holding the lock, so don't bother taking it at all.

Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/a767637b-df85-912f-ba69-c90ee00a3fb6@oracle.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2017-05-23 10:01:34 +02:00
..
Makefile sched/autogroup: Rename auto_group.[ch] to autogroup.[ch] 2017-02-08 09:01:11 +01:00
autogroup.c sched/autogroup: Rename auto_group.[ch] to autogroup.[ch] 2017-02-08 09:01:11 +01:00
autogroup.h sched/headers: Prepare for new header dependencies before moving code to <linux/sched/autogroup.h> 2017-03-02 08:42:28 +01:00
clock.c sched/clock: Print a warning recommending 'tsc=unstable' 2017-05-15 10:15:21 +02:00
completion.c sched/headers: Prepare for new header dependencies before moving code to <linux/sched/debug.h> 2017-03-02 08:42:34 +01:00
core.c sched/core: Allow __sched_setscheduler() in interrupts when PI is not used 2017-05-23 10:01:34 +02:00
cpuacct.c sched/cputime: Convert kcpustat to nsecs 2017-02-01 09:13:47 +01:00
cpuacct.h
cpudeadline.c sched/core: Remove the tsk_cpus_allowed() wrapper 2017-03-02 08:42:24 +01:00
cpudeadline.h
cpufreq.c
cpufreq_schedutil.c cpufreq: schedutil: use now as reference when aggregating shared policy requests 2017-05-05 23:34:32 +02:00
cpupri.c sched/core: Remove the tsk_cpus_allowed() wrapper 2017-03-02 08:42:24 +01:00
cpupri.h
cputime.c sched/cputime: Fix ksoftirqd cputime accounting regression 2017-04-27 09:08:26 +02:00
deadline.c sched/deadline: Remove unnecessary condition in push_dl_task() 2017-05-23 10:01:33 +02:00
debug.c sched/headers: Prepare to move the task_lock()/unlock() APIs to <linux/sched/task.h> 2017-03-02 08:42:38 +01:00
fair.c sched/fair: Fix O(nr_cgroups) in load balance path 2017-05-15 12:07:44 +02:00
features.h sched/topology: Remove FORCE_SD_OVERLAP 2017-05-15 10:15:28 +02:00
idle.c sched/core: Call __schedule() from do_idle() without enabling preemption 2017-05-15 10:09:12 +02:00
idle_task.c
loadavg.c sched/loadavg: Use {READ,WRITE}_ONCE() for sample window 2017-03-16 09:21:01 +01:00
rt.c sched/rt: Minimize rq->lock contention in do_sched_rt_period_timer() 2017-05-23 10:01:34 +02:00
sched-pelt.h sched/fair: Move the PELT constants into a generated header 2017-04-14 10:26:37 +02:00
sched.h sched/topology: Rename sched_group_cpus() 2017-05-15 10:15:34 +02:00
stats.c
stats.h sched/headers: Move cputime functionality from <linux/sched.h> and <linux/cputime.h> into <linux/sched/cputime.h> 2017-03-03 01:45:22 +01:00
stop_task.c
swait.c sched/headers: Prepare to move signal wakeup & sigpending methods from <linux/sched.h> into <linux/sched/signal.h> 2017-03-02 08:42:32 +01:00
topology.c sched/topology: Rename sched_group_cpus() 2017-05-15 10:15:34 +02:00
wait.c sched/headers: fix up header file dependency on <linux/sched/signal.h> 2017-03-08 10:36:03 -08:00