> On Wed, Sep 18, 2024 at 4:01 AM Jun Wang <[email protected]> wrote:
> >
> > >On Mon, Sep 16, 2024 at 9:46 AM Eelco Chaudron <[email protected]> wrote:
> > > > On 14 Sep 2024, at 7:26, Jun Wang wrote:
> > > >
> > > > > For many network cards, xstat statistics cannot be queried in the
> > > > > ovs interface. A new interface is added to retrieve all xstat
> > > > > information of the network card.
> > > > Hi Jun,
> > > >
> > > > Isn’t this already handled with netdev_dpdk_get_custom_stats()? I think
> > > > you can see them with ‘ovs-vsctl get Interface <port> statistics.
> > > >
> > > > If this is not the case this is what we should enhance.
> > >
> > > xstats are currently filtered to only save per queue stats and some
> > > common counters.
> >
> > > static bool
> > > is_queue_stat(const char *s)
> > > {
> > > uint16_t tmp;
> > >
> > > return (s[0] == 'r' || s[0] == 't') &&
> > > (ovs_scan(s + 1, "x_q%"SCNu16"_packets", &tmp) ||
> > > ovs_scan(s + 1, "x_q%"SCNu16"_bytes", &tmp));
> > > }
> > >
> > > static void
> > > netdev_dpdk_configure_xstats(struct netdev_dpdk *dev)
> > > OVS_REQUIRES(dev->mutex)
> > > {
> > > ...
> > >
> > > /* For custom stats, we filter out everything except per
> > > rxq/txq basic
> > > * stats, and dropped, error and management counters. */
> > > if (is_queue_stat(name) ||
> > > string_ends_with(name, "_errors") ||
> > > strstr(name, "_management_") ||
> > > string_ends_with(name, "_dropped")) {
> > >
> > > dev->rte_xstats_ids[dev->rte_xstats_ids_size] = id;
> > > dev->rte_xstats_ids_size++;
> > > }
> > >
> > >
> > > Could you explain which stats you are missing?
> >
> > Hi David,
> > As you mentioned, I also found that the results obtained by
> > netdev_dpdk_get_custom_stats are filtered. However, I noticed that in
> > DPDK, different net drivers handle xstats commands in various ways.
> > If we apply a unified filtering process, it may result in not being
> > able to retrieve the desired results for different net drivers.
> > Therefore, I believe adding a new interface might be a suitable
> > solution. For example, the xstats of the ixgbe/i40e/txgbe driver.
>
> Well, the problem is that drivers came up with all the stats they
> could get from the hw with no unification.
> This is why I was requesting some example of the stats you need, to
> see if DPDK can align drivers, and then OVS filter can be extended.
>
> On the other hand, for *debugging*, you may query those vendor
> specific stats via the DPDK telemetry socket.
I tried using DPDK telemetry with the X710 network card, and it was
indeed able to retrieve all xstat statistics. However, there seems to
be an issue with retrieving xstat data from the Wangxun network card
using the txgbe driver.
This might be an issue with the specific driver.
X710 i40e driver:
--> /ethdev/xstats,0
{
"/ethdev/xstats": {
"rx_good_packets": 4158196,
"tx_good_packets": 817922,
"rx_good_bytes": 307686767,
"tx_good_bytes": 64879395,
"rx_missed_errors": 0,
"rx_errors": 0,
"tx_errors": 0,
"rx_mbuf_allocation_errors": 0,
"rx_unicast_packets": 804771,
"rx_multicast_packets": 387605,
"rx_broadcast_packets": 2947488,
"rx_dropped_packets": 0,
"rx_unknown_protocol_packets": 4158200,
"rx_size_error_packets": 0,
"tx_unicast_packets": 799583,
"tx_multicast_packets": 18288,
"tx_broadcast_packets": 51,
"tx_dropped_packets": 0,
"tx_link_down_dropped": 0,
"rx_crc_errors": 0,
"rx_illegal_byte_errors": 0,
"rx_error_bytes": 0,
"mac_local_errors": 1,
"mac_remote_errors": 1,
"rx_length_errors": 0,
"tx_xon_packets": 0,
"rx_xon_packets": 0,
"tx_xoff_packets": 0,
"rx_xoff_packets": 0,
"rx_size_64_packets": 546485,
"rx_size_65_to_127_packets": 3542514,
"rx_size_128_to_255_packets": 18619,
"rx_size_256_to_511_packets": 18319,
"rx_size_512_to_1023_packets": 8458,
"rx_size_1024_to_1522_packets": 5469,
"rx_size_1523_to_max_packets": 0,
"rx_undersized_errors": 0,
"rx_oversize_errors": 0,
"rx_mac_short_dropped": 0,
"rx_fragmented_errors": 0,
"rx_jabber_errors": 0,
"tx_size_64_packets": 198245,
"tx_size_65_to_127_packets": 599690,
"tx_size_128_to_255_packets": 19645,
"tx_size_256_to_511_packets": 236,
"tx_size_512_to_1023_packets": 53,
"tx_size_1024_to_1522_packets": 53,
"tx_size_1523_to_max_packets": 0,
"rx_flow_director_atr_match_packets": 0,
"rx_flow_director_sb_match_packets": 378618,
"tx_low_power_idle_status": 0,
"rx_low_power_idle_status": 0,
"tx_low_power_idle_count": 0,
"rx_low_power_idle_count": 0,
"rx_priority0_xon_packets": 0,
"rx_priority1_xon_packets": 0,
"rx_priority2_xon_packets": 0,
"rx_priority3_xon_packets": 0,
"rx_priority4_xon_packets": 0,
"rx_priority5_xon_packets": 0,
"rx_priority6_xon_packets": 0,
"rx_priority7_xon_packets": 0,
"rx_priority0_xoff_packets": 0,
"rx_priority1_xoff_packets": 0,
"rx_priority2_xoff_packets": 0,
"rx_priority3_xoff_packets": 0,
"rx_priority4_xoff_packets": 0,
"rx_priority5_xoff_packets": 0,
"rx_priority6_xoff_packets": 0,
"rx_priority7_xoff_packets": 0,
"tx_priority0_xon_packets": 0,
"tx_priority1_xon_packets": 0,
"tx_priority2_xon_packets": 0,
"tx_priority3_xon_packets": 0,
"tx_priority4_xon_packets": 0,
"tx_priority5_xon_packets": 0,
"tx_priority6_xon_packets": 0,
"tx_priority7_xon_packets": 0,
"tx_priority0_xoff_packets": 0,
"tx_priority1_xoff_packets": 0,
"tx_priority2_xoff_packets": 0,
"tx_priority3_xoff_packets": 0,
"tx_priority4_xoff_packets": 0,
"tx_priority5_xoff_packets": 0,
"tx_priority6_xoff_packets": 0,
"tx_priority7_xoff_packets": 0,
"tx_priority0_xon_to_xoff_packets": 0,
"tx_priority1_xon_to_xoff_packets": 0,
"tx_priority2_xon_to_xoff_packets": 0,
"tx_priority3_xon_to_xoff_packets": 0,
"tx_priority4_xon_to_xoff_packets": 0,
"tx_priority5_xon_to_xoff_packets": 0,
"tx_priority6_xon_to_xoff_packets": 0,
"tx_priority7_xon_to_xoff_packets": 0
}
}
wangxun txgbe driver:
--> /ethdev/xstats,0
{
"/ethdev/xstats": {
"rx_good_packets": 28224,
"tx_good_packets": 110,
"rx_good_bytes": 3048375,
"tx_good_bytes": 13640,
"rx_missed_errors": 0,
"rx_errors": 0,
"tx_errors": 0,
"rx_mbuf_allocation_errors": 0
}
}
Jun Wang
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev