From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id 373B65F25 for ; Thu, 13 Dec 2018 23:36:47 +0100 (CET) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 9223F356E5; Thu, 13 Dec 2018 22:36:46 +0000 (UTC) Received: from localhost (unknown [10.36.118.169]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1A43C600C0; Thu, 13 Dec 2018 22:36:43 +0000 (UTC) Date: Thu, 13 Dec 2018 23:36:42 +0100 From: Jens Freimann To: Maxime Coquelin Cc: dev@dpdk.org, tiwei.bie@intel.com, Gavin.Hu@arm.com Message-ID: <20181213223642.yrug3hxkopse4ymf@jenstp.localdomain> References: <20181213123453.15035-1-jfreimann@redhat.com> <9b395ae1-712f-5d7b-5561-7bd0e55df187@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: <9b395ae1-712f-5d7b-5561-7bd0e55df187@redhat.com> User-Agent: NeoMutt/20180716 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Thu, 13 Dec 2018 22:36:46 +0000 (UTC) Subject: Re: [dpdk-dev] [PATCH v12 00/10] implement packed virtqueues X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 13 Dec 2018 22:36:47 -0000 On Thu, Dec 13, 2018 at 05:38:02PM +0100, Maxime Coquelin wrote: > > >On 12/13/18 1:34 PM, Jens Freimann wrote: >>This is a basic implementation of packed virtqueues as specified in the >>Virtio 1.1 draft. A compiled version of the current draft is available >>at https://github.com/oasis-tcs/virtio-docs.git (or as .pdf at >>https://github.com/oasis-tcs/virtio-docs/blob/master/virtio-v1.1-packed-wd10.pdf >> >>A packed virtqueue is different from a split virtqueue in that it >>consists of only a single descriptor ring that replaces available and >>used ring, index and descriptor pointers. >> >>Each descriptor is readable and writable and has a flags field. These flags >>will mark if a descriptor is available or used. To detect new available descriptors >>even after the ring has wrapped, device and driver each have a >>single-bit wrap counter that is flipped from 0 to 1 and vice versa every time >>the last descriptor in the ring is used/made available. >> >>With this patch set I see performance equal or slightly better (+2-3%) in a PVP >>scenario compared to split virtqueues (v18.11 in host) >> >>regards, >>Jens >> >> >>v11->v12: >> * add a patch to disable control vq when packed vq is enabled. >> I have a patch to support this but it needs a bit more work >> and I think it shouldn't stop this series from being applied >> * rework mergeable receive buffer code to be more efficient, by >> batching descriptor refill, similar to what Maxime proposed for >> split virtqueues >> * removed unnecessary checks in virtio_recv_mergeable_pkts_packed >> (Maxime) >> * Did not merge receive functions as Maxime suggested because it seemed >> to cause a small performance regression >> * Move event_flags_shadow from patch 3 to 1 (Maxime) >> * Did not merge xmit functions and call _split/_packed functions from >> there because it seemed to cause small performance drop (-0.5%) >> (Maxime) >> >>v10-v11: >> * this version includes some fixes from Tiwei, so I added his >> Signed-off-by to some of the patches >> * fix hang with mergable rx buffers (Tiwei) >> * clean-up code and simplify buffer handling (Tiwei) >> * rebase to current virtio-next master branch >> >>v9-v10: >> * don't mix index into buffer list and descriptors >> * whitespace and formatting issues >> * remove "VQ:" in dump virtqueue patch >> * add extra packed vring struct to virtqueue and change function >> prototypes and code accordingly >> * move wrap_counters to virtqueue >> * make if-conditions for packed and !packed more clear in >> set_rxtx_funcs() >> * initialize wrap counters in first patch, instead of rx and tx >> implementation patch >> * make virtio-user not supported with packed virtqueues, to >> be fixed in other patch set? >> >>v8-v9: >> * fix virtio_ring_free_chain_packed() to handle descriptors >> correctly in case of out-of-order >> * fix check in virtqueue_xmit_cleanup_packed() to improve performance >> >>v7->v8: >> * move desc_is_used change to correct patch >> * remove trailing newline >> * correct xmit code, flags update and memory barrier >> * move packed desc init to dedicated function, split >> and packed variant >> >> >>Jens Freimann (9): >> net/virtio: vring init for packed queues >> net/virtio: add packed virtqueue defines >> net/virtio: add packed virtqueue helpers >> net/virtio: dump packed virtqueue data >> net/virtio: implement transmit path for packed queues > >Note that the series build is broken until this patch. I usually run 'git rebase -x "make"' to avoid. Must have missed it this time, but will fix it. regards, Jens