tech-net archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: NetBSD 5.1 TCP performance issue (lots of ACK)

On Fri, 28 Oct 2011 16:10:36 +0200
Manuel Bouyer <> wrote:

> On Thu, Oct 27, 2011 at 07:51:43PM +0200, Manuel Bouyer wrote:
> > On Thu, Oct 27, 2011 at 12:00:33PM -0400, Thor Lancelot Simon wrote:
> > > It's possible this has to do with the interrupt moderation
> > > tuning.  I believe we've been pending the checkin of better
> > > values than the ones I worked out from the documentation for
> > > quite some time -- there were highly unobvious performance
> > > effects with small buffers.  Simon did a bunch of testing and
> > > concluded, as I recall, that the values used by Intel in the
> > > Linux driver were "magic" and that we should use those, not mine.
> > > 
> > > If this hasn't been adjusted to match the Linux driver, you might
> > > want to take a quick look at the values it uses and see whether
> > > they yield better small-buffer performance in your case.
> > 
> > I looked quickly at this and came up with the attached patch.
> > 
> > With this (installed on both NetBSD hosts) I get mittiged results:
> > - the NetBSD client against the linux server gets degranded and
> > unstable performances several runs gives large variations in speed
> > - the NetBSD client against the NetBSD server gets better
> > performances in average (but still not in the 90MB range) and also
> > with large variations between runs
> > - the linux client against the NetBSD server gets a little boost and
> >   the speed is stll stable between runs
> > - ttcp performances between NetBSD hosts gets a little boost too,
> >   and the speed is stll stable between runs
> > 
> > But I do get Ierrs on both NetBSD hosts now, with the ttcp or
> > glusterfs test. I don't know where these errors comes from. Linux
> > has no errors. I don't think it's wm_add_rxbuf(), netstat -m and
> > vmstat -m shows no issues with mbuf allocations.
> > So I guess these are errors at the adapter level, we may need to
> > change more things to match these values.
> > Also, linux seems to be using more advanced features for these
> > adapters, this is something we may have to look at too.
> Here is an updated patch. The key point to avoid the receive errors is
> to do another BUS_DMASYNC after reading wrx_status, before reading the
> other values to avoid reading e.g. len before status gets updated.
> The errors were because of 0-len receive descriptors.
> With this I get 113MB/s with the ttcp test, and between 70 and 90MB/s
> with glusterfs. the NetBSD client now gets the same speed with a
> NetBSD or linux server.
> In the patch there is changes for the WM_F_NEWQUEUE adapters but they
> may not be correct. When using WM_F_NEWQUEUE for the i80003 (which
> the linux driver does), performances are a little lower and I get
> a high interrupt rate - just as if interrupt mitigation was not
> working.

Hi Manuel

Have there been issues with these patches that prevent them from being
applied to -current and/or pulled up?  (says he who saw reasonably
abysmal network performance this weekend on a bunch of machines with
wm0 in use, and would like to see some better performance.)



Greg Oster

Home | Main Index | Thread Index | Old Index