remarkable-linux/init
Peter Zijlstra 317f394160 sched: Move the second half of ttwu() to the remote cpu
Now that we've removed the rq->lock requirement from the first part of
ttwu() and can compute placement without holding any rq->lock, ensure
we execute the second half of ttwu() on the actual cpu we want the
task to run on.

This avoids having to take rq->lock and doing the task enqueue
remotely, saving lots on cacheline transfers.

As measured using: http://oss.oracle.com/~mason/sembench.c

  $ for i in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor ; do echo performance > $i; done
  $ echo 4096 32000 64 128 > /proc/sys/kernel/sem
  $ ./sembench -t 2048 -w 1900 -o 0

  unpatched: run time 30 seconds 647278 worker burns per second
  patched:   run time 30 seconds 816715 worker burns per second

Reviewed-by: Frank Rowand <frank.rowand@am.sony.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Nick Piggin <npiggin@kernel.dk>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/20110405152729.515897185@chello.nl
2011-04-14 08:52:41 +02:00
..
calibrate.c calibrate: retry with wider bounds when converge seems to fail 2011-03-22 17:44:12 -07:00
do_mounts.c Fix common misspellings 2011-03-31 11:26:23 -03:00
do_mounts.h md: move lots of #include lines out of .h files and into .c 2009-03-31 14:33:13 +11:00
do_mounts_initrd.c Make do_execve() take a const filename pointer 2010-08-17 18:07:43 -07:00
do_mounts_md.c init: mark __user address space on string literals 2010-10-26 16:52:15 -07:00
do_mounts_rd.c init: return proper error code in do_mounts_rd() 2011-03-22 17:44:15 -07:00
initramfs.c Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6 2010-10-28 15:13:55 -07:00
Kconfig sched: Move the second half of ttwu() to the remote cpu 2011-04-14 08:52:41 +02:00
main.c pid: remove the child_reaper special case in init/main.c 2011-03-23 19:46:57 -07:00
Makefile kbuild: move compile.h to include/generated 2009-12-12 13:08:14 +01:00
noinitramfs.c init: mark __user address space on string literals 2010-10-26 16:52:15 -07:00
version.c userns: add a user_namespace as creator/owner of uts_namespace 2011-03-23 19:46:59 -07:00