zonelimit issues...

George V. Neville-Neil gnn at neville-neil.com
Sat Apr 19 02:00:58 UTC 2008


At Fri, 18 Apr 2008 06:40:26 -0700,
Chris Pratt wrote:
> 
> I am very interested in this topic as I've been waiting
> since moving from FreeBSD 5 in 2006. The workaround
> in the errata had no effect and the only notice I
> could see of something changing was the errata did
> not include the problem as of FreeBSD 7.0.
> 
> I stayed with production releases and source
> upgraded hoping a fix would be coming but stopped
> that at 6.2 when I saw no related changes (re:
> your messages in 12/2006 - 02/2007). I was
> planning to move to 7.0 based on the lack of the
> error description in the 7.0 errata. If no patch has
> been made, I'd prefer to keep an otherwise stable
> system status quo.
> 
> I guess now I'd really like to know if this has been
> fixed or not. I've been tied to my monitor for near
> two years now because of one system that seems
> to exhibit the problem regardless of what hardware
> we put in the role. Without a dump I've never been
> able to say that THIS problem is MY problem but the
> earmarks are there and I've just been waiting.
> 
> Doesn't 7.0 fix this? I'd like to see an official
> definitive answer and all I've been going on is that
> the problem description is no longer in the errata.
> 

It happens less often than usual but there are still situations where
it is possible.

The problem is that if the system is overloaded there may never be a
process able to free an mbuf to make progress.

The most important thing to do is to size the system correctly. The
bug most often crops up when systems have huge numbers of packets
outstanding and the system is overloaded.

I believe that a better solution is possible, but it will take more
careful study.  One option is to start adding drain routines to UDP
that cause the protocol to drop packets under load, which is the
problem we're seeing.  In our tests the server process cannot read
data fast enough to clear enough mbufs/clusters back to the system and
it gets stuck in a write() call.

Best,
George


More information about the freebsd-net mailing list