android_kernel_motorola_sm6375/kernel
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Steven Rostedt e8fa136262 sched: add RT task pushing
This patch adds an algorithm to push extra RT tasks off a run queue to
other CPU runqueues.

When more than one RT task is added to a run queue, this algorithm takes
an assertive approach to push the RT tasks that are not running onto other
run queues that have lower priority.  The way this works is that the highest
RT task that is not running is looked at and we examine the runqueues on
the CPUS for that tasks affinity mask. We find the runqueue with the lowest
prio in the CPU affinity of the picked task, and if it is lower in prio than
the picked task, we push the task onto that CPU runqueue.

We continue pushing RT tasks off the current runqueue until we don't push any
more.  The algorithm stops when the next highest RT task can't preempt any
other processes on other CPUS.

TODO: The algorithm may stop when there are still RT tasks that can be
 migrated. Specifically, if the highest non running RT task CPU affinity
 is restricted to CPUs that are running higher priority tasks, there may
 be a lower priority task queued that has an affinity with a CPU that is
 running a lower priority task that it could be migrated to.  This
 patch set does not address this issue.

Note: checkpatch reveals two over 80 character instances. I'm not sure
 that breaking them up will help visually, so I left them as is.

Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2008-01-25 21:08:05 +01:00
..
irq genirq: revert lazy irq disable for simple irqs 2007-12-18 18:05:58 +01:00
power driver core: make /sys/power a kobject 2008-01-24 20:40:25 -08:00
time Driver core: change sysdev classes to use dynamic kobject names 2008-01-24 20:40:40 -08:00
.gitignore
acct.c acct: real_parent ppid 2008-01-07 14:55:37 -08:00
audit.c
audit.h
audit_tree.c
auditfilter.c
auditsc.c
capability.c
cgroup.c
cgroup_debug.c
compat.c
configs.c
cpu.c cpu-hotplug: replace per-subsystem mutexes with get_online_cpus() 2008-01-25 21:08:02 +01:00
cpuset.c cpu-hotplug: replace lock_cpu_hotplug() with get_online_cpus() 2008-01-25 21:08:02 +01:00
delayacct.c
dma.c
exec_domain.c
exit.c
extable.c
fork.c softlockup: automatically detect hung TASK_UNINTERRUPTIBLE tasks 2008-01-25 21:08:02 +01:00
futex.c futex: Prevent stale futex owner when interrupted/timeout 2008-01-08 16:21:39 -08:00
futex_compat.c
hrtimer.c hrtimer: fix section mismatch 2008-01-21 19:39:41 -08:00
itimer.c
kallsyms.c
Kconfig.hz
Kconfig.instrumentation
Kconfig.preempt
kexec.c vmcoreinfo: add the array length of "free_list" for filtering free pages 2008-01-08 16:10:36 -08:00
kfifo.c
kmod.c Fix unbalanced helper_lock in kernel/kmod.c 2008-01-17 15:38:59 -08:00
kprobes.c
ksysfs.c Kobject: convert remaining kobject_unregister() to kobject_put() 2008-01-24 20:40:40 -08:00
kthread.c
latency.c
lockdep.c softlockup: automatically detect hung TASK_UNINTERRUPTIBLE tasks 2008-01-25 21:08:02 +01:00
lockdep_internals.h
lockdep_proc.c
Makefile
marker.c
module.c Kobject: convert remaining kobject_unregister() to kobject_put() 2008-01-24 20:40:40 -08:00
mutex-debug.c
mutex-debug.h
mutex.c
mutex.h
notifier.c
ns_cgroup.c
nsproxy.c
panic.c debug: add end-of-oops marker 2007-12-20 15:01:17 +01:00
params.c Modules: remove unneeded release function 2008-01-24 20:40:39 -08:00
pid.c
posix-cpu-timers.c
posix-timers.c
printk.c sched: remove printk_clock() 2008-01-25 21:07:59 +01:00
profile.c
ptrace.c ptrace: Call arch_ptrace_attach() when request=PTRACE_TRACEME 2008-01-25 08:31:39 +01:00
rcupdate.c rcu: fix section mismatch 2008-01-22 09:17:48 -08:00
rcutorture.c cpu-hotplug: replace lock_cpu_hotplug() with get_online_cpus() 2008-01-25 21:08:02 +01:00
relay.c
resource.c
rtmutex-debug.c
rtmutex-debug.h
rtmutex-tester.c Driver core: change sysdev classes to use dynamic kobject names 2008-01-24 20:40:40 -08:00
rtmutex.c
rtmutex.h
rtmutex_common.h
rwsem.c sched: mark rwsem functions as __sched for wchan/profiling 2007-12-18 15:21:13 +01:00
sched.c sched: add RT task pushing 2008-01-25 21:08:05 +01:00
sched_debug.c sched: fix gcc warnings 2007-12-30 17:24:35 +01:00
sched_fair.c sched: group scheduler, fix fairness of cpu bandwidth allocation for task groups 2008-01-25 21:08:00 +01:00
sched_idletask.c
sched_rt.c sched: add RT task pushing 2008-01-25 21:08:05 +01:00
sched_stats.h
seccomp.c
signal.c
softirq.c
softlockup.c softlockup: automatically detect hung TASK_UNINTERRUPTIBLE tasks 2008-01-25 21:08:02 +01:00
spinlock.c
srcu.c
stacktrace.c
stop_machine.c cpu-hotplug: replace lock_cpu_hotplug() with get_online_cpus() 2008-01-25 21:08:02 +01:00
sys.c
sys_ni.c
sysctl.c softlockup: automatically detect hung TASK_UNINTERRUPTIBLE tasks 2008-01-25 21:08:02 +01:00
sysctl_check.c sysctl: fix ax25 checks 2007-12-17 19:28:17 -08:00
taskstats.c
time.c
timer.c timer: fix section mismatch 2008-01-21 19:39:41 -08:00
tsacct.c
uid16.c
user.c Kobject: convert kernel/user.c to use kobject_init/add_ng() 2008-01-24 20:40:31 -08:00
user_namespace.c
utsname.c
utsname_sysctl.c
wait.c
workqueue.c cpu-hotplug: replace per-subsystem mutexes with get_online_cpus() 2008-01-25 21:08:02 +01:00