ixl 40G bad performance?

Bruce Evans brde at optusnet.com.au
Fri Oct 23 05:36:23 UTC 2015


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