• Nick Child's avatar
    ibmvnic: Only replenish rx pool when resources are getting low · dda10fc8
    Nick Child authored
    Previously, the driver would replenish the rx pool if the polling
    function consumed less than the budget. The logic being that the driver
    did not exhaust its budget so that must mean that the driver is not busy
    and has cycles to spare for replenishing the pool.
    
    So pool replenishment happens on every poll which did not consume
    the budget. This can very costly during request-response tests.
    
    In fact, an extra ~100pps can be seen in TCP_RR_150 tests when we remove
    this conditional. Trace results (ftrace, graph-time=1) for the poll
    function are below:
    Previous results:
        ibmvnic_poll = 64951846.0 us / 4167628.0 hits = AVG 15.58
        replenish_rx_pool = 17602846.0 us / 4710437.0 hits = AVG 3.74
    Now:
        ibmvnic_poll = 57673941.0 us / 4791737.0 hits = AVG 12.04
        replenish_rx_pool = 3938171.6 us / 4314.0 hits = AVG 912.88
    
    While the replenish function takes longer, it is hit less frequently
    meaning the ibmvnic_poll function, on average, is faster.
    
    Furthermore, this change does not have a negative effect on
    performance bandwidth/latency measurements.
    Signed-off-by: default avatarNick Child <nnac123@linux.ibm.com>
    Link: https://patch.msgid.link/20240807211809.1259563-2-nnac123@linux.ibm.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    dda10fc8
ibmvnic.c 183 KB