• Jacob Keller's avatar
    ice: replace custom AIM algorithm with kernel's DIM library · cdf1f1f1
    Jacob Keller authored
    The ice driver has support for adaptive interrupt moderation, an
    algorithm for tuning the interrupt rate dynamically. This algorithm
    is based on various assumptions about ring size, socket buffer size,
    link speed, SKB overhead, ethernet frame overhead and more.
    
    The Linux kernel has support for a dynamic interrupt moderation
    algorithm known as "dimlib". Replace the custom driver-specific
    implementation of dynamic interrupt moderation with the kernel's
    algorithm.
    
    The Intel hardware has a different hardware implementation than the
    originators of the dimlib code had to work with, which requires the
    driver to use a slightly different set of inputs for the actual
    moderation values, while getting all the advice from dimlib of
    better/worse, shift left or right.
    
    The change made for this implementation is to use a pair of values
    for each of the 5 "slots" that the dimlib moderation expects, and
    the driver will program those pairs when dimlib recommends a slot to
    use. The currently implementation uses two tables, one for receive
    and one for transmit, and the pairs of values in each slot set the
    maximum delay of an interrupt and a maximum number of interrupts per
    second (both expressed in microseconds).
    
    There are two separate kinds of bugs fixed by using DIMLIB, one is
    UDP single stream send was too slow, and the other is that 8K
    ping-pong was going to the most aggressive moderation and has much
    too high latency.
    
    The overall result of using DIMLIB is that we meet or exceed our
    performance expectations set based on the old algorithm.
    Co-developed-by: default avatarJesse Brandeburg <jesse.brandeburg@intel.com>
    Signed-off-by: default avatarJesse Brandeburg <jesse.brandeburg@intel.com>
    Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
    Tested-by: default avatarTony Brelinski <tonyx.brelinski@intel.com>
    Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
    cdf1f1f1
ice.h 20.2 KB