[RFC v3 0/7] In order support for virtio_ring, vhost and vsock.

Guo Zhi posted 7 patches 3 years, 7 months ago
drivers/vhost/test.c         | 16 ++++++--
drivers/vhost/vhost.c        | 16 ++++++--
drivers/vhost/vsock.c        | 13 +++++-
drivers/virtio/virtio_ring.c | 79 +++++++++++++++++++++++++++++++-----
4 files changed, 104 insertions(+), 20 deletions(-)
[RFC v3 0/7] In order support for virtio_ring, vhost and vsock.
Posted by Guo Zhi 3 years, 7 months ago
In virtio-spec 1.1, new feature bit VIRTIO_F_IN_ORDER was introduced.
When this feature has been negotiated, virtio driver will use
descriptors in ring order: starting from offset 0 in the table, and
wrapping around at the end of the table. Vhost devices will always use
descriptors in the same order in which they have been made available.
This can reduce virtio accesses to used ring.

Based on updated virtio-spec, this series realized IN_ORDER prototype in virtio
driver and vhost. Currently IN_ORDER feature supported devices are *vhost_test*
and *vsock* in vhost and virtio-net in QEMU. IN_ORDER feature works well
combined with INDIRECT feature in this patch series.

Virtio driver in_order support for packed vq hasn't been done in this patch
series now.

Guo Zhi (7):
  vhost: expose used buffers
  vhost_test: batch used buffer
  vsock: batch buffers in tx
  vsock: announce VIRTIO_F_IN_ORDER in vsock
  virtio: unmask F_NEXT flag in desc_extra
  virtio: in order support for virtio_ring
  virtio: announce VIRTIO_F_IN_ORDER support

 drivers/vhost/test.c         | 16 ++++++--
 drivers/vhost/vhost.c        | 16 ++++++--
 drivers/vhost/vsock.c        | 13 +++++-
 drivers/virtio/virtio_ring.c | 79 +++++++++++++++++++++++++++++++-----
 4 files changed, 104 insertions(+), 20 deletions(-)

-- 
2.17.1
Re: [RFC v3 0/7] In order support for virtio_ring, vhost and vsock.
Posted by Jason Wang 3 years, 7 months ago
在 2022/9/1 13:54, Guo Zhi 写道:
> In virtio-spec 1.1, new feature bit VIRTIO_F_IN_ORDER was introduced.
> When this feature has been negotiated, virtio driver will use
> descriptors in ring order: starting from offset 0 in the table, and
> wrapping around at the end of the table. Vhost devices will always use
> descriptors in the same order in which they have been made available.
> This can reduce virtio accesses to used ring.
>
> Based on updated virtio-spec, this series realized IN_ORDER prototype in virtio
> driver and vhost. Currently IN_ORDER feature supported devices are *vhost_test*
> and *vsock* in vhost and virtio-net in QEMU. IN_ORDER feature works well
> combined with INDIRECT feature in this patch series.


As stated in the previous versions, I'd like to see performance numbers. 
We need to prove that the feature actually help for the performance.

And it would be even better if we do the in-order in this order (vhost 
side):

1) enable in-order but without batching used
2) enable in-order with batching used

Then we can see how:

1) in-order helps
2) batching helps

Thanks


>
> Virtio driver in_order support for packed vq hasn't been done in this patch
> series now.
>
> Guo Zhi (7):
>    vhost: expose used buffers
>    vhost_test: batch used buffer
>    vsock: batch buffers in tx
>    vsock: announce VIRTIO_F_IN_ORDER in vsock
>    virtio: unmask F_NEXT flag in desc_extra
>    virtio: in order support for virtio_ring
>    virtio: announce VIRTIO_F_IN_ORDER support
>
>   drivers/vhost/test.c         | 16 ++++++--
>   drivers/vhost/vhost.c        | 16 ++++++--
>   drivers/vhost/vsock.c        | 13 +++++-
>   drivers/virtio/virtio_ring.c | 79 +++++++++++++++++++++++++++++++-----
>   4 files changed, 104 insertions(+), 20 deletions(-)
>