mbox series

[0/5] Fixes and enhancements for Tx path in Virtio PMD

Message ID 20190219105951.31046-1-tiwei.bie@intel.com (mailing list archive)
Headers
Series Fixes and enhancements for Tx path in Virtio PMD |

Message

Tiwei Bie Feb. 19, 2019, 10:59 a.m. UTC
  Below is a quick (unofficial) performance test (macfwd loop, 64B)
for the packed ring optimizations in this series on an Intel(R)
Xeon(R) Gold 6140 CPU @ 2.30GHz platform:

w/o this series:
packed ring normal/in-order:  ~10.4 Mpps

w/ this series:
packed ring normal:           ~10.9 Mpps
packed ring in-order:         ~11.3 Mpps

In the test, we need to make sure that the vhost side is fast enough.
So 4 forwarding cores are used in vhost side, and 1 forwarding core is
used in virtio side.

vhost side:

./x86_64-native-linuxapp-gcc/app/testpmd \
        -l 13,14,15,16,17 \
        --socket-mem 1024,0 \
        --file-prefix=vhost \
        --vdev=net_vhost0,iface=/tmp/vhost0,queues=4 \
        -- \
        --forward-mode=mac \
        -i \
        --rxq=4 \
        --txq=4 \
        --nb-cores 4

virtio side:

./x86_64-native-linuxapp-gcc/app/testpmd \
        -l 8,9,10,11,12 \
        --socket-mem 1024,0 \
        --single-file-segments \
        --file-prefix=virtio-user \
        --vdev=virtio_user0,path=/tmp/vhost0,queues=4,in_order=1,packed_vq=1 \
        -- \
        --forward-mode=mac \
        -i \
        --rxq=4 \
        --txq=4 \
        --nb-cores 1


Tiwei Bie (5):
  net/virtio: fix Tx desc cleanup for packed ring
  net/virtio: fix in-order Tx path for split ring
  net/virtio: fix in-order Tx path for packed ring
  net/virtio: introduce a helper for clearing net header
  net/virtio: optimize xmit enqueue for packed ring

 drivers/net/virtio/virtio_ethdev.c |   4 +-
 drivers/net/virtio/virtio_rxtx.c   | 203 ++++++++++++++++++++---------
 2 files changed, 146 insertions(+), 61 deletions(-)
  

Comments

Jason Wang Feb. 19, 2019, 1:40 p.m. UTC | #1
On 2019/2/19 下午6:59, Tiwei Bie wrote:
> Below is a quick (unofficial) performance test (macfwd loop, 64B)
> for the packed ring optimizations in this series on an Intel(R)
> Xeon(R) Gold 6140 CPU @ 2.30GHz platform:
>
> w/o this series:
> packed ring normal/in-order:  ~10.4 Mpps
>
> w/ this series:
> packed ring normal:           ~10.9 Mpps
> packed ring in-order:         ~11.3 Mpps


Since your series contain optimization for split ring as well. I wonder 
whether you have its numbers as well.

Thanks


>
> In the test, we need to make sure that the vhost side is fast enough.
> So 4 forwarding cores are used in vhost side, and 1 forwarding core is
> used in virtio side.
>
> vhost side:
>
> ./x86_64-native-linuxapp-gcc/app/testpmd \
>          -l 13,14,15,16,17 \
>          --socket-mem 1024,0 \
>          --file-prefix=vhost \
>          --vdev=net_vhost0,iface=/tmp/vhost0,queues=4 \
>          -- \
>          --forward-mode=mac \
>          -i \
>          --rxq=4 \
>          --txq=4 \
>          --nb-cores 4
>
> virtio side:
>
> ./x86_64-native-linuxapp-gcc/app/testpmd \
>          -l 8,9,10,11,12 \
>          --socket-mem 1024,0 \
>          --single-file-segments \
>          --file-prefix=virtio-user \
>          --vdev=virtio_user0,path=/tmp/vhost0,queues=4,in_order=1,packed_vq=1 \
>          -- \
>          --forward-mode=mac \
>          -i \
>          --rxq=4 \
>          --txq=4 \
>          --nb-cores 1
>
>
> Tiwei Bie (5):
>    net/virtio: fix Tx desc cleanup for packed ring
>    net/virtio: fix in-order Tx path for split ring
>    net/virtio: fix in-order Tx path for packed ring
>    net/virtio: introduce a helper for clearing net header
>    net/virtio: optimize xmit enqueue for packed ring
>
>   drivers/net/virtio/virtio_ethdev.c |   4 +-
>   drivers/net/virtio/virtio_rxtx.c   | 203 ++++++++++++++++++++---------
>   2 files changed, 146 insertions(+), 61 deletions(-)
>
  
