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
