[dpdk-dev] [PATCH] Do RCU synchronization at fixed interval in PMD main loop.
david.marchand at redhat.com
Wed Aug 7 08:21:02 CEST 2019
On Wed, Aug 7, 2019 at 8:13 AM Nitin Katiyar <nitin.katiyar at ericsson.com> wrote:
> Each PMD updates the global sequence number for RCU synchronization
> purpose with other OVS threads. This is done at every 1025th iteration
> in PMD main loop.
> If the PMD thread is responsible for polling large number of queues
> that are carrying traffic, it spends a lot of time processing packets
> and this results in significant delay in performing the housekeeping
> If the OVS main thread is waiting to synchronize with the PMD threads
> and if those threads delay performing housekeeping activities for
> more than 3 sec then LACP processing will be impacted and it will lead
> to LACP flaps. Similarly, other controls protocols run by OVS main
> thread are impacted.
> For e.g. a PMD thread polling 200 ports/queues with average of 1600
> processing cycles per packet with batch size of 32 may take 10240000
> (200 * 1600 * 32) cycles per iteration. In system with 2.0 GHz CPU
> it means more than 5 ms per iteration. So, for 1024 iterations to
> complete it would be more than 5 seconds.
> This gets worse when there are PMD threads which are less loaded.
> It reduces possibility of getting mutex lock in ovsrcu_try_quiesce()
> by heavily loaded PMD and next attempt to quiesce would be after 1024
> With this patch, PMD RCU synchronization will be performed after fixed
> interval instead after a fixed number of iterations. This will ensure
> that even if the packet processing load is high the RCU synchronization
> will not be delayed long.
> Signed-off-by: Anju Thomas <anju.thomas at ericsson.com>
> Signed-off-by: Nitin Katiyar <nitin.katiyar at ericsson.com>
> lib/dpif-netdev-perf.c | 16 ----------------
> lib/dpif-netdev-perf.h | 17 +++++++++++++++++
> lib/dpif-netdev.c | 27 +++++++++++++++++++++++++++
> 3 files changed, 44 insertions(+), 16 deletions(-)
s/To: dev at dpdk.org/To: dev at openvswitch.org/
More information about the dev