I did some more timing of test008 with and without a background CPU
burning job. (just a for loop, so it had minimal impact on CPU cache.)
On a 2GHz Pentium-M laptop with Linux 2.6.5:
test008 test008+CPU job
original 0:27 1:10
BROKEN/select 0:24 0:24
BROKEN/nano 0:33 0:33
On 2GHz AMD64 X2 with Linux 2.6.14 (SMP):
original 0:31 0:43
BROKEN/select 17:09 17:47
BROKEN/nano 1:28 1:29
I have a feeling we're going to be seeing pretty varied results across
a range of configurations. My feeling is we're best off using
sched_yield(), and possibly using the SCHED_FIFO scheduler to get
deterministic performance on 2.6 kernels. I'm also inclined to just
back out all of this stuff and completely ignore the issue, as I did
before. There's no good reason to have other jobs soaking up the CPU
on the same machine as your infrastructure services.