bge loader tunables

Bruce Evans brde at optusnet.com.au
Fri Nov 16 13:31:05 PST 2007


On Fri, 16 Nov 2007, Igor Sysoev wrote:

> The attached patch creates the following bge loader tunables:

I plan to commit old work to do this using sysctls.  Tunables are
harder to use and aren't needed since changes to the defaults aren't
needed for booting.  I also implemented dynamic tuning for rx coal
parameters so that the sysctls are mostly not needed.  Ask for patches
if you want to test this extensively.

> hw.bge.rxd=512
>
> Number of standard receive descriptors allocated by the driver.
> The default value is 256. The maximum value is 512.

I always use 512 for this.  The corresponding value for jumbo buffers
is hard-coded (JSLOTS exists to tune the value at config time, like
SSLOTS does for this, but is no longer used).  Only machines with a
small amount of memory should care about the wastage from always
allocating the max number of descriptors.

> hw.bge.rx_int_delay=500
>
> This value delays the generation of receive interrupts in microseconds.
> The default value is 150 microseconds.

This is a good default.  I normally use 100 (goes with dynamic tuning to
limit the rx interrupt rate to 10 kHz).

> hw.bge.tx_int_delay=500
>
> This value delays the generation of transmit interrupts in microseconds.
> The default value is 150 microseconds.

I use 1 second.  Infinity works right, except it wastes mbufs when the
tx is idle for a long time.

> hw.bge.rx_coal_desc=64
>
> This value delays the generation of receive interrupts until specified
> number of packets will be received. The default value is 10.

64 is a good default.  10 is a bad default (it optimizes too much for
latency at a cost of efficiency to be good). I use 1 when optimizing
for latency.  Dynamic tuning sets this to a value suitable for limiting
the rx interrupt rate to a specified frequency (10 kHz is a good limit).

> hw.bge.tx_coal_desc=128
>
> This value delays the generation of transmit interrupts until specified
> number of packets will be transmited. The default value is 10.

128 is a good default.  I use 384.  There are few latency issues here, so
the default of 10 mainly costs efficiency.

Bruce


More information about the freebsd-net mailing list