sanitize number of spins in userspace before futex wait
authorRich Felker <dalias@aerifal.cx>
Mon, 25 Aug 2014 19:58:19 +0000 (15:58 -0400)
committerRich Felker <dalias@aerifal.cx>
Mon, 25 Aug 2014 19:58:19 +0000 (15:58 -0400)
commitb8a9c90e4fe29821f2ef40796c07c48bd8fac8cc
tree30d89022cbd1511876d2e2993238bc9906eea96a
parentea818ea8340c13742a4f41e6077f732291aea4bc
sanitize number of spins in userspace before futex wait

the previous spin limit of 10000 was utterly unreasonable.
empirically, it could consume up to 200000 cycles, whereas a failed
futex wait (EAGAIN) typically takes 1000 cycles or less, and even a
true wait/wake round seems much less expensive.

the new counts (100 for general wait, 200 in barrier) were simply
chosen to be in the range of what's reasonable without having adverse
effects on casual micro-benchmark tests I have been running. they may
still be too high, from a standpoint of not wasting cpu cycles, but at
least they're a lot better than before. rigorous testing across
different archs and cpu models should be performed at some point to
determine whether further adjustments should be made.
src/thread/__wait.c
src/thread/pthread_barrier_wait.c