ixl 40G bad performance?

Eric Joyner erj at freebsd.org
Fri Oct 23 21:43:10 UTC 2015


Bruce mostly has it right -- ITR is the minimum latency between interrupts.
But, it does actually guarantee a minimum period between interrupts.
Though, Fortville actually is unique a little bit in that there is another
ITR setting that can ensure a certain average number of interrupts per
second (called Interrupt Rate Limiting), though, but I don't think this is
used in the current version of the driver.

I see that the sysctl does clobber the global value, but have you tried
lowering the interval / raising the rate? You could try something like
10usecs, and see if that helps. We'll do some more investigation here --
3Gb/s on a 40Gb/s using default settings is terrible, and we shouldn't let
that be happening.

- Eric

On Thu, Oct 22, 2015 at 10:36 PM Bruce Evans <brde at optusnet.com.au> wrote:

> On Wed, 21 Oct 2015, Bruce Evans wrote:
>
> > Fix for em:
> >
> > X diff -u2 if_em.c~ if_em.c
> > X --- if_em.c~        2015-09-28 06:29:35.000000000 +0000
> > X +++ if_em.c 2015-10-18 18:49:36.876699000 +0000
> > X @@ -609,8 +609,8 @@
> > X         em_tx_abs_int_delay_dflt);
> > X     em_add_int_delay_sysctl(adapter, "itr",
> > X -       "interrupt delay limit in usecs/4",
> > X +       "interrupt delay limit in usecs",
> > X         &adapter->tx_itr,
> > X         E1000_REGISTER(hw, E1000_ITR),
> > X -       DEFAULT_ITR);
> > X +       1000000 / MAX_INTS_PER_SEC);
> > X X   /* Sysctl for limiting the amount of work done in the taskqueue */
> >
> > "delay limit" is fairly good wording.  Other parameters tend to give long
> > delays, but itr limits the longest delay due to interrupt moderation to
> > whatever the itr respresents.
>
> Everything in the last paragraph is backwards (inverted).  Other
> parameters tend to give short delays.  They should be set to small
> values to minimise latency.  Then under load, itr limits the interrupt
> _rate_ from above.  The interrupt delay is the inverse of the interrupt
> rate, so it is limited from below.  So "delay limit" is fairly bad
> wording.  Normally, limits are from above, but the inversion makes
> the itr limit from below.
>
> This is most easily understood by converting itr to a rate: itr = 125
> means a rate limit of 8000 Hz.  It doesn't quite mean that the latency
> is at least 125 usec.  No one wants to ensure large latencies, and the
> itr setting only ensures a minimal average latency them under load.
>
> Bruce
>


More information about the freebsd-net mailing list