FreeBSD 4.9 losing mbufs!!!
Stephen Clark
Stephen.Clark at seclark.us
Wed Apr 26 19:40:34 UTC 2006
Robert Watson wrote:
>On Wed, 26 Apr 2006, Stephen Clark wrote:
>
>
>
>>>Sorry not to have caught this thread earlier; I've been on travel for the
>>>last few weeks. My general suggestion would be to try to narrow the code
>>>paths traversed to try to eliminate as much code as possible from the
>>>search. It sounds like you've done that pretty effectively :-).
>>>
>>>Typically, memory leaks occur in edge error cases, where the memory is not
>>>properly released, or ownership is unclear. My suggestion would be to add
>>>counters (or look at existing counters where already present) and see if
>>>there's an error case being triggered in about the same quantity that mbuf
>>>leakage is occuring. Chances are, there's an error being returned and a
>>>missing m_freem().
>>>
>>>Based on your comments above, I might also pay attention to the routing
>>>socket path -- the rate of leak could correspond to the routing daemons
>>>talking to the network stack, rather than the rate of traffic. For
>>>example, it could be that one of the routing messages is handled improperly
>>>resulting in a leak.
>>>
>>>Unfortunately, tracking down memory leaks can be quite difficult, and tends
>>>to require a combination of dogged persistence and luck...
>>>
>>>
>>Good news and bad news.
>>
>>I managed to get enough of our system running on 6.x stable to test and it
>>does not appear to lose mbufs. Bad news my ipsec transfer rate dropped from
>>54mbits/sec to 39mbits/sec. We need to be able to handle a t3 (45mbits/sec).
>>Any ideas as to why this drop off in 6.x?
>>
>>
>
>Well, that's good about the good news, but not so great about the bad news.
>Are you using IPv6? If not, could you look at how FAST_IPSEC performs instead
>of the default IPSEC package, if you're not already doing so? The KAME IPSEC
>implementation is not multi-processor compatible, so when IPSEC support is
>compiled into the kernel, execution of the network stack and related
>components is limited to a single CPU (you'll see a warning about this at boot
>if this is the case). This is something we hope to fix in a future release,
>but in the mean time FAST_IPSEC offers improved performance and SMP
>scalability, as well as support for hardware crypto acceleration. The
>downside to FAST_IPSEC is that it doesn't currently support IPv6, which is
>also something we'd like to fix in the future.
>
>Aside from the above, there are a number of other things we can look at to
>decide what the source of the performance problem is. First, I'd encourage
>you to make sure any system debugging features, such as INVARIANTS,
>INVARIANT_SUPPORT, and WITNESS, are disabled. Next, I would recommend
>generating a high level of your load on the system, and using systat -vmstat 1
>and top -S to grab some information about it in the steady state. I recommend
>letting both run for a couple of minutes, then grabbing the output from both
>of them. This will give us an idea of where CPU usage is going in the kernel,
>which is where I assume most of your workload ends up being handled.
>
>Thanks,
>
>Robert N M Watson
>_______________________________________________
>freebsd-stable at freebsd.org mailing list
>http://lists.freebsd.org/mailman/listinfo/freebsd-stable
>To unsubscribe, send any mail to "freebsd-stable-unsubscribe at freebsd.org"
>
>
>
Thanks Robert,
I'll give that a try.
Regards,
Steve
--
"They that give up essential liberty to obtain temporary safety,
deserve neither liberty nor safety." (Ben Franklin)
"The course of history shows that as a government grows, liberty
decreases." (Thomas Jefferson)
More information about the freebsd-stable
mailing list