On 1/9/23 10:31, Maxime Coquelin wrote:
> 
> 
> On 1/6/23 16:58, 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,
>> - dev->stats_lock won't be taken in rx/tx code unless some packet is
>>    dropped,
>> - 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
>>
>> Reviewed-by: Maxime Coquelin <maxime.coque...@redhat.com>
>> Signed-off-by: David Marchand <david.march...@redhat.com>
>> ---
>> Changes since v6:
>> - fixed tx_retries,
>> - dropped netdev_dpdk_vhost_update_[rt]x_counters helpers. This makes
>>    it clearer that a lock can be taken in the vhost rx/tx code and this
>>    aligns with the dpdk rx/tx code too,
>>
>> Changes since v5:
>> - added missing dev->stats_lock acquire in netdev_dpdk_vhost_get_stats,
>> - changed netdev_dpdk_vhost_update_[rt]x_counters to take dev->stats_lock
>>    only when some packets got dropped in OVS. Since the rx side won't
>>    take the lock unless some QoS configuration is in place, this change
>>    will likely have the same effect as separating stats_lock into rx/tx
>>    dedicated locks. Testing shows a slight (around 1%) improvement of
>>    performance for some V2V setup,
>>
>> Changes since v3:
>> - rebased to master now that v22.11 landed,
>> - fixed error code in stats helper when vhost port is not "running",
>> - shortened rx/tx stats macro names,
>>
>> 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    | 447 ++++++++++++++++++++++++++++++-------------
>>   tests/system-dpdk.at |  33 +++-
>>   2 files changed, 348 insertions(+), 132 deletions(-)
>>
> 
> My R-by was already set from previous revision, but just to confirm this
> new version is good to me:
> 
> Reviewed-by: Maxime Coquelin <maxime.coque...@redhat.com>


Thanks, Maxime and David!  Applied.

Best regards, Ilya Maximets.

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to