tcp_isn_tick() / dummynet() callout madness ?

Colin Percival cperciva at freebsd.org
Sun Jan 30 10:17:41 PST 2005


Robert Watson wrote:
> since the callout_reset() is one of the more
> expensive parts of this code, Colin has been looking at some locking
> optimizations to lower the cost.

To elaborate somewhat: I think I can avoid the spinlock cost when
callouts reset themselves (which is the case here).  However, while
this will reduce the time spent in the callouts themselves, it's
really only a 50% solution -- softclock locks and unlocks the callout
spin lock each time it launches a callout.  If we're spending 5% of
our cpu time in these two callouts, then they're actually responsible
for using 10% of our cpu time; I think I can cut that in half, but in
the end we can't avoid the cost of a mtx_lock_spin / mtx_unlock_spin
pair (in softclock) for each callout.

Colin Percival


More information about the freebsd-current mailing list