On Mon, Dec 03, 2018 at 03:15:06PM +0100, 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 a slight performance drop compared to split
virtqueues. I tested according to
http://doc.dpdk.org/guides/howto/pvp_reference_benchmark.html and I see
a small performance drop of 3-4 percent in PVP and and similar numbers
It's actually bigger with mergeable rx buffers turned off. I measured
13% less mpps with packed virtqueues.
regards,
Jens