mutex: adaptive spinnning, performance tweaks
authorChris Mason <chris.mason@oracle.com>
Wed, 14 Jan 2009 16:29:31 +0000 (17:29 +0100)
committerIngo Molnar <mingo@elte.hu>
Wed, 14 Jan 2009 18:03:54 +0000 (19:03 +0100)
commitac6e60ee405aa3bf718f7fe4cb01b7ee0b8877ec
tree27d1ce0bab574835775d9897c8370b68f5502fff
parent0d66bf6d3514b35eb6897629059443132992dbd7
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>
kernel/mutex.c