Gregory Haskins
318e0893ce
sched: pre-route RT tasks on wakeup
...
In the original patch series that Steven Rostedt and I worked on together,
we both took different approaches to low-priority wakeup path. I utilized
"pre-routing" (push the task away to a less important RQ before activating)
approach, while Steve utilized a "post-routing" approach. The advantage of
my approach is that you avoid the overhead of a wasted activate/deactivate
cycle and peripherally related burdens. The advantage of Steve's method is
that it neatly solves an issue preventing a "pull" optimization from being
deployed.
In the end, we ended up deploying Steve's idea. But it later dawned on me
that we could get the best of both worlds by deploying both ideas together,
albeit slightly modified.
The idea is simple: Use a "light-weight" lookup for pre-routing, since we
only need to approximate a good home for the task. And we also retain the
post-routing push logic to clean up any inaccuracies caused by a condition
of "priority mistargeting" caused by the lightweight lookup. Most of the
time, the pre-routing should work and yield lower overhead. In the cases
where it doesnt, the post-router will bat cleanup.
Signed-off-by: Gregory Haskins <ghaskins@novell.com>
Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2008-01-25 21:08:10 +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
[PATCH] audit: watching subtrees
2007-10-21 02:37:45 -04:00
audit.h
[PATCH] audit: watching subtrees
2007-10-21 02:37:45 -04:00
audit_tree.c
[PATCH] audit: watching subtrees
2007-10-21 02:37:45 -04:00
auditfilter.c
[PATCH] audit: watching subtrees
2007-10-21 02:37:45 -04:00
auditsc.c
auditsc: fix kernel-doc param warnings
2007-10-22 19:40:02 -07:00
capability.c
Uninline find_pid etc set of functions
2007-10-19 11:53:41 -07:00
cgroup.c
Improve cgroup printks
2007-11-14 18:45:37 -08:00
cgroup_debug.c
Task Control Groups: simple task cgroup debug info subsystem
2007-10-19 11:53:36 -07:00
compat.c
Merge ssh://master.kernel.org/pub/scm/linux/kernel/git/tglx/linux-2.6-hrt
2007-10-18 15:12:41 -07:00
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
Add scaled time to taskstats based process accounting
2007-10-18 14:37:28 -07:00
dma.c
whitespace fixes: DMA channel allocator
2007-10-18 14:37:24 -07:00
exec_domain.c
whitespace fixes: execution domains
2007-10-18 14:37:26 -07:00
exit.c
wait_task_stopped(): pass correct exit_code to wait_noreap_copyout()
2007-11-29 09:24:55 -08:00
extable.c
fork.c
sched: add RT-balance cpu-weight
2008-01-25 21:08:07 +01:00
futex.c
futex: Prevent stale futex owner when interrupted/timeout
2008-01-08 16:21:39 -08:00
futex_compat.c
[FUTEX] Fix address computation in compat code.
2007-11-09 16:13:08 -08:00
hrtimer.c
hrtimer: fix section mismatch
2008-01-21 19:39:41 -08:00
itimer.c
whitespace fixes: interval timers
2007-10-18 14:37:26 -07:00
kallsyms.c
FRV: fix the extern declaration of kallsyms_num_syms
2007-11-29 09:24:54 -08:00
Kconfig.hz
Kconfig.instrumentation
Tiny clean-up of OPROFILE/KPROBES configuration
2007-12-06 09:41:12 -08:00
Kconfig.preempt
Move PREEMPT_NOTIFIERS into an always-included Kconfig
2007-10-17 08:42:55 -07:00
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
kprobes: support kretprobe blacklist
2007-10-16 09:43:10 -07:00
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
lockdep: Avoid /proc/lockdep & lock_stat infinite output
2007-10-11 22:11:11 +02:00
Makefile
revert "Task Control Groups: example CPU accounting subsystem"
2007-11-14 18:45:40 -08:00
marker.c
Linux Kernel Markers: fix marker mutex not taken upon module load
2007-11-14 18:45:40 -08:00
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
lockdep: fixup mutex annotations
2007-10-11 22:11:12 +02:00
mutex.h
notifier.c
Add kernel/notifier.c
2007-10-19 11:53:34 -07:00
ns_cgroup.c
cgroups: implement namespace tracking subsystem
2007-10-19 11:53:37 -07:00
nsproxy.c
pid namespaces: allow cloning of new namespace
2007-10-19 11:53:39 -07:00
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
pidns: Place under CONFIG_EXPERIMENTAL
2007-11-14 18:45:43 -08:00
posix-cpu-timers.c
Isolate some explicit usage of task->tgid
2007-10-19 11:53:40 -07:00
posix-timers.c
Isolate some explicit usage of task->tgid
2007-10-19 11:53:40 -07:00
printk.c
sched: remove printk_clock()
2008-01-25 21:07:59 +01:00
profile.c
sched: document profile=sleep requiring CONFIG_SCHEDSTATS
2007-10-24 18:23:50 +02:00
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
whitespace fixes: relayfs
2007-10-18 14:37:24 -07:00
resource.c
Add IORESOUCE_BUSY flag for System RAM
2007-11-14 18:45:39 -08:00
rtmutex-debug.c
Use helpers to obtain task pid in printks
2007-10-19 11:53:43 -07:00
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
Use helpers to obtain task pid in printks
2007-10-19 11:53:43 -07:00
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: de-SCHED_OTHER-ize the RT path
2008-01-25 21:08:09 +01:00
sched_debug.c
sched: fix gcc warnings
2007-12-30 17:24:35 +01:00
sched_fair.c
sched: de-SCHED_OTHER-ize the RT path
2008-01-25 21:08:09 +01:00
sched_idletask.c
sched: de-SCHED_OTHER-ize the RT path
2008-01-25 21:08:09 +01:00
sched_rt.c
sched: pre-route RT tasks on wakeup
2008-01-25 21:08:10 +01:00
sched_stats.h
sched: clean up kernel/sched_stat.h
2007-11-28 15:52:56 +01:00
seccomp.c
signal.c
sigwait eats blocked default-ignore signals
2007-11-12 16:05:23 -08:00
softirq.c
[KERNEL]: Unexport raise_softirq_irqoff
2007-10-10 16:49:18 -07:00
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
x86: ignore the sys_getcpu() tcache parameter
2007-11-17 16:27:00 +01:00
sys_ni.c
[COMPAT]: Fix build on COMPAT platforms when CONFIG_NET is disabled.
2007-10-30 21:29:56 -07:00
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
kernel/taskstats.c: fix bogus nlmsg_free()
2007-11-14 18:45:44 -08:00
time.c
whitespace fixes: time syscalls
2007-10-18 14:37:24 -07:00
timer.c
timer: fix section mismatch
2008-01-21 19:39:41 -08:00
tsacct.c
Add scaled time to taskstats based process accounting
2007-10-18 14:37:28 -07:00
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
Fix user namespace exiting OOPs
2007-09-19 11:24:18 -07:00
utsname.c
Fix UTS corruption during clone(CLONE_NEWUTS)
2007-09-19 11:24:17 -07:00
utsname_sysctl.c
Isolate the UTS namespace's domainname and hostname back
2007-11-29 09:24:53 -08:00
wait.c
workqueue.c
cpu-hotplug: replace per-subsystem mutexes with get_online_cpus()
2008-01-25 21:08:02 +01:00