From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Michael S. Tsirkin" Subject: Re: [PATCH] virtio: make udp more efficient by avoiding indirect desc Date: Tue, 11 Feb 2014 17:43:08 +0200 Message-ID: <20140211154308.GA467@redhat.com> References: <52FA3AAC.2050003@huawei.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: rusty@rustcorp.com.au, jasowang@redhat.com, KVM list To: Qin Chuanyu Return-path: Received: from mx1.redhat.com ([209.132.183.28]:53799 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751084AbaBKPiT (ORCPT ); Tue, 11 Feb 2014 10:38:19 -0500 Content-Disposition: inline In-Reply-To: <52FA3AAC.2050003@huawei.com> Sender: kvm-owner@vger.kernel.org List-ID: On Tue, Feb 11, 2014 at 10:58:52PM +0800, Qin Chuanyu wrote: > udp packet use 2 buffers at least, one for vnet_hdr and > one for skb->data. Not really, we use 1 buffer now with vnet_hdr inline with data. > we could change the threshold from 2 to 3, so the udp packet > which data buff only using single desc will gain from this. > the guest would avoid from allocating memory dynamically. > the host would avoid from translating indirect desc. > > Signed-off-by: Chuanyu Qin Optimization patch without any performance data? Such a change would need much more testing than that: would have to try various workloads with -net and -blk at least. > --- > drivers/virtio/virtio_ring.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c > index 28b5338..88d008f 100644 > --- a/drivers/virtio/virtio_ring.c > +++ b/drivers/virtio/virtio_ring.c > @@ -220,7 +220,7 @@ static inline int virtqueue_add(struct virtqueue *_vq, > > /* If the host supports indirect descriptor tables, and we have multiple > * buffers, then go indirect. FIXME: tune this threshold */ > - if (vq->indirect && total_sg > 1 && vq->vq.num_free) { > + if (vq->indirect && total_sg > 2 && vq->vq.num_free) { > head = vring_add_indirect(vq, sgs, next, total_sg, total_out, > total_in, > out_sgs, in_sgs, gfp); > -- > 1.7.3.1.msysgit.0