> -----Original Message----- > From: Thomas Monjalon [mailto:[email protected]] > Sent: Tuesday, February 14, 2017 2:27 PM > To: De Lara Guarch, Pablo > Cc: [email protected]; Rob Zimmerman > Subject: Re: [dpdk-users] Is Elastic Flow Distributor thread-safe? > > 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?
I will send a doc patch shortly about this.
