Per-bucket concurrent rehashing algorithms
Anton Malakhov

TL;DR
This paper introduces a lock-free, concurrent rehashing algorithm for extensible hash tables that improves scalability and performance by separating resizing from rehashing and using minimal synchronization.
Contribution
The paper presents a novel concurrent rehashing algorithm that separates resizing and rehashing, reducing synchronization and improving performance over lock-based methods.
Findings
Reduces synchronization on hot paths, enhancing scalability.
Allows race conditions with detection and restart, improving concurrency.
Compatible with cache-friendly layouts, potential for higher performance.
Abstract
This paper describes a generic algorithm for concurrent resizing and on-demand per-bucket rehashing for an extensible hash table. In contrast to known lock-based hash table algorithms, the proposed algorithm separates the resizing and rehashing stages so that they neither invalidate existing buckets nor block any concurrent operations. Instead, the rehashing work is deferred and split across subsequent operations with the table. The rehashing operation uses bucket-level synchronization only and therefore allows a race condition between lookup and moving operations running in different threads. Instead of using explicit synchronization, the algorithm detects the race condition and restarts the lookup operation. In comparison with other lock-based algorithms, the proposed algorithm reduces high-level synchronization on the hot path, improving performance, concurrency, and scalability of…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsDistributed systems and fault tolerance · Optimization and Search Problems · Petri Nets in System Modeling
