Recovery from mbuf cluster exhaustion
peter.bozarov at moniforce.com
Wed Oct 8 04:22:36 PDT 2003
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?
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.
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?
More information about the freebsd-net