On 12/20/10 17:11, Mark Kettenis wrote:
Date: Mon, 20 Dec 2010 16:12:24 +0100
From: Claudio Jeker<[email protected]>
With the change in rev. 1.99 of subr_pool() changing the limit
will no longer set the high watermark as well.
This causes i386 to stop forwading packets on very busy systems because
the pool thread is not fast enough to replenish the pool. So reintroduce
the pool_sethiwat() in this particular case as a workaround.
Sorry, claudio, but I think you need to fix the driver(s) that have
this issue. Even with adjusting the pool limits you may still end up
with an empty ring, and the driver should be able to restart itself if
mbufs come available again. A potential way to fix this is to start a
timeout if you end up with an empty ring because of mbug allocation
failures, and attempt to refill the ring when the timout fires.
I didn't look at the code, but this patch seems to fix PR 6524.