[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

memory (mbuf) leak in fxp driver.



Hello all,

I'm fairly certain that I've uncovered a memory leak in the fxp driver, at
least for 2.8-stable. What I'm seeing is a steadily increasing number of
mbufs in use, until I get a "mb_map full" kernel error and the network stops
working.

At this point, netstat -m shows something like this:

18390 mbufs in use:
	2265 mbufs allocated to data
	16124 mbufs allocated to packet headers
	1 mbuf allocated to socket names and addresses
8190/8192 mapped pages in use
18682 Kbytes allocated to network (99% in use)
0 requests for memory denied
0 requests for memory delayed
1941 calls to protocol drain routines

As you can see, I've already set NMBCLUSTERS="8192" in my kernel
configuration. This really only delays the inevitable.

I searched for similar problems in the mailing list archives, and I noticed
that someone else was experiencing a similar problem when running a bridge
using fxp (Intel) NICs...
http://www.sigmasoft.com/~openbsd/archive/openbsd-tech/200104/msg00024.html
(note that this appears to be 10 meg, not 100)

After further testing / experimenting I noticed the following:

* running tcpdump (as I do) makes it worse, the mbufs fill up much faster.
I'm doing sniffing on heavily-utilized networks.
* cards running at 10 meg fill up much faster than cards running at 100 meg
(not what I would expect)
* the problem seems to exist in 2.7, 2.8, and 2.9 (beta). I haven't checked
-current.
* unplugging the network connection doesn't reduce the mbufs in use.
* I've seen similar problems reported on NetBSD and FreeBSD, perhaps because
they all share parent code (?)
* hard to say for sure, but other drivers, like xl, don't seem to behave the
same way.

It really looks like a leak in fxp, but I lack the expertise to find it in
the source code ...

Any suggestions ? Should I submit this as a bug report ?

here are the relevant lines from dmesg:
fxp0 at pci0 dev 1 function 0 "Intel 82557" rev 0x08: irq 11, address
00:b0:d0:e1:0b:68
inphy0 at fxp0 phy 1: i82555 10/100 media interface, rev. 4
fxp1 at pci0 dev 2 function 0 "Intel 82557" rev 0x08: irq 10, address
00:b0:d0:e1:0b:69
inphy1 at fxp1 phy 1: i82555 10/100 media interface, rev. 4

------------------------------------------
John A Benninghoff
mailto:jabenninghoff@dainrauscher.com