Boost logo

Boost :

From: Paul Baxter (pauljbaxter_at_[hidden])
Date: 2007-10-23 19:18:09

Thanks for doing some useful benchmarks!

> The code size and speed can be improved further by using a simpler
> method that just calls sched_yield(). However, this method is less
> suitable for use as a default implementation because it will have worse
> complexity in applications with contention: futex() knows which thread
> to wake up next, while sched_yield() doesn't.

My (limited) understanding from recent linux kernel mailing list discussions
regarding supposed regressions in the scheduler is that sched_yield does not
have a well-defined behaviour for anything other than SCHED_FIFO tasks and
as such its implementation and performance may vary greatly depending on a
particular scheduler implementation.

The recent regression noted for a network benchmark called iperf, used
sched_yield and saw major changes to performance.

The advice was not to rely on sched_yield other than in simple 'don't care'
apps. (and that iperf wasn't

Perhaps try your sched_yield tests on most recent kernel and play with the
different scheduler sched_yield strategies to see if that influences your
non-contended/contended settings. Probably shouldn't end up relying on it
anyway so the point may be moot... might be a start

Boost list run by bdawes at, gregod at, cpdaniel at, john at