Concurrent Robin Hood Hashing

In this paper we examine the issues involved in adding concurrency to the Robin Hood hash table algorithm. We present a non-blocking obstruction-free K-CAS Robin Hood algorithm which requires only a single word compare-and-swap primitive, thus making it highly portable. The implementation maintains the attractive properties of the original Robin Hood structure, such as a low expected probe length, capability to operate effectively under a high load factor and good cache locality, all of which are essential for high performance on modern computer architectures. We compare our data-structures to various other lock-free and concurrent algorithms, as well as a simple hardware transactional variant, and show that our implementation performs better across a number of contexts.

[1]  Trevor Brown,et al.  Reuse, Don't Recycle: Transforming Lock-Free Algorithms That Throw Away Descriptors , 2017, DISC.

[2]  Trevor Brown A Template for Implementing Fast Lock-free Trees Using HTM , 2017, PODC.

[3]  Dan Alistarh,et al.  Forkscan: Conservative Memory Reclamation for Modern Operating Systems , 2017, EuroSys.

[4]  Nectarios Koziris,et al.  Massively Concurrent Red-Black Trees with Hardware Transactional Memory , 2016, 2016 24th Euromicro International Conference on Parallel, Distributed, and Network-Based Processing (PDP).

[5]  Marieke Huisman,et al.  VerCors: A Layered Approach to Practical Verification of Concurrent Software , 2016, 2016 24th Euromicro International Conference on Parallel, Distributed, and Network-Based Processing (PDP).

[6]  Sven Karlsson,et al.  A scalable lock-free hash table with open addressing , 2016, PPoPP.

[7]  Erez Petrank,et al.  Efficient Memory Management for Lock-Free Data Structures with Optimistic Access , 2015, SPAA.

[8]  Dan Alistarh,et al.  ThreadScan: Automatic and Scalable Memory Reclamation , 2015, SPAA.

[9]  Mark John Batty,et al.  The C11 and C++11 concurrency model , 2015 .

[10]  Pierre LaBorde,et al.  A Wait-Free Multi-Word Compare-and-Swap Operation , 2014, International Journal of Parallel Programming.

[11]  Christopher J. Hughes,et al.  Performance evaluation of Intel® Transactional Synchronization Extensions for high-performance computing , 2013, 2013 SC - International Conference for High Performance Computing, Networking, Storage and Analysis (SC).

[12]  Herb Sutter,et al.  The Free Lunch Is Over A Fundamental Turn Toward Concurrency in Software , 2013 .

[13]  K. Rustan M. Leino,et al.  A Basis for Verifying Multi-threaded Programs , 2009, ESOP.

[14]  Jack J. Dongarra,et al.  Collecting Performance Data with PAPI-C , 2009, Parallel Tools Workshop.

[15]  D. M. Hutton,et al.  The Art of Multiprocessor Programming , 2008 .

[16]  Maurice Herlihy,et al.  Hopscotch Hashing , 2008, DISC.

[17]  Ulrich Drepper,et al.  What Every Programmer Should Know About Memory , 2007 .

[18]  Timothy L. Harris,et al.  Non-blocking Hashtables with Open Addressing , 2005, DISC.

[19]  Maged M. Michael Hazard pointers: safe memory reclamation for lock-free objects , 2004, IEEE Transactions on Parallel and Distributed Systems.

[20]  Nir Shavit,et al.  Split-ordered lists: lock-free extensible hash tables , 2003, PODC '03.

[21]  Maurice Herlihy,et al.  Obstruction-free synchronization: double-ended queues as an example , 2003, 23rd International Conference on Distributed Computing Systems, 2003. Proceedings..

[22]  Keir Fraser,et al.  Practical lock-freedom , 2003 .

[23]  Keir Fraser,et al.  A Practical Multi-word Compare-and-Swap Operation , 2002, DISC.

[24]  Maged M. Michael,et al.  High performance dynamic lock-free hash tables and list-based sets , 2002, SPAA '02.

[25]  Ravi Rajwar,et al.  Speculative lock elision: enabling highly concurrent multithreaded execution , 2001, Proceedings. 34th ACM/IEEE International Symposium on Microarchitecture. MICRO-34.

[26]  Timothy L. Harris,et al.  A Pragmatic Implementation of Non-blocking Linked-Lists , 2001, DISC.

[27]  Maurice Herlihy,et al.  Transactional Memory: Architectural Support For Lock-free Data Structures , 1993, Proceedings of the 20th Annual International Symposium on Computer Architecture.

[28]  G. H. Gonnet,et al.  Handbook of algorithms and data structures: in Pascal and C (2nd ed.) , 1991 .

[29]  Maurice Herlihy,et al.  Linearizability: a correctness condition for concurrent objects , 1990, TOPL.

[30]  J. Ian Munro,et al.  Robin hood hashing , 1985, 26th Annual Symposium on Foundations of Computer Science (sfcs 1985).

[31]  Gaston H. Gonnet,et al.  Handbook Of Algorithms And Data Structures , 1984 .

[32]  Andris Padegs System/370 Extended Architecture: Design Considerations , 1983, IBM J. Res. Dev..