[dpdk-users] Is Elastic Flow Distributor thread-safe?

Rob Zimmerman rob at thezims.net
Tue Feb 14 15:23:21 CET 2017


Hi Pablo,

  That was my assumption. I peeked at the EFD implementation and saw the
memcpy's which are definitely not multi-producer safe. What I ended up
doing is throwing together a ring buffer for the one core which will
perform the EFD update. All other cores just send their updates to that
core and it processes them, doing updates.

Thanks so much for the confirmation!
-Rob

On Tue, Feb 14, 2017 at 9:14 AM, De Lara Guarch, Pablo <
pablo.de.lara.guarch at intel.com> wrote:

> Hi Rob,
>
> > -----Original Message-----
> > From: users [mailto:users-bounces at dpdk.org] On Behalf Of Rob
> > Zimmerman
> > Sent: Monday, February 13, 2017 2:26 PM
> > To: users at dpdk.org
> > Subject: [dpdk-users] Is Elastic Flow Distributor thread-safe?
> >
> > Hi Everyone,
> >
> >   Playing around with EFD and seeing some really bizarre behavior in a
> > multi-core environment. Is it safe for multiple logical cores to be
> making
> > EFD table updates while another logical core is performing lookups? Side
> > note: the core which is making lookups is where the offline table
> resides.
> >
> > Intuition tells me this is probably not safe, but the docs make no
> mention
> > of thread safety.
>
> The library is not thread-safe. The only operation that is thread safe is
> the lookup.
>
> However, although update is not thread safe, it is interesting to know the
> following.
> Updating the EFD table consists of two steps:
>
> 1 - Compute Update: the new key is added to the offline group, which is
> not thread safe.
>      Then, a new perfect hash for the group is computed (thread safe and
> where most of time is spent).
>
> 2 - Apply Update: Once the update is computed, it has to be applied to the
> online table (fast, but not thread safe).
>
> Multi-writer support might be added in the future, as it was added in the
> Hash library.
>
> For now, several readers can work simultaneously, as long as there is no
> writer working on it (you would need locks for this),
> and only a single writer is supported if there is no other core doing
> lookups.
>
> >
> > Thanks,
> > -Rob
>


More information about the users mailing list