From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jason Wang Subject: Re: [PATCH 00/14] implement packed virtqueues Date: Tue, 6 Feb 2018 14:20:02 +0800 Message-ID: <6cfdc95c-82a2-45d8-76ca-7961d5a76a61@redhat.com> References: <20180129141143.13437-1-jfreimann@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Cc: tiwei.bie@intel.com, yliu@fridaylinux.org, maxime.coquelin@redhat.com, mst@redhat.com, Wei Xu To: Jens Freimann , dev@dpdk.org Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id D25061B6BB for ; Tue, 6 Feb 2018 07:20:18 +0100 (CET) In-Reply-To: <20180129141143.13437-1-jfreimann@redhat.com> Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 2018年01月29日 22:11, 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-wd07.pdf > > It does not implement yet indirect descriptors and checksum offloading. > VIRTIO_F_IN_ORER is not implemented, as well as support for mergeable buffers > with packed queues. Patches for this will follow soon. > > 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 buffer. > > 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. > > The idea behind this is to 1. improve performance by avoiding cache misses > and 2. be easier for devices to implement. > > Regarding performance: with these patches I get 21.13 Mpps on my system > as compared to 18.8 Mpps with the virtio 1.0 code. Packet size was 64 > bytes, 0.05% acceptable loss. Test setup is described as in > http://dpdk.org/doc/guides/howto/pvp_reference_benchmark.html > > Packet generator: > MoonGen > Intel(R) Xeon(R) CPU E5-2665 0 @ 2.40GHz > Intel X710 NIC > RHEL 7.4 > > Device under test: > Intel(R) Xeon(R) CPU E5-2667 v4 @ 3.20GHz > Intel X710 NIC > RHEL 7.4 > > VM on DuT: RHEL7.4 > > I plan to do more performance test with bigger frame sizes. > > This patch series is based on a prototype implemented by Yuanhan Liu and > Tiwei Bie. > > Hi Jens: May I ask how do you test the patch? I believe you need some basic packed ring support in both qemu and vhost-user protocol. Thanks