Hi Ilya,

On Thu, Dec 22, 2022 at 12:18 AM Ilya Maximets <[email protected]> wrote:
>
> On 12/19/22 16:03, David Marchand wrote:
> > The DPDK vhost-user library maintains more granular per queue stats
> > which can replace what OVS was providing for vhost-user ports.
> >
> > The benefits for OVS:
> > - OVS can skip parsing packet sizes on the rx side,
> > - vhost-user is aware of which packets are transmitted to the guest,
> >   so per *transmitted* packet size stats can be reported,
> > - more internal stats from vhost-user may be exposed, without OVS
> >   needing to understand them,
>
> Hi, David and Maxime.  Thanks for the patch!
>
> The change looks good to me in general.  I would like to avoid some
> of the code duplication it introduces, but I'm not sure how to actually
> do that, so it's fine as is.
>
> However, while testing the change I see a noticeable performance
> degradation in a simple V-to-V scenario with testpmd and virtio-user
> ports.  Performance dips by 1-3%.  It looks like the code added
> to DPDK for some reason a bit heavier than code removed from OVS,
> so they do not even out the packet rate with the current master.
>
> If I'm commenting out enabling of the RTE_VHOST_USER_NET_STATS_ENABLE
> flag, I can get performance back.  And it's even a bit higher, but
> not high enough to compensate for stats accounting in vhost library
> if stats are enabled.

Sorry it took me a while but I can't see such difference in numbers.


I did some experiments with a simple mono directionnal setup like:
virtio-user testpmd/txonly --> ovs --> virtio-user testpmd/rxonly
I had to restart testpmd between each restart of OVS: it looks like
virtio-user (as server) reconnection has some bug.

I took care to dedicate one HT by datapath thread (i.e. all physical
cores are isolated, and ovs pmd thread runs on a HT whose sibling is
idle. Same for testpmd rx / tx threads).
I rely on testpmd tx stats, grabing stats for 10 runs of a few seconds.

When OVS drops everything (no fwd to other port, which means we are
only counting received packets from OVS pov):
- master: 12.189Mpps
- series: 12.226Mpps (+0.3%)

I also tried with enabling/disabling stats support in vhost library
(+stats means adding RTE_VHOST_USER_NET_STATS_ENABLE, resp. -stats
means removing it):
- master+stats: 11.962Mpps (-1.9%)
- series-stats: 12.453Mpps (+2.1%)


When OVS fwds (which should be what you tested, correct?):
- master: 7.830Mpps
- series: 7.795Mpps (-0.5%)

- master+stats: 7.641Mpps (-2.5%)
- series-stats: 7.967Mpps (+1.7%)


I noticed though that if ovs pmd thread runs on a HT whose sibling is
busy polling a physical port, performance numbers are far more
unstable, and I can see differences up to +/- 5%, regardless of code
changes.


-- 
David Marchand

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to