diff mbox series

[ovs-dev,v2,2/3] ofproto-dpif-upcall: Add flow_limit coverage counters.

Message ID d1ba4d2977a84450a6ee8f45f5be62250fb03dd7.1704885957.git.echaudro@redhat.com
State Accepted
Commit 969b3a5706378f4cb98702cfd875b2fac260fbaa
Delegated to: Eelco Chaudron
Headers show
Series [ovs-dev,v2,1/3] ofproto-dpif-upcall: Change flow dump duration message to WARN level. | expand

Checks

Context Check Description
ovsrobot/apply-robot success apply and check: success
ovsrobot/github-robot-_Build_and_Test success github build: passed
ovsrobot/intel-ovs-compilation success test: success

Commit Message

Eelco Chaudron Jan. 10, 2024, 11:25 a.m. UTC
Add new coverage counters that might help debugging flow_limit
related issues.

Signed-off-by: Eelco Chaudron <echaudro@redhat.com>
---

 v2: Changed duration into flow increase/decrease counters.

 ofproto/ofproto-dpif-upcall.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Ilya Maximets Jan. 10, 2024, 7:23 p.m. UTC | #1
On 1/10/24 12:25, Eelco Chaudron wrote:
> Add new coverage counters that might help debugging flow_limit
> related issues.
> 
> Signed-off-by: Eelco Chaudron <echaudro@redhat.com>
> ---
> 
>  v2: Changed duration into flow increase/decrease counters.
> 
>  ofproto/ofproto-dpif-upcall.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/ofproto/ofproto-dpif-upcall.c b/ofproto/ofproto-dpif-upcall.c
> index cd71e3ee3..b5cbeed87 100644
> --- a/ofproto/ofproto-dpif-upcall.c
> +++ b/ofproto/ofproto-dpif-upcall.c
> @@ -59,8 +59,11 @@ COVERAGE_DEFINE(handler_duplicate_upcall);
>  COVERAGE_DEFINE(revalidate_missed_dp_flow);
>  COVERAGE_DEFINE(ukey_dp_change);
>  COVERAGE_DEFINE(ukey_invalid_stat_reset);
> +COVERAGE_DEFINE(upcall_flow_limit_grew);
>  COVERAGE_DEFINE(upcall_flow_limit_hit);
>  COVERAGE_DEFINE(upcall_flow_limit_kill);
> +COVERAGE_DEFINE(upcall_flow_limit_reduced);
> +COVERAGE_DEFINE(upcall_flow_limit_scaled);
>  COVERAGE_DEFINE(upcall_ukey_contention);
>  COVERAGE_DEFINE(upcall_ukey_replace);
>  
> @@ -1039,11 +1042,14 @@ udpif_revalidator(void *arg)
>              udpif->dump_duration = duration;
>              if (duration > 2000) {
>                  flow_limit /= duration / 1000;
> +                COVERAGE_INC(upcall_flow_limit_scaled);
>              } else if (duration > 1300) {
>                  flow_limit = flow_limit * 3 / 4;
> +                COVERAGE_INC(upcall_flow_limit_reduced);
>              } else if (duration < 1000 &&
>                         flow_limit < n_flows * 1000 / duration) {
>                  flow_limit += 1000;
> +                COVERAGE_INC(upcall_flow_limit_grew);
>              }
>              flow_limit = MIN(ofproto_flow_limit, MAX(flow_limit, 1000));
>              atomic_store_relaxed(&udpif->flow_limit, flow_limit);


Acked-by: Ilya Maximets <i.maximets@ovn.org>
Simon Horman Jan. 11, 2024, 11:46 a.m. UTC | #2
On Wed, Jan 10, 2024 at 12:25:56PM +0100, Eelco Chaudron wrote:
> Add new coverage counters that might help debugging flow_limit
> related issues.
> 
> Signed-off-by: Eelco Chaudron <echaudro@redhat.com>

Acked-by: Simon Horman <horms@ovn.org>
Aaron Conole Jan. 15, 2024, 2:15 p.m. UTC | #3
Eelco Chaudron <echaudro@redhat.com> writes:

> Add new coverage counters that might help debugging flow_limit
> related issues.
>
> Signed-off-by: Eelco Chaudron <echaudro@redhat.com>
> ---

Thanks, applied.
diff mbox series

Patch

diff --git a/ofproto/ofproto-dpif-upcall.c b/ofproto/ofproto-dpif-upcall.c
index cd71e3ee3..b5cbeed87 100644
--- a/ofproto/ofproto-dpif-upcall.c
+++ b/ofproto/ofproto-dpif-upcall.c
@@ -59,8 +59,11 @@  COVERAGE_DEFINE(handler_duplicate_upcall);
 COVERAGE_DEFINE(revalidate_missed_dp_flow);
 COVERAGE_DEFINE(ukey_dp_change);
 COVERAGE_DEFINE(ukey_invalid_stat_reset);
+COVERAGE_DEFINE(upcall_flow_limit_grew);
 COVERAGE_DEFINE(upcall_flow_limit_hit);
 COVERAGE_DEFINE(upcall_flow_limit_kill);
+COVERAGE_DEFINE(upcall_flow_limit_reduced);
+COVERAGE_DEFINE(upcall_flow_limit_scaled);
 COVERAGE_DEFINE(upcall_ukey_contention);
 COVERAGE_DEFINE(upcall_ukey_replace);
 
@@ -1039,11 +1042,14 @@  udpif_revalidator(void *arg)
             udpif->dump_duration = duration;
             if (duration > 2000) {
                 flow_limit /= duration / 1000;
+                COVERAGE_INC(upcall_flow_limit_scaled);
             } else if (duration > 1300) {
                 flow_limit = flow_limit * 3 / 4;
+                COVERAGE_INC(upcall_flow_limit_reduced);
             } else if (duration < 1000 &&
                        flow_limit < n_flows * 1000 / duration) {
                 flow_limit += 1000;
+                COVERAGE_INC(upcall_flow_limit_grew);
             }
             flow_limit = MIN(ofproto_flow_limit, MAX(flow_limit, 1000));
             atomic_store_relaxed(&udpif->flow_limit, flow_limit);