Tiwei Bie Feb. 20, 2019, 2:23 a.m. UTC | #2
On Tue, Feb 19, 2019 at 09:40:05PM +0800, Jason Wang wrote:
> On 2019/2/19 下午6:59, Tiwei Bie wrote:
> > Below is a quick (unofficial) performance test (macfwd loop, 64B)
> > for the packed ring optimizations in this series on an Intel(R)
> > Xeon(R) Gold 6140 CPU @ 2.30GHz platform:
> > 
> > w/o this series:
> > packed ring normal/in-order:  ~10.4 Mpps
> > 
> > w/ this series:
> > packed ring normal:           ~10.9 Mpps
> > packed ring in-order:         ~11.3 Mpps
> 
> 
> Since your series contain optimization for split ring as well. I wonder
> whether you have its numbers as well.

The PPS of split ring in-order (with or without this series)
showed by testpmd isn't stable in my above test. So I didn't
manage to get some numbers..

> 
> Thanks
> 
> 
> > 
> > In the test, we need to make sure that the vhost side is fast enough.
> > So 4 forwarding cores are used in vhost side, and 1 forwarding core is
> > used in virtio side.
> > 
> > vhost side:
> > 
> > ./x86_64-native-linuxapp-gcc/app/testpmd \
> >          -l 13,14,15,16,17 \
> >          --socket-mem 1024,0 \
> >          --file-prefix=vhost \
> >          --vdev=net_vhost0,iface=/tmp/vhost0,queues=4 \
> >          -- \
> >          --forward-mode=mac \
> >          -i \
> >          --rxq=4 \
> >          --txq=4 \
> >          --nb-cores 4
> > 
> > virtio side:
> > 
> > ./x86_64-native-linuxapp-gcc/app/testpmd \
> >          -l 8,9,10,11,12 \
> >          --socket-mem 1024,0 \
> >          --single-file-segments \
> >          --file-prefix=virtio-user \
> >          --vdev=virtio_user0,path=/tmp/vhost0,queues=4,in_order=1,packed_vq=1 \
> >          -- \
> >          --forward-mode=mac \
> >          -i \
> >          --rxq=4 \
> >          --txq=4 \
> >          --nb-cores 1
> > 
> > 
> > Tiwei Bie (5):
> >    net/virtio: fix Tx desc cleanup for packed ring
> >    net/virtio: fix in-order Tx path for split ring
> >    net/virtio: fix in-order Tx path for packed ring
> >    net/virtio: introduce a helper for clearing net header
> >    net/virtio: optimize xmit enqueue for packed ring
> > 
> >   drivers/net/virtio/virtio_ethdev.c |   4 +-
> >   drivers/net/virtio/virtio_rxtx.c   | 203 ++++++++++++++++++++---------
> >   2 files changed, 146 insertions(+), 61 deletions(-)
> >
  
Maxime Coquelin Feb. 21, 2019, 5:45 p.m. UTC | #3
On 2/19/19 11:59 AM, Tiwei Bie wrote:
> Below is a quick (unofficial) performance test (macfwd loop, 64B)
> for the packed ring optimizations in this series on an Intel(R)
> Xeon(R) Gold 6140 CPU @ 2.30GHz platform:
> 
> w/o this series:
> packed ring normal/in-order:  ~10.4 Mpps
> 
> w/ this series:
> packed ring normal:           ~10.9 Mpps
> packed ring in-order:         ~11.3 Mpps
> 
> In the test, we need to make sure that the vhost side is fast enough.
> So 4 forwarding cores are used in vhost side, and 1 forwarding core is
> used in virtio side.
> 
> vhost side:
> 
> ./x86_64-native-linuxapp-gcc/app/testpmd \
>          -l 13,14,15,16,17 \
>          --socket-mem 1024,0 \
>          --file-prefix=vhost \
>          --vdev=net_vhost0,iface=/tmp/vhost0,queues=4 \
>          -- \
>          --forward-mode=mac \
>          -i \
>          --rxq=4 \
>          --txq=4 \
>          --nb-cores 4
> 
> virtio side:
> 
> ./x86_64-native-linuxapp-gcc/app/testpmd \
>          -l 8,9,10,11,12 \
>          --socket-mem 1024,0 \
>          --single-file-segments \
>          --file-prefix=virtio-user \
>          --vdev=virtio_user0,path=/tmp/vhost0,queues=4,in_order=1,packed_vq=1 \
>          -- \
>          --forward-mode=mac \
>          -i \
>          --rxq=4 \
>          --txq=4 \
>          --nb-cores 1
> 
> 
> Tiwei Bie (5):
>    net/virtio: fix Tx desc cleanup for packed ring
>    net/virtio: fix in-order Tx path for split ring
>    net/virtio: fix in-order Tx path for packed ring
>    net/virtio: introduce a helper for clearing net header
>    net/virtio: optimize xmit enqueue for packed ring
> 
>   drivers/net/virtio/virtio_ethdev.c |   4 +-
>   drivers/net/virtio/virtio_rxtx.c   | 203 ++++++++++++++++++++---------
>   2 files changed, 146 insertions(+), 61 deletions(-)
> 

Applied to dpdk-next-virtio/master.

Thanks,
Maxime