mirror of
https://github.com/openvswitch/ovs
synced 2025-10-11 13:57:52 +00:00
dpif-netdev: Count sent packets and batches.
New statistics for 'pmd-stats-show' command: average number of packets per output batch. Acked-by: Eelco Chaudron <echaudro@redhat.com> Signed-off-by: Ilya Maximets <i.maximets@samsung.com> Signed-off-by: Ian Stokes <ian.stokes@intel.com
This commit is contained in:
committed by
Ian Stokes
parent
ad8b0b4fe7
commit
cc4891f39d
@@ -337,6 +337,8 @@ enum dp_stat_type {
|
||||
DP_STAT_LOST, /* Packets not passed up to the client. */
|
||||
DP_STAT_LOOKUP_HIT, /* Number of subtable lookups for flow table
|
||||
hits */
|
||||
DP_STAT_SENT_PKTS, /* Packets that has been sent. */
|
||||
DP_STAT_SENT_BATCHES, /* Number of batches sent. */
|
||||
DP_N_STATS
|
||||
};
|
||||
|
||||
@@ -508,6 +510,9 @@ struct dp_netdev_pmd_cycles {
|
||||
atomic_ullong n[PMD_N_CYCLES];
|
||||
};
|
||||
|
||||
static void dp_netdev_count_packet(struct dp_netdev_pmd_thread *,
|
||||
enum dp_stat_type type, int cnt);
|
||||
|
||||
struct polled_queue {
|
||||
struct dp_netdev_rxq *rxq;
|
||||
odp_port_t port_no;
|
||||
@@ -834,6 +839,7 @@ pmd_info_show_stats(struct ds *reply,
|
||||
{
|
||||
unsigned long long total_packets;
|
||||
uint64_t total_cycles = 0;
|
||||
double lookups_per_hit = 0, packets_per_batch = 0;
|
||||
int i;
|
||||
|
||||
/* These loops subtracts reference values ('*_zero') from the counters.
|
||||
@@ -875,15 +881,23 @@ pmd_info_show_stats(struct ds *reply,
|
||||
}
|
||||
ds_put_cstr(reply, ":\n");
|
||||
|
||||
if (stats[DP_STAT_MASKED_HIT] > 0) {
|
||||
lookups_per_hit = stats[DP_STAT_LOOKUP_HIT]
|
||||
/ (double) stats[DP_STAT_MASKED_HIT];
|
||||
}
|
||||
if (stats[DP_STAT_SENT_BATCHES] > 0) {
|
||||
packets_per_batch = stats[DP_STAT_SENT_PKTS]
|
||||
/ (double) stats[DP_STAT_SENT_BATCHES];
|
||||
}
|
||||
|
||||
ds_put_format(reply,
|
||||
"\temc hits:%llu\n\tmegaflow hits:%llu\n"
|
||||
"\tavg. subtable lookups per hit:%.2f\n"
|
||||
"\tmiss:%llu\n\tlost:%llu\n",
|
||||
"\tmiss:%llu\n\tlost:%llu\n"
|
||||
"\tavg. packets per output batch: %.2f\n",
|
||||
stats[DP_STAT_EXACT_HIT], stats[DP_STAT_MASKED_HIT],
|
||||
stats[DP_STAT_MASKED_HIT] > 0
|
||||
? (1.0*stats[DP_STAT_LOOKUP_HIT])/stats[DP_STAT_MASKED_HIT]
|
||||
: 0,
|
||||
stats[DP_STAT_MISS], stats[DP_STAT_LOST]);
|
||||
lookups_per_hit, stats[DP_STAT_MISS], stats[DP_STAT_LOST],
|
||||
packets_per_batch);
|
||||
|
||||
if (total_cycles == 0) {
|
||||
return;
|
||||
@@ -3259,6 +3273,7 @@ dp_netdev_pmd_flush_output_on_port(struct dp_netdev_pmd_thread *pmd,
|
||||
struct tx_port *p)
|
||||
{
|
||||
int tx_qid;
|
||||
int output_cnt;
|
||||
bool dynamic_txqs;
|
||||
|
||||
dynamic_txqs = p->port->dynamic_txqs;
|
||||
@@ -3268,8 +3283,13 @@ dp_netdev_pmd_flush_output_on_port(struct dp_netdev_pmd_thread *pmd,
|
||||
tx_qid = pmd->static_tx_qid;
|
||||
}
|
||||
|
||||
output_cnt = dp_packet_batch_size(&p->output_pkts);
|
||||
|
||||
netdev_send(p->port->netdev, tx_qid, &p->output_pkts, dynamic_txqs);
|
||||
dp_packet_batch_init(&p->output_pkts);
|
||||
|
||||
dp_netdev_count_packet(pmd, DP_STAT_SENT_PKTS, output_cnt);
|
||||
dp_netdev_count_packet(pmd, DP_STAT_SENT_BATCHES, 1);
|
||||
}
|
||||
|
||||
static void
|
||||
|
Reference in New Issue
Block a user