[dpdk-dev] [PATCH 00/14] implement packed virtqueues

Jason Wang jasowang at redhat.com
Tue Feb 6 07:20:02 CET 2018



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


More information about the dev mailing list