On Wed, Nov 24, 2021 at 10:24 PM Maxime Coquelin
<[email protected]> wrote:
> @@ -2385,6 +2408,7 @@ netdev_dpdk_vhost_update_rx_counters(struct netdev_dpdk
> *dev,
> }
>
> stats->rx_bytes += packet_size;
> + q_stats->bytes += packet_size;
> }
>
> if (OVS_UNLIKELY(qos_drops)) {
> @@ -2437,7 +2461,7 @@ netdev_dpdk_vhost_rxq_recv(struct netdev_rxq *rxq,
> }
>
> rte_spinlock_lock(&dev->stats_lock);
> - netdev_dpdk_vhost_update_rx_counters(dev, batch->packets,
> + netdev_dpdk_vhost_update_rx_counters(dev, qid, batch->packets,
After some testing, instead of qid here, we should use rxq->queue_id :-)
The tx part is ok.
> nb_rx, qos_drops);
> rte_spinlock_unlock(&dev->stats_lock);
>
[snip]
With this fix, I start a vm with a 4 rxq vhost port.
This vhost port has a virtio counterpart bound to the vm virtio-net kmod.
After a while, I can see some stats for rx and tx packets:
# ovs-vsctl get interface vhost4 statistics | sed -e 's#[{}]##g' -e
's#, #\n#g' | grep -v '=0$'
rx_1_to_64_packets=15
rx_256_to_511_packets=25
rx_65_to_127_packets=35
rx_bytes=12185
rx_packets=75
rx_q1_bytes=242
rx_q1_packets=3
rx_q2_bytes=242
rx_q2_packets=3
rx_q3_bytes=11701
rx_q3_packets=69
tx_bytes=2414
tx_packets=20
tx_q0_bytes=2414
tx_q0_packets=20
All good, and per q stats nicely sums to the same value than the "global" stats.
I then stop the vm and look at stats:
# ovs-vsctl get interface vhost4 statistics | sed -e 's#[{}]##g' -e
's#, #\n#g' | grep -v '=0$'
rx_1_to_64_packets=15
rx_256_to_511_packets=26
rx_65_to_127_packets=38
rx_bytes=12776
rx_packets=79
tx_bytes=2414
tx_dropped=1
tx_packets=20
tx_q0_bytes=2414
tx_q0_packets=20
So we end up with misalignment of "global" stats and per q stats in
this situation.
Can we do something about it?
I am unsure about resetting all stats to 0, but it could be the
simpler solution...
--
David Marchand
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev