On Fri, Aug 25, 2017 at 7:32 PM, Michael S. Tsirkin <mst@xxxxxxxxxx> wrote: > On Fri, Aug 25, 2017 at 06:44:36PM -0400, Willem de Bruijn wrote: >> >> >> > We don't enable network watchdog on virtio but we could and maybe >> >> >> > should. >> >> >> >> >> >> Can you elaborate? >> >> > >> >> > The issue is that holding onto buffers for very long times makes guests >> >> > think they are stuck. This is funamentally because from guest point of >> >> > view this is a NIC, so it is supposed to transmit things out in >> >> > a timely manner. If host backs the virtual NIC by something that is not >> >> > a NIC, with traffic shaping etc introducing unbounded latencies, >> >> > guest will be confused. >> >> >> >> That assumes that guests are fragile in this regard. A linux guest >> >> does not make such assumptions. >> > >> > Yes it does. Examples above: >> > > > - a single slow flow can occupy the whole ring, you will not >> > > > be able to make any new buffers available for the fast flow >> >> Oh, right. Though those are due to vring_desc pool exhaustion >> rather than an upper bound on latency of any single packet. >> >> Limiting the number of zerocopy packets in flight to some fraction >> of the ring ensures that fast flows can always grab a slot. >> Running >> out of ubuf_info slots reverts to copy, so indirectly does this. But >> I read it correclty the zerocopy pool may be equal to or larger than >> the descriptor pool. Should we refine the zcopy_used test >> >> (nvq->upend_idx + 1) % UIO_MAXIOV != nvq->done_idx >> >> to also return false if the number of outstanding ubuf_info is greater >> than, say, vq->num >> 1? > > > We'll need to think about where to put the threshold, but I think it's > a good idea. > > Maybe even a fixed number, e.g. max(vq->num >> 1, X) to limit host > resources. > > In a sense it still means once you run out of slots zcopt gets disabled possibly permanently. > > Need to experiment with some numbers. I can take a stab with two flows, one delayed in a deep host qdisc queue. See how this change affects the other flow and also how sensitive that is to the chosen threshold value. _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization