Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 08 Oct 2003 13:22:34 +0200
From:      Peter Bozarov <peter.bozarov@moniforce.com>
To:        Bruce M Simpson <bms@spc.org>
Cc:        freebsd-net@freebsd.org
Subject:   Re: Recovery from mbuf cluster exhaustion
Message-ID:  <3F83F37A.7020908@moniforce.com>
References:  <3F83E2A7.8070209@moniforce.com> <20031008101733.GI6524@saboteur.dek.spc.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Bruce M Simpson wrote:
> On Wed, Oct 08, 2003 at 12:10:47PM +0200, Peter Bozarov wrote:
> 
>>(First off, I hope I'm posting to the right list.)
> 
> 
> -net would be more appropriate. [Redirected from -hackers]
> 
> 
>>I have the following question regarding mbuf cluster exhaustion.
>>If I've managed to exhaust the pool, I start getting the usual
>>"All mbuf clusters exhausted, please see tuning(7)." message.
>>Now, at that point this is what my mbuf pool looked like:
> 
> 
> Which version of FreeBSD are you using?
> What network interfaces do you have?
> What does this box do to get to this stage?
> What does your routing table look like?
> 
> BMS

Hi,
I'm using 4.7. I have three interfaces, rl0, xl0, and xl1.
The rl0 interface is a RealTek 8139 10/100BaseTX, the
xl* are two 3Com 3c905-TX Fast Etherlink XL cards.

This is what my routing tables look like.

Internet:
Destination Gateway            Flags    Refs      Use  Netif Expire
default     10.2.1.1           UGSc        4        0    rl0
10/24       link#2             UC          1        0    xl0
10.0.0.2    00:07:e9:d5:18:52  UHLW        0        4    xl0   1196
10.2.1/24   link#1             UC          2        0    rl0
10.2.1.1    00:04:76:1f:53:60  UHLW        5       58    rl0   1151
10.2.1.2    00:60:08:10:4a:36  UHLW        0        2    rl0   1179
10.2.1.68   127.0.0.1          UGHS        0        0    lo0
127.0.0.1   127.0.0.1          UH          2       30    lo0

My machine serves as a bridge between the 10.0.0.0/24 (xl0) and
the 10.2.1.0/24 networks (rl0). xl1 is not being used. I've made
a tcpdump of machines on the 10.2.1.0/24 network communicating
with the internet. Now, on the 10.0.0.0/24, I have a sniffer. I'm
trying to test the program by injecting the tcpdump file into
the 10.0.0.0/24 network. Apparently, since some of the outgoing
traffic on xl0 is originated on or is meant for the localhost
(10.2.1.68) the xl0 driver starts buffering/passing those segments
to the kernel (xl0 is in promiscuous mode).
Shorty after this, I run out of mbuf clusters. If I bring the xl0
card down, my mbuf pool stops growing. The moment I bring xl0 up,
I start getting the "All mbuf clusters exhausted" messages again.
Bring it down, messages go away, but the clusters that xl0 is
using are never released. The only solution is to reboot.
How do I cause the driver (or whatever it is) that's hogging the
clusters to relinquish them?

Peter




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3F83F37A.7020908>