Add support for adjusting the interrupt throttling rate via
authorMatthew Dillon <dillon@dragonflybsd.org>
Mon, 22 Nov 2004 00:46:14 +0000 (00:46 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Mon, 22 Nov 2004 00:46:14 +0000 (00:46 +0000)
commitd0870c725cfb676b363d73631ad239507c3ca316
tree12f490101bc79096ad50147e1e5d7076b052ae65
parentfc21741ac7c0e3ac3d9d3707f7883e2c9e9cf9d1
Add support for adjusting the interrupt throttling rate via
hw.emX.int_throttle_ceil, and change the default from 8000hz
to 10000hz to improve throughput with default TCP window sizes
through a GiGE switch in a LAN environment.

Note the following test results using iperf between two machines:

    * Shuttle Athlon 64 3200+ box, EM card in 32 bit PCI slot
    * 2 machines connected through a GiGE switch
    * All other hw.em0 delays set to 0 on both sides
    * throttle settings set on both sides
    * -w option set on iperf client AND server for 63.5KB window
    * software interrupt throttling has been turned off for these tests

    throttle    result          result
    freq        (32.5KB win)    (63.5KB win)
                (default)
    --------    --------------  -----------

  maxrate       481 MBit/s      533 MBit/s      (not sure what's going on here)
  120000        518 MBit/s      558 MBit/s      (not sure what's going on here)
  100000        613 MBit/s      667 MBit/s      (not sure what's going on here)
   70000        679 MBit/s      691 MBit/s
   60000        668 MBit/s      694 MBit/s
   50000        678 MBit/s      684 MBit/s
   40000        694 MBit/s      696 MBit/s
   30000        694 MBit/s      696 MBit/s
   20000        698 MBit/s      703 MBit/s
   10000        707 MBit/s      716 MBit/s
    9000        708 MBit/s      716 MBit/s
    8000        710 MBit/s      717 MBit/s      <--- drop off pt 32.5KB win
    7000        683 MBit/s      716 MBit/s
    6000        680 MBit/s      720 MBit/s
    5000        652 MBit/s      718 MBit/s      <--- drop off pt 63.5KB win
    4000        555 Mbit/s      695 MBit/s
    3000        522 MBit/s      533 MBit/s      <--- GiGE throttling likely
    2000        449 MBit/s      384 MBit/s      (256 ring descriptors =
    1000        260 MBit/s      193 MBit/s        2500 hz minimum)
sys/dev/netif/em/if_em.c
sys/dev/netif/em/if_em.h