Hi Eelco,
> -----Original Message-----
> From: Eelco Chaudron <[email protected]>
> Sent: Tuesday, July 13, 2021 1:15 PM
> To: Amber, Kumar <[email protected]>
> Cc: [email protected]; [email protected]; [email protected]; Van
> Haaren, Harry <[email protected]>; Ferriter, Cian
> <[email protected]>; Stokes, Ian <[email protected]>
> Subject: Re: [v9 08/12] dpif/stats: add miniflow extract opt hits counter
>
>
>
> On 12 Jul 2021, at 7:51, 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]>
> > Acked-by: Flavio Leitner <[email protected]>
> > ---
> > v7:
> > - fix review comments(Eelco)
> > v5:
> > - fix review comments(Ian, Flavio, Eelco)
> > ---
> > ---
> > lib/dpif-netdev-avx512.c | 3 +++
> > lib/dpif-netdev-perf.c | 3 +++
> > lib/dpif-netdev-perf.h | 1 +
> > lib/dpif-netdev-unixctl.man | 4 ++++
> > lib/dpif-netdev.c | 12 +++++++-----
> > tests/pmd.at | 6 ++++--
> > 6 files changed, 22 insertions(+), 7 deletions(-)
> >
> > diff --git a/lib/dpif-netdev-avx512.c b/lib/dpif-netdev-avx512.c index
> > 7772b7abf..544d36903 100644
> > --- a/lib/dpif-netdev-avx512.c
> > +++ b/lib/dpif-netdev-avx512.c
> > @@ -310,8 +310,11 @@ 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_cnt = __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_cnt);
> > 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-unixctl.man b/lib/dpif-netdev-unixctl.man
> > index 83ce4f1c5..f34758416 100644
> > --- a/lib/dpif-netdev-unixctl.man
> > +++ b/lib/dpif-netdev-unixctl.man
> > @@ -16,6 +16,9 @@ packet lookups performed by the datapath. Beware
> > that a recirculated packet experiences one additional lookup per
> > recirculation, so there may be more lookups than forwarded packets in the
> datapath.
> >
> > +The MFEX Opt hits displays the number of packets which is processed
> > +by the
>
> which is -> that are
>
Fixed.
> > +optimized miniflow extract implementations.
> > +
> > Cycles are counted using the TSC or similar facilities (when
> > available on the platform). The duration of one cycle depends on the
> processing platform.
> >
> > @@ -136,6 +139,7 @@ pmd thread numa_id 0 core_id 1:
> > Rx packets: 2399607 (2381 Kpps, 848 cycles/pkt)
> > Datapath passes: 3599415 (1.50 passes/pkt)
> > - PHWOL hits: 0 ( 0.0 %)
> > + - MFEX Opt hits: 3570133 ( 99.5 %)
>
> My TI36 tells me this should be 99.2% :)
>
Ah sorry :p
> > - EMC hits: 336472 ( 9.3 %)
> > - SMC hits: 0 ( 0.0 %)
> > - Megaflow hits: 3262943 ( 90.7 %, 1.00 subtbl lookups/hit)
> > diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index
> > f7a05d20d..5f27ea033 100644
> > --- a/lib/dpif-netdev.c
> > +++ b/lib/dpif-netdev.c
> > @@ -648,6 +648,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"
> > @@ -657,10 +658,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) {
> > @@ -7015,7 +7015,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 dfc_cache *cache = &pmd->flow_cache;
> > struct dp_packet *packet;
> > const size_t cnt = dp_packet_batch_size(packets_); @@ -7127,6
> > +7127,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 46d9ede5e..bb807b22e
> > 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