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

Kevin Traynor ktraynor at redhat.com
Wed May 22 13:26:32 UTC 2019


On 14/05/2019 17:33, 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.

32 packets is the burst size for each poll to each rxq, but there may be
multiple rxqs to be polled in that loop, so it could be 32 * num of rxqs
polled by this pmd * 1024

> Look at the flag every loop, no major performance impact seen.
> 
> Signed-off-by: David Marchand <david.marchand at 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 77e3f0c..933d91b 100644
> --- a/lib/dpif-netdev.c
> +++ b/lib/dpif-netdev.c
> @@ -5486,7 +5486,6 @@ reload:
>                  poll_block();
>              }
>          }
> -        lc = UINT_MAX;
>      }
>  
>      pmd->intrvl_tsc_prev = 0;
> @@ -5530,12 +5529,13 @@ reload:
>              if (!ovsrcu_try_quiesce()) {
>                  emc_cache_slow_sweep(&((pmd->flow_cache).emc_cache));
>              }
> +        }
>  
> -            atomic_read_explicit(&pmd->reload, &reload, memory_order_acquire);
> -            if (reload) {
> -                break;
> -            }
> +        atomic_read_explicit(&pmd->reload, &reload, memory_order_acquire);
> +        if (OVS_UNLIKELY(reload)) {
> +            break;
>          }
> +
>          pmd_perf_end_iteration(s, rx_packets, tx_packets,
>                                 pmd_perf_metrics_enabled(pmd));
>      }
> 



More information about the dev mailing list