Fix performance regression on lmbench select benchmark
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 22 Jun 2008 19:23:15 +0000 (12:23 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 22 Jun 2008 19:23:15 +0000 (12:23 -0700)
commit55d8538498f62ec72b5ba67aa386c7726f630475
tree15ebcc7a51fdf1ff2bf76ade337a637c0990055d
parent481c5346d0981940ee63037eb53e4e37b0735c10
Fix performance regression on lmbench select benchmark

Christian Borntraeger reported that reinstating cond_resched() with
CONFIG_PREEMPT caused a performance regression on lmbench:

For example select file 500:
23 microseconds
32 microseconds

and that's really because we totally unnecessarily do the cond_resched()
in the innermost loop of select(), which is just silly.

This moves it out from the innermost loop (which only ever loops ove the
bits in a single "unsigned long" anyway), which makes the performance
regression go away.

Reported-and-tested-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/select.c