On Fri, 18 Apr 2008, [EMAIL PROTECTED] 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
_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to