zonelimit issues...
Robert Watson
rwatson at FreeBSD.org
Sun Apr 20 09:32:26 UTC 2008
On Fri, 18 Apr 2008, gnn at freebsd.org wrote:
> I am wondering why this patch was never committed?
>
> http://people.freebsd.org/~delphij/misc/patch-zonelimit-workaround
>
> It does seem to address an issue I'm seeing where processes get into the
> zonelimit state through the use of mbufs (a high speed UDP packet receiver)
> but even after network pressure is reduced/removed the process never gets
> out of that state again. Applying the patch fixed the issue, but I'd like
> to have some discussion as to the general merits of the approach.
>
> Unfortunately the test that currently causes this is tied very tightly to
> code at work that I can't share, but I will hopefully be improving mctest to
> try to exhibit this behavior.
When you take all load off the system, do mbufs and clusters get properly
freed back to UMA (as visible in netstat -m)? If not, continuing to bump up
against the zonelimit would suggest an mbuf/cluster leak, in which case we
need to track that bug.
You might consider adding a debugging-only zonelimit waiter count to the UMA
zone, and checks/assertions that a wakeup is being generated properly. That
is, to confirm that the wakeup is generated when memory is freed up if there
are threads waiting. There is at least one as-yet MFC'd fix to the
sleep/wakeup code, I believe, that might be relevant here. Is the problem
you're reporting on 7.x, or on 8.x? If 8.x, that's probably not it, but if
7.x, it could be. (This same sleep/wakeup bug occasionally leads to wedging
of dump(8), I believe).
Robert N M Watson
Computer Laboratory
University of Cambridge
More information about the freebsd-net
mailing list