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

Thomas Monjalon thomas.monjalon at 6wind.com
Tue Feb 14 15:26:45 CET 2017


2017-02-14 14:14, De Lara Guarch, Pablo:
> From: Rob
> >   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.

Should it be added to the documentation?


More information about the users mailing list