Chris Mason
ac6e60ee40
mutex: adaptive spinnning, performance tweaks
...
Spin more agressively. This is less fair but also markedly faster.
The numbers:
* dbench 50 (higher is better):
spin 1282MB/s
v10 548MB/s
v10 no wait 1868MB/s
* 4k creates (numbers in files/second higher is better):
spin avg 200.60 median 193.20 std 19.71 high 305.93 low 186.82
v10 avg 180.94 median 175.28 std 13.91 high 229.31 low 168.73
v10 no wait avg 232.18 median 222.38 std 22.91 high 314.66 low 209.12
* File stats (numbers in seconds, lower is better):
spin 2.27s
v10 5.1s
v10 no wait 1.6s
( The source changes are smaller than they look, I just moved the
need_resched checks in __mutex_lock_common after the cmpxchg. )
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-14 19:03:54 +01:00
..
irq
async: Asynchronous function calls to speed up kernel boot
2009-01-07 08:45:46 -08:00
power
Merge branch 'linus' into release
2009-01-09 03:39:43 -05:00
time
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2009-01-07 11:31:52 -08:00
trace
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rric/oprofile
2009-01-09 12:43:06 -08:00
.gitignore
acct.c
CRED: Wrap task credential accesses in the core kernel
2008-11-14 10:39:12 +11:00
async.c
async: fix __lowest_in_progress()
2009-01-12 16:39:58 -08:00
audit.c
[PATCH] fix broken timestamps in AVC generated by kernel threads
2008-12-09 02:27:41 -05:00
audit.h
fixing audit rule ordering mess, part 1
2009-01-04 15:14:41 -05:00
audit_tree.c
audit: validate comparison operations, store them in sane form
2009-01-04 15:14:42 -05:00
auditfilter.c
audit: validate comparison operations, store them in sane form
2009-01-04 15:14:42 -05:00
auditsc.c
make sure that filterkey of task,always rules is reported
2009-01-04 15:14:42 -05:00
backtracetest.c
bounds.c
capability.c
Merge branch 'next' into for-linus
2009-01-07 09:58:22 +11:00
cgroup.c
cgroups: add css_tryget()
2009-01-08 08:31:10 -08:00
cgroup_debug.c
cgroup_freezer.c
freezer_cg: disable writing freezer.state of root cgroup
2008-11-12 17:17:16 -08:00
compat.c
Allow times and time system calls to return small negative values
2009-01-06 15:59:13 -08:00
configs.c
cpu.c
stop_machine/cpu hotplug: fix disable_nonboot_cpus
2009-01-07 11:36:14 -08:00
cpuset.c
cpuset: remove remaining pointers to cpumask_t
2009-01-08 08:31:11 -08:00
cred-internals.h
CRED: Inaugurate COW credentials
2008-11-14 10:39:23 +11:00
cred.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6
2009-01-09 13:59:25 -08:00
delayacct.c
schedstat: consolidate per-task cpu runtime stats
2008-12-18 13:54:01 +01:00
dma-coherent.c
dma-coherent: catch oversized requests to dma_alloc_from_coherent()
2009-01-06 15:59:31 -08:00
dma.c
exec_domain.c
exit.c
mm: introduce get_mm_hiwater_xxx(), fix taskstats->hiwater_xxx accounting
2009-01-06 15:59:09 -08:00
extable.c
Merge branch 'core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2008-12-30 16:10:19 -08:00
fork.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-2.6-nommu
2009-01-09 14:00:58 -08:00
freezer.c
futex.c
Merge branches 'core/futexes', 'core/locking', 'core/rcu' and 'linus' into core/urgent
2009-01-06 09:32:11 +01:00
futex_compat.c
CRED: Use RCU to access another task's creds and to release a task's own creds
2008-11-14 10:39:19 +11:00
hrtimer.c
hrtimer: splitout peek ahead functionality, fix
2009-01-05 14:11:10 +01:00
itimer.c
kallsyms.c
allow stripping of generated symbols under CONFIG_KALLSYMS_ALL
2008-12-19 22:47:10 +01:00
Kconfig.freezer
Kconfig.hz
Kconfig.preempt
rcu: provide RCU options on non-preempt architectures too
2008-12-25 09:31:28 +01:00
kexec.c
cpumask: prepare for iterators to only go to nr_cpu_ids/nr_cpumask_bits.: core
2009-01-01 10:12:15 +10:30
kfifo.c
kgdb.c
kmod.c
kmod: fix varargs kernel-doc
2009-01-06 15:59:27 -08:00
kprobes.c
kprobes: support probing module __init function
2009-01-06 15:59:21 -08:00
ksysfs.c
kernel/ksysfs.c:fix dependence on CONFIG_NET
2009-01-06 10:44:31 -08:00
kthread.c
tracepoints: add DECLARE_TRACE() and DEFINE_TRACE()
2008-11-16 09:01:36 +01:00
latencytop.c
KSYM_SYMBOL_LEN fixes
2008-12-10 08:01:54 -08:00
lockdep.c
Merge branch 'core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2008-12-30 16:10:19 -08:00
lockdep_internals.h
lockdep_proc.c
Makefile
smp_call_function_single(): be slightly less stupid
2009-01-11 03:41:58 +01:00
marker.c
markers/tracpoints: fix non-modular build
2008-11-16 09:52:03 +01:00
module.c
async: Asynchronous function calls to speed up kernel boot
2009-01-07 08:45:46 -08:00
mutex-debug.c
mutex: implement adaptive spinning
2009-01-14 18:09:02 +01:00
mutex-debug.h
mutex: implement adaptive spinning
2009-01-14 18:09:02 +01:00
mutex.c
mutex: adaptive spinnning, performance tweaks
2009-01-14 19:03:54 +01:00
mutex.h
mutex: implement adaptive spinning
2009-01-14 18:09:02 +01:00
notifier.c
Merge commit 'v2.6.28-rc6' into core/debug
2008-11-26 08:22:50 +01:00
ns_cgroup.c
ns_cgroup: remove unused spinlock
2009-01-08 08:31:02 -08:00
nsproxy.c
User namespaces: set of cleanups (v2)
2008-11-24 18:57:41 -05:00
panic.c
oops: increment the oops UUID every time we oops
2009-01-06 15:59:12 -08:00
params.c
pid.c
pid: generalize task_active_pid_ns
2009-01-08 08:31:12 -08:00
pid_namespace.c
pm_qos_params.c
posix-cpu-timers.c
Merge commit 'v2.6.28' into core/core
2008-12-25 13:51:46 +01:00
posix-timers.c
Merge branches 'timers/clocksource', 'timers/hpet', 'timers/hrtimers', 'timers/nohz', 'timers/ntp', 'timers/posixtimers' and 'timers/rtc' into timers/core
2008-12-25 18:02:25 +01:00
printk.c
trivial: printk: fix indentation of new_text_line declaration
2009-01-06 11:28:06 +01:00
profile.c
profile: don't include <asm/ptrace.h> twice.
2009-01-06 15:59:14 -08:00
ptrace.c
Merge branch 'tracing-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2008-12-28 12:21:10 -08:00
rcuclassic.c
cpumask: convert RCU implementations, fix
2009-01-03 18:59:25 +01:00
rcupdate.c
rcu: eliminate synchronize_rcu_xxx macro
2009-01-05 10:18:08 +01:00
rcupreempt.c
rcu: eliminate synchronize_rcu_xxx macro
2009-01-05 10:18:08 +01:00
rcupreempt_trace.c
"Tree RCU": scalable classic RCU implementation
2008-12-18 21:56:04 +01:00
rcutorture.c
rcu: fix bug in rcutorture system-shutdown code
2009-01-07 23:36:25 +01:00
rcutree.c
rcu: make treercu safe for suspend and resume
2009-01-05 10:12:33 +01:00
rcutree_trace.c
"Tree RCU": scalable classic RCU implementation
2008-12-18 21:56:04 +01:00
relay.c
relayfs: fix infinite loop with splice()
2008-12-10 08:01:52 -08:00
res_counter.c
memcg: memory cgroup resource counters for hierarchy
2009-01-08 08:31:05 -08:00
resource.c
resource: allow MMIO exclusivity for device drivers
2009-01-07 11:12:32 -08:00
rtmutex-debug.c
rtmutex-debug.h
rtmutex-tester.c
rtmutex.c
rtmutex.h
rtmutex_common.h
rwsem.c
sched.c
mutex: implement adaptive spinning
2009-01-14 18:09:02 +01:00
sched_clock.c
sched_clock: prevent scd->clock from moving backwards, take #2
2008-12-31 09:53:21 +01:00
sched_cpupri.c
sched: fix section mismatch
2009-01-06 11:07:15 +01:00
sched_cpupri.h
sched: convert struct cpupri_vec cpumask_var_t.
2008-11-24 17:52:22 +01:00
sched_debug.c
sched: partly revert "sched debug: remove NULL checking in print_cfs_rt_rq()"
2009-01-11 02:40:32 +01:00
sched_fair.c
generic swap(): sched: remove local swap() macro
2009-01-08 08:31:15 -08:00
sched_features.h
mutex: implement adaptive spinning
2009-01-14 18:09:02 +01:00
sched_idletask.c
sched_rt.c
sched: put back some stack hog changes that were undone in kernel/sched.c
2009-01-03 19:00:09 +01:00
sched_stats.h
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask into merge-rr-cpumask
2009-01-03 18:53:31 +01:00
seccomp.c
semaphore.c
signal.c
SEND_SIG_NOINFO: set si_pid to tgid instead of pid
2009-01-06 15:59:29 -08:00
smp.c
cpumask: prepare for iterators to only go to nr_cpu_ids/nr_cpumask_bits.: core
2009-01-01 10:12:15 +10:30
softirq.c
Merge branch 'cpus4096-for-linus-3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2009-01-03 12:04:39 -08:00
softlockup.c
cpumask: convert rest of files in kernel/
2009-01-01 10:12:28 +10:30
spinlock.c
srcu.c
stacktrace.c
stacktrace: provide save_stack_trace_tsk() weak alias
2008-12-25 11:44:43 +01:00
stop_machine.c
stop_machine: introduce stop_machine_create/destroy.
2009-01-05 08:40:14 +10:30
sys.c
Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2009-01-06 17:10:33 -08:00
sys_ni.c
reintroduce accept4
2008-11-19 18:49:57 -08:00
sysctl.c
NOMMU: Make mmap allocation page trimming behaviour configurable.
2009-01-08 12:04:47 +00:00
sysctl_check.c
taskstats.c
cpumask: convert rest of files in kernel/
2009-01-01 10:12:28 +10:30
test_kprobes.c
kprobes: add tests for register_kprobes
2009-01-06 15:59:20 -08:00
time.c
Allow times and time system calls to return small negative values
2009-01-06 15:59:13 -08:00
timeconst.pl
timer.c
[PATCH] idle cputime accounting
2008-12-31 15:11:46 +01:00
tracepoint.c
markers/tracpoints: fix non-modular build
2008-11-16 09:52:03 +01:00
tsacct.c
mm: introduce get_mm_hiwater_xxx(), fix taskstats->hiwater_xxx accounting
2009-01-06 15:59:09 -08:00
uid16.c
CRED: Wrap current->cred and a few other accessors
2008-11-14 10:39:18 +11:00
up.c
smp_call_function_single(): be slightly less stupid, fix #2
2009-01-12 16:04:37 +01:00
user.c
Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
2008-12-28 12:27:58 -08:00
user_namespace.c
User namespaces: set of cleanups (v2)
2008-11-24 18:57:41 -05:00
utsname.c
utsname_sysctl.c
wait.c
workqueue.c
cpumask: convert kernel/workqueue.c
2009-01-01 10:12:25 +10:30