[dpdk-users] Is Elastic Flow Distributor thread-safe?
De Lara Guarch, Pablo
pablo.de.lara.guarch at intel.com
Tue Feb 14 15:14:53 CET 2017
> -----Original Message-----
> From: users [mailto:users-bounces at dpdk.org] On Behalf Of Rob
> 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.
More information about the users