On Fri, Nov 18, 2022 at 4:16 PM Maxime Coquelin
<[email protected]> wrote:
> On 11/9/22 21:38, 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,
> >
> > Note: the vhost-user library does not provide global stats for a port.
> > The proposed implementation is to have the global stats (exposed via
> > netdev_get_stats()) computed by querying and aggregating all per queue
> > stats.
> > Since per queue stats are exposed via another netdev ops
> > (netdev_get_custom_stats()), this may lead to some race and small
> > discrepancies.
> > This issue might already affect other netdev classes.
> >
> > Example:
> > $ ovs-vsctl get interface vhost4 statistics |
> >    sed -e 's#[{}]##g' -e 's#, #\n#g' |
> >    grep -v =0$
> > rx_1_to_64_packets=12
> > rx_256_to_511_packets=15
> > rx_65_to_127_packets=21
> > rx_broadcast_packets=15
> > rx_bytes=7497
> > rx_multicast_packets=33
> > rx_packets=48
> > rx_q0_good_bytes=242
> > rx_q0_good_packets=3
> > rx_q0_guest_notifications=3
> > rx_q0_multicast_packets=3
> > rx_q0_size_65_127_packets=2
> > rx_q0_undersize_packets=1
> > rx_q1_broadcast_packets=15
> > rx_q1_good_bytes=7255
> > rx_q1_good_packets=45
> > rx_q1_guest_notifications=45
> > rx_q1_multicast_packets=30
> > rx_q1_size_256_511_packets=15
> > rx_q1_size_65_127_packets=19
> > rx_q1_undersize_packets=11
> > tx_1_to_64_packets=36
> > tx_256_to_511_packets=45
> > tx_65_to_127_packets=63
> > tx_broadcast_packets=45
> > tx_bytes=22491
> > tx_multicast_packets=99
> > tx_packets=144
> > tx_q0_broadcast_packets=30
> > tx_q0_good_bytes=14994
> > tx_q0_good_packets=96
> > tx_q0_guest_notifications=96
> > tx_q0_multicast_packets=66
> > tx_q0_size_256_511_packets=30
> > tx_q0_size_65_127_packets=42
> > tx_q0_undersize_packets=24
> > tx_q1_broadcast_packets=15
> > tx_q1_good_bytes=7497
> > tx_q1_good_packets=48
> > tx_q1_guest_notifications=48
> > tx_q1_multicast_packets=33
> > tx_q1_size_256_511_packets=15
> > tx_q1_size_65_127_packets=21
> > tx_q1_undersize_packets=12
> >
> > Signed-off-by: David Marchand <[email protected]>
> > ---
> > Changes since RFC v2:
> > - dropped the experimental api check (now that the feature is marked
> >    stable in DPDK),
> > - moved netdev_dpdk_get_carrier() forward declaration next to the
> >    function needing it,
> > - used per q stats for netdev_get_stats() and removed OVS per packet
> >    size accounting logic,
> > - fixed small packets counter (see rx_undersized_errors hack),
> > - added more Tx stats,
> > - added unit tests,
> >
> > ---
> >   lib/netdev-dpdk.c    | 398 ++++++++++++++++++++++++++++++++-----------
> >   tests/system-dpdk.at |  33 +++-
> >   2 files changed, 332 insertions(+), 99 deletions(-)
> >
>
> It looks good to me, thanks for working on this!
>
> Reviewed-by: Maxime Coquelin <[email protected]>

Thanks Maxime.


-- 
David Marchand

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

Reply via email to