• Paolo Abeni's avatar
    vhost_net: use packet weight for rx handler, too · db688c24
    Paolo Abeni authored
    Similar to commit a2ac9990 ("vhost-net: set packet weight of
    tx polling to 2 * vq size"), we need a packet-based limit for
    handler_rx, too - elsewhere, under rx flood with small packets,
    tx can be delayed for a very long time, even without busypolling.
    
    The pkt limit applied to handle_rx must be the same applied by
    handle_tx, or we will get unfair scheduling between rx and tx.
    Tying such limit to the queue length makes it less effective for
    large queue length values and can introduce large process
    scheduler latencies, so a constant valued is used - likewise
    the existing bytes limit.
    
    The selected limit has been validated with PVP[1] performance
    test with different queue sizes:
    
    queue size		256	512	1024
    
    baseline		366	354	362
    weight 128		715	723	670
    weight 256		740	745	733
    weight 512		600	460	583
    weight 1024		423	427	418
    
    A packet weight of 256 gives peek performances in under all the
    tested scenarios.
    
    No measurable regression in unidirectional performance tests has
    been detected.
    
    [1] https://developers.redhat.com/blog/2017/06/05/measuring-and-comparing-open-vswitch-performance/Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
    Acked-by: default avatarJason Wang <jasowang@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    db688c24
net.c 34.7 KB