mirror of
https://github.com/openvswitch/ovs
synced 2025-09-05 08:45:23 +00:00
netdev-dpdk: Expose per rxq/txq basic statistics.
When troubleshooting multiqueue setups, having per queue statistics helps checking packets repartition in rx and tx queues. Per queue statistics are exported by most DPDK drivers (with capability RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS). OVS only filters DPDK statistics, there is nothing to request in DPDK API. So the only change is to extend the filter on xstats. Querying statistics with $ ovs-vsctl get interface dpdk0 statistics | sed -e 's#[{}]##g' -e 's#, #\n#g' and comparing gives: @@ -13,7 +13,12 @@ rx_phy_crc_errors=0 rx_phy_in_range_len_errors=0 rx_phy_symbol_errors=0 +rx_q0_bytes=0 rx_q0_errors=0 +rx_q0_packets=0 +rx_q1_bytes=0 rx_q1_errors=0 +rx_q1_packets=0 rx_wqe_errors=0 tx_broadcast_packets=0 tx_bytes=0 @@ -27,3 +32,13 @@ tx_pp_rearm_queue_errors=0 tx_pp_timestamp_future_errors=0 tx_pp_timestamp_past_errors=0 +tx_q0_bytes=0 +tx_q0_packets=0 +tx_q1_bytes=0 +tx_q1_packets=0 +tx_q2_bytes=0 +tx_q2_packets=0 +tx_q3_bytes=0 +tx_q3_packets=0 +tx_q4_bytes=0 +tx_q4_packets=0 Signed-off-by: David Marchand <david.marchand@redhat.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com> Acked-by: Kevin Traynor <ktraynor@redhat.com> Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
This commit is contained in:
committed by
Ilya Maximets
parent
f260db1efc
commit
1140c87e2e
@@ -1583,6 +1583,16 @@ netdev_dpdk_get_xstat_name(struct netdev_dpdk *dev, uint64_t id)
|
||||
return dev->rte_xstats_names[id].name;
|
||||
}
|
||||
|
||||
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)
|
||||
@@ -1633,9 +1643,10 @@ netdev_dpdk_configure_xstats(struct netdev_dpdk *dev)
|
||||
id = rte_xstats[i].id;
|
||||
name = netdev_dpdk_get_xstat_name(dev, id);
|
||||
|
||||
/* We need to filter out everything except dropped, error and
|
||||
* management counters. */
|
||||
if (string_ends_with(name, "_errors") ||
|
||||
/* 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")) {
|
||||
|
||||
|
Reference in New Issue
Block a user