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
_______________________________________________
freebsd-net@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"