• David Vrabel's avatar
    xen-netfront: always keep the Rx ring full of requests · 1f3c2eba
    David Vrabel authored
    A full Rx ring only requires 1 MiB of memory.  This is not enough
    memory that it is useful to dynamically scale the number of Rx
    requests in the ring based on traffic rates, because:
    
    a) Even the full 1 MiB is a tiny fraction of a typically modern Linux
       VM (for example, the AWS micro instance still has 1 GiB of memory).
    
    b) Netfront would have used up to 1 MiB already even with moderate
       data rates (there was no adjustment of target based on memory
       pressure).
    
    c) Small VMs are going to typically have one VCPU and hence only one
       queue.
    
    Keeping the ring full of Rx requests handles bursty traffic better
    than trying to converge on an optimal number of requests to keep
    filled.
    
    On a 4 core host, an iperf -P 64 -t 60 run from dom0 to a 4 VCPU guest
    improved from 5.1 Gbit/s to 5.6 Gbit/s.  Gains with more bursty
    traffic are expected to be higher.
    Signed-off-by: default avatarDavid Vrabel <david.vrabel@citrix.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    1f3c2eba
xen-netfront.c 55 KB