[ previous ] [ next ] [ threads ]
 
 From:  Gavin Pidgley <gavin at gadago dot net>
 To:  =?windows-1251?Q?=95_=95?= <googl3meister at gmail dot com>
 Cc:  Rolf Sommerhalder <rolf dot sommerhalder at alumni dot ethz dot ch>, m0n0wall at lists dot m0n0 dot ch
 Subject:  Re: [m0n0wall] 1.2b8 hanged: all mbufs exhausted
 Date:  Tue, 28 Jun 2005 09:44:51 +0100
On Tue, 2005-06-28 at 08:27 +1000, ? ? wrote:
> On 6/28/05, Rolf Sommerhalder <rolf dot sommerhalder at alumni dot ethz dot ch> wrote:
> > My generic-PC 1.2b8 runs as a filtering bridge on a 4 Mbit/s symmetric
> > connection and after 3 days uptime shows in the syslog:
> >     /kernel: All mbufs exhausted, please see tuning(7).
> > 
> > The bridge apparently still works, even though log outputs is severly
> > limited to a few lines only (I had set it at 200 lines).
> > 
> > output of 'netstat -m' is:
> > 
> > $ netstat -m
> > 9468/9536/9536 mbufs in use (current/peak/max):
> >         100 mbufs allocated to data
> >         9368 mbufs allocated to packet headers
> > 69/198/2384 mbuf clusters in use (current/peak/max)
> > 2780 Kbytes allocated to network (38% of mb_map in use)
> > 46 requests for memory denied
> > 0 requests for memory delayed
> > 6 calls to protocol drain routines
> > 
> > Any hints of ehat I should try? (If needed, I can compile the kernel and
> > produce a new custom image, no problem.)
> > 
> > Rolf
> > 
> 
> You need to up the max number of network memory buffers, using:
> > sysctl -w kern.ipc.nmbclusters=X
> 
> For a value for X, considering memory and usage of the machine, here
> is the relevant bit from tuning(7):
>      kern.ipc.nmbclusters may be adjusted to increase the number of network
>      mbufs the system is willing to allocate.  Each cluster represents approx-
>      imately 2K of memory, so a value of 1024 represents 2M of kernel memory
>      reserved for network buffers.  You can do a simple calculation to figure
>      out how many you need.  If you have a web server which maxes out at 1000
>      simultaneous connections, and each connection eats a 16K receive and 16K
>      send buffer, you need approximately 32MB worth of network buffers to deal
>      with it.  A good rule of thumb is to multiply by 2, so 32MBx2 = 64MB/2K =
>      32768.  So for this case you would want to set kern.ipc.nmbclusters to
>      32768.  We recommend values between 1024 and 4096 for machines with mod-
>      erates amount of memory, and between 4096 and 32768 for machines with
>      greater amounts of memory.  Under no circumstances should you specify an
>      arbitrarily high value for this parameter, it could lead to a boot-time
>      crash.  The -m option to netstat(1) may be used to observe network clus-
>      ter use.  Older versions of FreeBSD do not have this tunable and require
>      that the kernel config(8) option NMBCLUSTERS be set instead.
> 
> ie: it depends what you're using it for and how much memory it has.

Does anyone have a recommended value for network buffers on a wrap board
with 64MB of memory?

> 
> --g'luck
> gm
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: m0n0wall dash unsubscribe at lists dot m0n0 dot ch
> For additional commands, e-mail: m0n0wall dash help at lists dot m0n0 dot ch
>