• A
    virtio-net: Limit number of packets sent per TX flush · e3f30488
    Alex Williamson 提交于
    If virtio_net_flush_tx() is called with notification disabled, we can
    race with the guest, processing packets at the same rate as they
    get produced.  The trouble is that this means we have no guaranteed
    exit condition from the function and can spend minutes in there.
    Currently flush_tx is only called with notification on, which seems
    to limit us to one pass through the queue per call.  An upcoming
    patch changes this.
    
    Also add an option to set this value on the command line as different
    workloads may wish to use different values.  We can't necessarily
    support any random value, so this is a developer option: x-txburst=
    Usage:
    
    -device virtio-net-pci,x-txburst=64 # 64 packets per tx flush
    
    One pass through the queue (256) seems to be a good default value
    for this, balancing latency with throughput.  We use a signed int
    for x-txburst because 2^31 packets in a burst would take many, many
    minutes to process and it allows us to easily return a negative
    value value from virtio_net_flush_tx() to indicate a back-off
    or error condition.
    Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
    Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
    e3f30488
virtio-net.c 28.9 KB