Re: tcp_isn_tick() / dummynet() callout madness ?

From: Mike Silbersack (silby_at_silby.com)
Date: 01/30/05

  • Next message: Mike Silbersack: "Re: tcp_isn_tick() / dummynet() callout madness ?"
    Date: Sun, 30 Jan 2005 15:23:34 -0600 (CST)
    To: Colin Percival <cperciva@freebsd.org>
    
    

    On Sun, 30 Jan 2005, Colin Percival wrote:

    > 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

    Is there any way to get around that cost with some relatively simple
    change to the callout API? Just a few places in the kernel account for
    most of the use of callouts, so even if a rewrite of those would be
    necessary, it should pay off.

    Or, potentially crazy idea here; instead of incurring the cost of a
    spinlock to remove a callout entry from a bucket, could you do some atomic
    operation to mark that entry as done, and then only remove those entries
    once and a while?

    I guess if spinlocks weren't so expensive, this wouldn't be a big deal...
    why do they need to be spinlocks? :)

    Mike "Silby" Silbersack
    _______________________________________________
    freebsd-current@freebsd.org mailing list
    http://lists.freebsd.org/mailman/listinfo/freebsd-current
    To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"


  • Next message: Mike Silbersack: "Re: tcp_isn_tick() / dummynet() callout madness ?"

    Relevant Pages