svn commit: r215368 - in stable/7/sys: arm/at91 arm/xscale/ixp425 contrib/dev/oltr dev/ae dev/an dev/ar dev/arl dev/ath dev/awi dev/ce dev/cm dev/cnw dev/cp dev/cs dev/ctau dev/cx dev/cxgb dev/ed d...

Bruce Evans brde at optusnet.com.au
Tue Nov 16 16:12:29 UTC 2010


On Tue, 16 Nov 2010, Maxim Sobolev wrote:

> Log:
>  MFC r207554:
>
>      Add new tunable 'net.link.ifqmaxlen' to set default send interface
>      queue length. The default value for this parameter is 50, which is
>      quite low for many of today's uses and the only way to modify this
>      parameter right now is to edit if_var.h file. Also add read-only
>      sysctl with the same name, so that it's possible to retrieve the
>      current value.

This was quite low for yestdeay's uses (starting in about 1995), but today
it is little missed since only yesterday's low-end hardware uses it.  Most
of today's interfaces are 1Gbps, and for this it is almost essential for
the hardware to have a ring buffer with > 50 entries, so most of today's
drivers ignore ifqmaxlen and set the queue length to the almost equally
bogus value of the ring buffer size (-1).  I set it to about 10000 instead
in bge and em (10000 is too large, but fixes streaming under certain loads
when hz is small).

> Modified:
>  stable/7/sys/arm/at91/if_ate.c
>  stable/7/sys/arm/xscale/ixp425/if_npe.c
>  stable/7/sys/contrib/dev/oltr/if_oltr.c
>  stable/7/sys/dev/ae/if_ae.c
>  stable/7/sys/dev/an/if_an.c
>  stable/7/sys/dev/ar/if_ar.c
>  stable/7/sys/dev/arl/if_arl.c
>  stable/7/sys/dev/ath/if_ath.c
>  stable/7/sys/dev/awi/awi.c
>  stable/7/sys/dev/ce/if_ce.c
>  stable/7/sys/dev/cm/smc90cx6.c
>  stable/7/sys/dev/cnw/if_cnw.c
>  stable/7/sys/dev/cp/if_cp.c
>  stable/7/sys/dev/cs/if_cs.c
>  stable/7/sys/dev/ctau/if_ct.c
>  stable/7/sys/dev/cx/if_cx.c
>  stable/7/sys/dev/cxgb/cxgb_main.c
>  stable/7/sys/dev/ed/if_ed.c
>  stable/7/sys/dev/ep/if_ep.c
>  stable/7/sys/dev/ex/if_ex.c
>  stable/7/sys/dev/ie/if_ie.c
>  stable/7/sys/dev/iicbus/if_ic.c
>  stable/7/sys/dev/ipw/if_ipw.c
>  stable/7/sys/dev/iwi/if_iwi.c
>  stable/7/sys/dev/le/lance.c
>  stable/7/sys/dev/malo/if_malo.c
>  stable/7/sys/dev/my/if_my.c
>  stable/7/sys/dev/nxge/if_nxge.c
>  stable/7/sys/dev/pdq/pdq_ifsubr.c
>  stable/7/sys/dev/ppbus/if_plip.c
>  stable/7/sys/dev/ral/rt2560.c
>  stable/7/sys/dev/ral/rt2661.c
>  stable/7/sys/dev/ray/if_ray.c
>  stable/7/sys/dev/sbni/if_sbni.c
>  stable/7/sys/dev/sbsh/if_sbsh.c
>  stable/7/sys/dev/sn/if_sn.c
>  stable/7/sys/dev/snc/dp83932.c
>  stable/7/sys/dev/sr/if_sr.c
>  stable/7/sys/dev/usb/if_aue.c
>  stable/7/sys/dev/usb/if_axe.c
>  stable/7/sys/dev/usb/if_cdce.c
>  stable/7/sys/dev/usb/if_cue.c
>  stable/7/sys/dev/usb/if_kue.c
>  stable/7/sys/dev/usb/if_rue.c
>  stable/7/sys/dev/usb/if_rum.c
>  stable/7/sys/dev/usb/if_udav.c
>  stable/7/sys/dev/usb/if_ural.c
>  stable/7/sys/dev/usb/if_zyd.c
>  stable/7/sys/dev/usb/udbp.c
>  stable/7/sys/dev/vx/if_vx.c
>  stable/7/sys/dev/wi/if_wi.c
>  stable/7/sys/dev/wl/if_wl.c
>  stable/7/sys/dev/wpi/if_wpi.c
>  stable/7/sys/dev/xe/if_xe.c
>  stable/7/sys/i4b/capi/capi_l4if.c
>  stable/7/sys/i4b/driver/i4b_ing.c
>  stable/7/sys/i4b/driver/i4b_isppp.c
>  stable/7/sys/i4b/driver/i4b_trace.c
>  stable/7/sys/i4b/layer1/ifpi/i4b_ifpi_pci.c
>  stable/7/sys/i4b/layer1/ifpi2/i4b_ifpi2_pci.c
>  stable/7/sys/i4b/layer1/ifpnp/i4b_ifpnp_avm.c
>  stable/7/sys/i4b/layer1/ihfc/i4b_ihfc_drv.c
>  stable/7/sys/i4b/layer1/isic/i4b_bchan.c
>  stable/7/sys/i4b/layer1/itjc/i4b_itjc_pci.c
>  stable/7/sys/i4b/layer1/iwic/i4b_iwic_bchan.c
>  stable/7/sys/i4b/layer4/i4b_i4bdrv.c

Note that there is only yeterday's hardware in this list.

The queue length should be per-interface and configured only by a sysctl,
or better, drivers dynamically configure it to a good value.

Bruce


More information about the svn-src-all mailing list