Subject: Re: Why is Samba so much slower on NetBSD than FreeBSD?
To: Michael Richardson <mcr@sandelman.ottawa.on.ca>
From: Brian C. Grayson <bgrayson@marvin.ece.utexas.edu>
List: current-users
Date: 10/23/1998 14:22:10
On Fri, Oct 23, 1998 at 03:23:30PM -0400, Michael Richardson wrote:
> 
> >>>>> "Jukka" == Jukka Marin <jmarin@pyy.jmp.fi> writes:
> 
>     Jukka> On Fri, Oct 23, 1998 at 09:23:49AM -0700, Jason Thorpe
>     Jukka> wrote:
>     >> > Note that the elink3 driver doesn't say anything when the
>     >> fifo > overflowded.
>     >> 
>     >> Uh, let's add a printf?
> 
>     Jukka> Doesn't that just make the problem worse by slowing down
> 
>   Yes. We should be incrementing a counter, and printing something
> whenever the counter is first incremented, so that I might think to
> monitor the counter.

  I've recently started using an exponential backoff scheme in
some of my code to reduce the overhead of logging info like
this.  For example, if there are 1 million overflows, only the
following would be logged:

1 time(s):  fifo overflow
2 time(s):  fifo overflow
4 time(s):  fifo overflow
8 time(s):  fifo overflow
...
262144 time(s):  fifo overflow
524288 time(s):  fifo overflow

  This is a good tradeoff (IMHO) between knowing the absolute
number of times this occurs, and reducing the impact of
tracking this knowledge (both in CPU expense and in logfile space).

  I use preprocessor magic so that I can just say

exponential_warning(("format string passed to printf", arg, arg, ...));

and have it Do The Right Thing (without having to specify either
a counter or a threshold variable -- the macro does all that). 
If anyone is interested in the macro (it ain't too hard to
figure out), mail me!

  Brian
-- 
"Old programmers never die.  They just branch to a new address."
						-Anonymous