Reading if_em.h

 77  * EM_TIDV - Transmit Interrupt Delay Value
 78  * Valid Range: 0-65535 (0=off)
 79  * Default Value: 64
 80  *   This value delays the generation of transmit interrupts in units of
 81  *   1.024 microseconds. Transmit interrupt reduction can improve CPU
 82  *   efficiency if properly tuned for specific network traffic. If the
 83  *   system is reporting dropped transmits, this value may be set too high
 84  *   causing the driver to run out of available transmit descriptors.


seems to indicate that 'dropped transmits' may be due to the 'tx_int_delay' being too high. So, I lowered the Transmit Interrupt Delay Values 33 useconds. I will report if this helps.
Does anyone have experience using tuning these values?

 dev.em.2.tx_int_delay: 33
 dev.em.2.tx_abs_int_delay: 33


The Intel docs explain the tx_int_delay vs the tx_abs_int_delay:
"In [high traffic] situations, the absolute timer is the source of most
 device interrupts. Under light loads or brief bursts of traffic, the
 packet timers are the primary source of interrupts.  In these situations,
 the packet timers determine the latency suffered by most packets. The
 packet timers also determine the minimum traffic rate required to trigger
 the absolute timer interrupts. For example, if the traffic rate is high
 enough to prevent the packet timer from ever expiring, then the GbE
 controller does not interrupt until the absolute timer has expired."

That is why I picked a tx_abs_int_delay == tx_int_delay.

The source code references running out of available transmit descriptors...
Is there a way to bump up the number of available transmit descriptors or to change the packet buffer size? here is the dev.em.2.debug info:

 kernel: em2: Adapter hardware address = 0xc4d91224
 kernel: em2: CTRL = 0x400c0241 RCTL = 0x8002
 kernel: em2: Packet buffer = Tx=16k Rx=32k
 kernel: em2: Flow control watermarks high = 30720 low = 29220
 kernel: em2: tx_int_delay = 32, tx_abs_int_delay = 32
 kernel: em2: rx_int_delay = 0, rx_abs_int_delay = 66
 kernel: em2: fifo workaround = 0, fifo_reset_count = 0
 kernel: em2: hw tdh = 41, hw tdt = 41
 kernel: em2: hw rdh = 130, hw rdt = 129
 kernel: em2: Num Tx descriptors avail = 254         (Can I increase?)
 kernel: em2: Tx Descriptors not avail1 = 15         (Why not available?)
 kernel: em2: Tx Descriptors not avail2 = 0
 kernel: em2: Std mbuf failed = 0
 kernel: em2: Std mbuf cluster failed = 0
 kernel: em2: Driver dropped packets = 0
 kernel: em2: Driver tx dma failure in encap = 0

(not sure why tx_int_delay is 32 when I set it to 33... starts counting at 0?)


Rudy



Reference for if_em.h:
  http://fxr.watson.org/fxr/source/dev/em/if_em.h?v=FREEBSD7
Referenve for Absolute vs Packet timer:
  http://www.intel.com/design/network/applnots/ap450.pdf  (page 12)
_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to