Limits on jumbo mbuf cluster allocation

Garrett Wollman wollman at bimajority.org
Sun Mar 10 06:05:01 UTC 2013


<<On Fri, 8 Mar 2013 12:13:28 -0800, Jack Vogel <jfvogel at gmail.com> said:

> Yes, in the past the code was in this form, it should work fine Garrett,
> just make sure
> the 4K pool is large enough.

[Andre Oppermann's patch:]
>> if (adapter->max_frame_size <= 2048)
adapter-> rx_mbuf_sz = MCLBYTES;
>> -       else if (adapter->max_frame_size <= 4096)
>> +       else
adapter-> rx_mbuf_sz = MJUMPAGESIZE;
>> -       else if (adapter->max_frame_size <= 9216)
>> -               adapter->rx_mbuf_sz = MJUM9BYTES;
>> -       else
>> -               adapter->rx_mbuf_sz = MJUM16BYTES;

So I tried exactly this, and it certainly worked insofar as only 4k
clusters were allocated, but NFS performance went down precipitously
(to fewer than 100 ops/s where normally it would be doing 2000
ops/s).  I took a tcpdump while it was in this state, which I will try
to make some sense of when I get back to the office.  (It wasn't
livelocked; in fact, the server was mostly idle, but responses would
take seconds rather than milliseconds -- assuming the client could
even successfully mount the server at all, which the Debian
automounter frequently refused to do.)

I ended up reverting back to the old kernel (which I managed to lose
the sources for), and once I get my second server up, I will try to do
some more testing to see if I can identify the source of the problem.

-GAWollman



More information about the freebsd-net mailing list