diff mbox series

[ovs-dev,RFC,5/5] dpif-netdev: Catch reloads faster.

Message ID 1556626682-28858-6-git-send-email-david.marchand@redhat.com
State Changes Requested
Headers show
Series Quicker pmd threads reloads | expand

Commit Message

David Marchand April 30, 2019, 12:18 p.m. UTC
Looking at the reload flag only every 1024 loops can be a long time
under load, since we might be handling 32 packets per iteration, which
means 32k packets.
Look at the flag every loop, no major performance impact seen.

Signed-off-by: David Marchand <david.marchand@redhat.com>
---
 lib/dpif-netdev.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

Comments

Eelco Chaudron May 8, 2019, 8:12 a.m. UTC | #1
On 30 Apr 2019, at 14:18, David Marchand wrote:

> Looking at the reload flag only every 1024 loops can be a long time
> under load, since we might be handling 32 packets per iteration, which
> means 32k packets.
> Look at the flag every loop, no major performance impact seen.
>
> Signed-off-by: David Marchand <david.marchand@redhat.com>
> ---
>  lib/dpif-netdev.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
> index 45993a3..d8018af 100644
> --- a/lib/dpif-netdev.c
> +++ b/lib/dpif-netdev.c
> @@ -5482,7 +5482,6 @@ reload:
>                  poll_block();
>              }
>          }
> -        lc = UINT_MAX;
>      }
>
>      pmd->intrvl_tsc_prev = 0;
> @@ -5526,12 +5525,13 @@ reload:
>              if (!ovsrcu_try_quiesce()) {
>                  emc_cache_slow_sweep(&((pmd->flow_cache).emc_cache));
>              }
> +        }
>
> -            atomic_read_relaxed(&pmd->reload, &reload);
> -            if (reload) {
> -                break;
> -            }
> +        atomic_read_relaxed(&pmd->reload, &reload);

Would be interesting to see if there is any impact when change to none 
relaxed?

> +        if (OVS_UNLIKELY(reload)) {
> +            break;
>          }
> +
>          pmd_perf_end_iteration(s, rx_packets, tx_packets,
>                                 pmd_perf_metrics_enabled(pmd));
>      }
> -- 
> 1.8.3.1
diff mbox series

Patch

diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
index 45993a3..d8018af 100644
--- a/lib/dpif-netdev.c
+++ b/lib/dpif-netdev.c
@@ -5482,7 +5482,6 @@  reload:
                 poll_block();
             }
         }
-        lc = UINT_MAX;
     }
 
     pmd->intrvl_tsc_prev = 0;
@@ -5526,12 +5525,13 @@  reload:
             if (!ovsrcu_try_quiesce()) {
                 emc_cache_slow_sweep(&((pmd->flow_cache).emc_cache));
             }
+        }
 
-            atomic_read_relaxed(&pmd->reload, &reload);
-            if (reload) {
-                break;
-            }
+        atomic_read_relaxed(&pmd->reload, &reload);
+        if (OVS_UNLIKELY(reload)) {
+            break;
         }
+
         pmd_perf_end_iteration(s, rx_packets, tx_packets,
                                pmd_perf_metrics_enabled(pmd));
     }