Thanks @Alex and @Stephen for pointing these valuable materials to me! Maybe it’s better that I can clarify my scenarios more. Actually, we are using RSS (source + destination IP) to distribute packets, so we are maintaining one hash table per lcore (thread), and there is no need for synchronization issue in our case. If there are more solutions, please let me know. I will compare the solutions, and pick up the best suitable one.
Best, Qiaobin On Apr 17, 2017, at 1:30 PM, Alex Kiselev <[email protected]<mailto:[email protected]>> wrote: I would take a look at: 1) http://preshing.com/20160201/new-concurrent-hash-maps-for-cpp/ 2) https://github.com/efficient/libcuckoo 3) http://high-scale-lib.cvs.sourceforge.net/viewvc/high-scale-lib/high-scale-lib/org/cliffc/high_scale_lib/NonBlockingHashMap.java?view=markup https://www.youtube.com/watch?v=HJ-719EGIts https://www.youtube.com/watch?v=WYXgtXWejRM But there is a catch, none of them is written in C. 2017-04-17 19:54 GMT+03:00 Stephen Hemminger <[email protected]>: On Mon, 17 Apr 2017 15:47:59 +0000 "Fu, Qiaobin" <[email protected]> wrote: Hello, Currently, I am using the hash library to handle network flows defined as source and destination IP addresses. I need to find a way to alleviate memory pressure when the table is full. However, after some research, I didn’t find any hints on the dynamic growth in the hash library. Could anyone point me some hints on this? Thanks. Best, Qiaobin If you need growing hash table, I recommend the lock-free hash table in the Linux userspace RCU library; rather than the more limited DPDK one. -- -- Kiselev Alexander
