Hi Flavio, Thanks Again, replies inline.
> -----Original Message----- > From: Flavio Leitner <[email protected]> > Sent: Monday, June 28, 2021 8:29 AM > To: Amber, Kumar <[email protected]> > Cc: [email protected]; [email protected] > Subject: Re: [ovs-dev] [v4 08/12] dpif/stats: add miniflow extract opt hits > counter > > On Thu, Jun 17, 2021 at 09:57:50PM +0530, Kumar Amber wrote: > > From: Harry van Haaren <[email protected]> > > > > This commit adds a new counter to be displayed to the user when > > requesting datapath packet statistics. It counts the number of packets > > that are parsed and a miniflow built up from it by the optimized > > miniflow extract parsers. > > > > The ovs-appctl command "dpif-netdev/pmd-perf-show" now has an extra > > entry indicating if the optimized MFEX was hit: > > > > - MFEX Opt hits: 6786432 (100.0 %) > > > > Signed-off-by: Harry van Haaren <[email protected]> > > --- > > lib/dpif-netdev-avx512.c | 2 ++ > > lib/dpif-netdev-perf.c | 3 +++ > > lib/dpif-netdev-perf.h | 1 + > > lib/dpif-netdev.c | 14 +++++++++----- > > tests/pmd.at | 6 ++++-- > > > It looks like this is missing to update lib/dpif-netdev-unixctl.man > Done added entry for MFEX hits to the mentioned file. > > > 5 files changed, 19 insertions(+), 7 deletions(-) > > > > diff --git a/lib/dpif-netdev-avx512.c b/lib/dpif-netdev-avx512.c index > > bb99b23ff..f55786f8c 100644 > > --- a/lib/dpif-netdev-avx512.c > > +++ b/lib/dpif-netdev-avx512.c > > @@ -297,8 +297,10 @@ dp_netdev_input_outer_avx512(struct > dp_netdev_pmd_thread *pmd, > > } > > > > /* At this point we don't return error anymore, so commit stats > > here. */ > > + uint32_t mfex_hit = __builtin_popcountll(mf_mask); > > pmd_perf_update_counter(&pmd->perf_stats, PMD_STAT_RECV, > batch_size); > > pmd_perf_update_counter(&pmd->perf_stats, PMD_STAT_PHWOL_HIT, > > phwol_hits); > > + pmd_perf_update_counter(&pmd->perf_stats, > PMD_STAT_MFEX_OPT_HIT, > > + mfex_hit); > > pmd_perf_update_counter(&pmd->perf_stats, PMD_STAT_EXACT_HIT, > emc_hits); > > pmd_perf_update_counter(&pmd->perf_stats, PMD_STAT_SMC_HIT, > smc_hits); > > pmd_perf_update_counter(&pmd->perf_stats, > PMD_STAT_MASKED_HIT, > > diff --git a/lib/dpif-netdev-perf.c b/lib/dpif-netdev-perf.c index > > 7103a2d4d..d7676ea2b 100644 > > --- a/lib/dpif-netdev-perf.c > > +++ b/lib/dpif-netdev-perf.c > > @@ -247,6 +247,7 @@ pmd_perf_format_overall_stats(struct ds *str, > struct pmd_perf_stats *s, > > " Rx packets: %12"PRIu64" (%.0f Kpps, %.0f > > cycles/pkt)\n" > > " Datapath passes: %12"PRIu64" (%.2f passes/pkt)\n" > > " - PHWOL hits: %12"PRIu64" (%5.1f %%)\n" > > + " - MFEX Opt hits: %12"PRIu64" (%5.1f %%)\n" > > " - EMC hits: %12"PRIu64" (%5.1f %%)\n" > > " - SMC hits: %12"PRIu64" (%5.1f %%)\n" > > " - Megaflow hits: %12"PRIu64" (%5.1f %%, %.2f " > > @@ -258,6 +259,8 @@ pmd_perf_format_overall_stats(struct ds *str, > struct pmd_perf_stats *s, > > passes, rx_packets ? 1.0 * passes / rx_packets : 0, > > stats[PMD_STAT_PHWOL_HIT], > > 100.0 * stats[PMD_STAT_PHWOL_HIT] / passes, > > + stats[PMD_STAT_MFEX_OPT_HIT], > > + 100.0 * stats[PMD_STAT_MFEX_OPT_HIT] / passes, > > stats[PMD_STAT_EXACT_HIT], > > 100.0 * stats[PMD_STAT_EXACT_HIT] / passes, > > stats[PMD_STAT_SMC_HIT], > > diff --git a/lib/dpif-netdev-perf.h b/lib/dpif-netdev-perf.h index > > 8b1a52387..834c26260 100644 > > --- a/lib/dpif-netdev-perf.h > > +++ b/lib/dpif-netdev-perf.h > > @@ -57,6 +57,7 @@ extern "C" { > > > > enum pmd_stat_type { > > PMD_STAT_PHWOL_HIT, /* Packets that had a partial HWOL hit > (phwol). */ > > + PMD_STAT_MFEX_OPT_HIT, /* Packets that had miniflow optimized > > + match. */ > > PMD_STAT_EXACT_HIT, /* Packets that had an exact match (emc). */ > > PMD_STAT_SMC_HIT, /* Packets that had a sig match hit (SMC). */ > > PMD_STAT_MASKED_HIT, /* Packets that matched in the flow table. > */ > > diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index > > 35c927d55..7a8f15415 100644 > > --- a/lib/dpif-netdev.c > > +++ b/lib/dpif-netdev.c > > @@ -660,6 +660,7 @@ pmd_info_show_stats(struct ds *reply, > > " packet recirculations: %"PRIu64"\n" > > " avg. datapath passes per packet: %.02f\n" > > " phwol hits: %"PRIu64"\n" > > + " mfex opt hits: %"PRIu64"\n" > > " emc hits: %"PRIu64"\n" > > " smc hits: %"PRIu64"\n" > > " megaflow hits: %"PRIu64"\n" > > @@ -669,10 +670,9 @@ pmd_info_show_stats(struct ds *reply, > > " avg. packets per output batch: %.02f\n", > > total_packets, stats[PMD_STAT_RECIRC], > > passes_per_pkt, stats[PMD_STAT_PHWOL_HIT], > > - stats[PMD_STAT_EXACT_HIT], > > - stats[PMD_STAT_SMC_HIT], > > - stats[PMD_STAT_MASKED_HIT], lookups_per_hit, > > - stats[PMD_STAT_MISS], stats[PMD_STAT_LOST], > > + stats[PMD_STAT_MFEX_OPT_HIT], > stats[PMD_STAT_EXACT_HIT], > > + stats[PMD_STAT_SMC_HIT], stats[PMD_STAT_MASKED_HIT], > > + lookups_per_hit, stats[PMD_STAT_MISS], > > + stats[PMD_STAT_LOST], > > packets_per_batch); > > > > if (total_cycles == 0) { > > @@ -6863,7 +6863,7 @@ dfc_processing(struct dp_netdev_pmd_thread > *pmd, > > bool md_is_valid, odp_port_t port_no) { > > struct netdev_flow_key *key = &keys[0]; > > - size_t n_missed = 0, n_emc_hit = 0, n_phwol_hit = 0; > > + size_t n_missed = 0, n_emc_hit = 0, n_phwol_hit = 0, > > + n_mfex_opt_hit = 0; > > struct dp_packet_batch single_packet; > > struct dfc_cache *cache = &pmd->flow_cache; > > struct dp_packet *packet; > > @@ -6931,6 +6931,8 @@ dfc_processing(struct dp_netdev_pmd_thread > *pmd, > > /* Fallback to original miniflow_extract if there is a miss. */ > > if (!mf_ret) { > > miniflow_extract(packet, &key->mf); > > + } else { > > + n_mfex_opt_hit++; > > } > > nit: invert the logic. > if (mf_ret) { > n_mfex_opt_hit++; > } else { > miniflow_extract(packet, &key->mf); > } > Done Inverted in v5. > fbl > > > } else { > > miniflow_extract(packet, &key->mf); @@ -6982,6 +6984,8 @@ > > dfc_processing(struct dp_netdev_pmd_thread *pmd, > > *n_flows = map_cnt; > > > > pmd_perf_update_counter(&pmd->perf_stats, PMD_STAT_PHWOL_HIT, > > n_phwol_hit); > > + pmd_perf_update_counter(&pmd->perf_stats, > PMD_STAT_MFEX_OPT_HIT, > > + n_mfex_opt_hit); > > pmd_perf_update_counter(&pmd->perf_stats, PMD_STAT_EXACT_HIT, > > n_emc_hit); > > > > if (!smc_enable_db) { > > diff --git a/tests/pmd.at b/tests/pmd.at index 34a59d502..0947525f4 > > 100644 > > --- a/tests/pmd.at > > +++ b/tests/pmd.at > > @@ -202,12 +202,13 @@ dummy@ovs-dummy: hit:0 missed:0 > > p0 7/1: (dummy-pmd: configured_rx_queues=4, > > configured_tx_queues=<cleared>, requested_rx_queues=4, > > requested_tx_queues=<cleared>) > > ]) > > > > -AT_CHECK([ovs-appctl dpif-netdev/pmd-stats-show | sed > > SED_NUMA_CORE_PATTERN | sed '/cycles/d' | grep pmd -A 10], [0], [dnl > > +AT_CHECK([ovs-appctl dpif-netdev/pmd-stats-show | sed > > +SED_NUMA_CORE_PATTERN | sed '/cycles/d' | grep pmd -A 11], [0], [dnl > > pmd thread numa_id <cleared> core_id <cleared>: > > packets received: 0 > > packet recirculations: 0 > > avg. datapath passes per packet: 0.00 > > phwol hits: 0 > > + mfex opt hits: 0 > > emc hits: 0 > > smc hits: 0 > > megaflow hits: 0 > > @@ -234,12 +235,13 @@ AT_CHECK([cat ovs-vswitchd.log | > > filter_flow_install | strip_xout], [0], [dnl > > recirc_id(0),in_port(1),packet_type(ns=0,id=0),eth(src=50:54:00:00:00: > > 77,dst=50:54:00:00:01:78),eth_type(0x0800),ipv4(frag=no), actions: > > <del> > > ]) > > > > -AT_CHECK([ovs-appctl dpif-netdev/pmd-stats-show | sed > > SED_NUMA_CORE_PATTERN | sed '/cycles/d' | grep pmd -A 10], [0], [dnl > > +AT_CHECK([ovs-appctl dpif-netdev/pmd-stats-show | sed > > +SED_NUMA_CORE_PATTERN | sed '/cycles/d' | grep pmd -A 11], [0], [dnl > > pmd thread numa_id <cleared> core_id <cleared>: > > packets received: 20 > > packet recirculations: 0 > > avg. datapath passes per packet: 1.00 > > phwol hits: 0 > > + mfex opt hits: 0 > > emc hits: 19 > > smc hits: 0 > > megaflow hits: 0 > > -- > > 2.25.1 > > > > _______________________________________________ > > dev mailing list > > [email protected] > > https://mail.openvswitch.org/mailman/listinfo/ovs-dev > > -- > fbl _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
