atomic reference counting primatives.

Bruce Evans bde at zeta.org.au
Thu May 20 20:45:43 PDT 2004


On Thu, 20 May 2004, Julian Elischer wrote:

> This has been raised before but I've come across uses for it again and
> again so I'm raising it again.
> JHB once posted some atomic referenc counting primatives. (Do you still
> have them John?)
> Alfred once said he had soem somewhere too, and other s have commentted
> on this before, but we still don't seem to have any.
>
> every object is reference counted with its own code and
> sometimes it's done poorly.
>
> Some peiople indicated that there are cases where a generic refcounter
> can not be used and usd this as  a reason to not have one at all.

Now we know that a generic reference counter would be even better for
pessimizing FreeBSD than was first thought, since on P4's locked
instructions are very expensive.  See the thread about bridging.  A
pessimization by a factor of 2 or so has been achieved using little
more than normal locking, since there are lots of lock/unlock pairs
per packet and each lock and unlock takes hundreds (?) of cycles for
the bus lock part and very little else.  General atomic counters of
any sort would take about half as lock as a lock/unlock pair (since
they only need 1 lock, but would always needed it even if running in
a locked region).  The pessimizations from them could be broken using
algorithms that don't need fine-grained locking.

Bruce


More information about the freebsd-arch mailing list