6 research outputs found
Learned Lock-free Search Data Structures
Non-blocking search data structures offer scalability with a progress
guarantee on high-performance multi-core architectures. In the recent past,
"learned queries" have gained remarkable attention. It refers to predicting the
rank of a key computed by machine learning models trained to infer the
cumulative distribution function of an ordered dataset. A line of works
exhibits the superiority of learned queries over classical query algorithms.
Yet, to our knowledge, no existing non-blocking search data structure employs
them. In this paper, we introduce \textbf{Kanva}, a framework for learned
non-blocking search. Kanva has an intuitive yet non-trivial design: traverse
down a shallow hierarchy of lightweight linear models to reach the
"non-blocking bins," which are dynamic ordered search structures. The proposed
approach significantly outperforms the current state-of-the-art -- non-blocking
interpolation search trees and elimination (a,b) trees -- in many workload and
data distributions. Kanva is provably linearizable
Extremely fast (a,b)-trees at all contention levels
Many concurrent dictionary implementations are designed and evaluated with only low-contention workloads in mind. This thesis presents several concurrent linearizable (a,b)-tree implementations with the overarching goal of performing well on both low- and high-contention workloads, and especially update-heavy workloads. The OCC-ABtree uses optimistic concurrency control to achieve state-of-the-art low-contention performance. However, under high-contention, cache coherence traffic begins to affect its performance.
This is addressed by replacing its test-and-compare-and-swap locks with MCS queue locks. The resulting MCS-ABtree scales well under both low- and high-contention workloads. This thesis also introduces two coalescing-based trees, the CoMCS-ABtree and the CoPub-ABtree, that achieve substantially better performance under high-contention by reordering and coalescing concurrent inserts and deletes. Comparing these algorithms against the state of the art in concurrent search trees, we find that the fastest algorithm, the CoPub-ABtree, outperforms the next fastest competitor by up to 2x.
This thesis then describes persistent versions of the four trees, whose implementations use fewer sfence instructions than a leading competitor (the FPTree). The persistent trees are proved to be strictly linearizable. Experimentally, the persistent trees are only slightly slower than their volatile counterparts, suggesting that they have great use as in-memory databases that need to be able to recover after a crash