• Íñigo Huguet's avatar
    sfc: use budget for TX completions · 4aaf2c52
    Íñigo Huguet authored
    When running workloads heavy unbalanced towards TX (high TX, low RX
    traffic), sfc driver can retain the CPU during too long times. Although
    in many cases this is not enough to be visible, it can affect
    performance and system responsiveness.
    
    A way to reproduce it is to use a debug kernel and run some parallel
    netperf TX tests. In some systems, this will lead to this message being
    logged:
      kernel:watchdog: BUG: soft lockup - CPU#12 stuck for 22s!
    
    The reason is that sfc driver doesn't account any NAPI budget for the TX
    completion events work. With high-TX/low-RX traffic, this makes that the
    CPU is held for long time for NAPI poll.
    
    Documentations says "drivers can process completions for any number of Tx
    packets but should only process up to budget number of Rx packets".
    However, many drivers do limit the amount of TX completions that they
    process in a single NAPI poll.
    
    In the same way, this patch adds a limit for the TX work in sfc. With
    the patch applied, the watchdog warning never appears.
    
    Tested with netperf in different combinations: single process / parallel
    processes, TCP / UDP and different sizes of UDP messages. Repeated the
    tests before and after the patch, without any noticeable difference in
    network or CPU performance.
    
    Test hardware:
    Intel(R) Xeon(R) CPU E5-1620 v4 @ 3.50GHz (4 cores, 2 threads/core)
    Solarflare Communications XtremeScale X2522-25G Network Adapter
    
    Fixes: 5227eccc ("sfc: remove tx and MCDI handling from NAPI budget consideration")
    Fixes: d19a5372 ("sfc_ef100: TX path for EF100 NICs")
    Reported-by: default avatarFei Liu <feliu@redhat.com>
    Signed-off-by: default avatarÍñigo Huguet <ihuguet@redhat.com>
    Acked-by: default avatarMartin Habets <habetsm.xilinx@gmail.com>
    Link: https://lore.kernel.org/r/20230615084929.10506-1-ihuguet@redhat.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    4aaf2c52
ef100_nic.c 40.8 KB