68 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
Faster Concurrent Range Queries with Contention Adapting Search Trees Using Immutable Data
The need for scalable concurrent ordered set data structures with linearizable range query support is increasing due to the rise of multicore computers, data processing platforms and in-memory databases. This paper presents a new concurrent ordered set with linearizable range query support. The new data structure is based on the contention adapting search tree and an immutable data structure.
Experimental results show that the new data structure is as much as three times faster compared to related data structures. The data structure scales well due to its ability to adapt the sizes of its immutable parts to the contention level and the sizes of the range queries
EEMARQ: Efficient Lock-Free Range Queries with Memory Reclamation
Multi-Version Concurrency Control (MVCC) is a common mechanism for achieving linearizable range queries in database systems and concurrent data-structures. The core idea is to keep previous versions of nodes to serve range queries, while still providing atomic reads and updates. Existing concurrent data-structure implementations, that support linearizable range queries, are either slow, use locks, or rely on blocking reclamation schemes. We present EEMARQ, the first scheme that uses MVCC with lock-free memory reclamation to obtain a fully lock-free data-structure supporting linearizable inserts, deletes, contains, and range queries. Evaluation shows that EEMARQ outperforms existing solutions across most workloads, with lower space overhead and while providing full lock freedom
FreSh: A Lock-Free Data Series Index
We present FreSh, a lock-free data series index that exhibits good
performance (while being robust). FreSh is based on Refresh, which is a generic
approach we have developed for supporting lock-freedom in an efficient way on
top of any localityaware data series index. We believe Refresh is of
independent interest and can be used to get well-performed lock-free versions
of other locality-aware blocking data structures. For developing FreSh, we
first studied in depth the design decisions of current state-of-the-art data
series indexes, and the principles governing their performance. This led to a
theoretical framework, which enables the development and analysis of data
series indexes in a modular way. The framework allowed us to apply Refresh,
repeatedly, to get lock-free versions of the different phases of a family of
data series indexes. Experiments with several synthetic and real datasets
illustrate that FreSh achieves performance that is as good as that of the
state-of-the-art blocking in-memory data series index. This shows that the
helping mechanisms of FreSh are light-weight, respecting certain principles
that are crucial for performance in locality-aware data structures.This paper
was published in SRDS 2023.Comment: 12 pages, 18 figures, Conference: Symposium on Reliable Distributed
Systems (SRDS 2023
On Design and Applications of Practical Concurrent Data Structures
The proliferation of multicore processors is having an enormous impact on software design and development. In order to exploit parallelism available in multicores, there is a need to design and implement abstractions that programmers can use for general purpose applications development. A common abstraction for coordinated access to memory is a concurrent data structure. Concurrent data structures are challenging to design and implement as they are required to be correct, scalable, and practical under various application constraints. In this thesis, we contribute to the design of efficient concurrent data structures, propose new design techniques and improvements to existing implementations. Additionally, we explore the utilization of concurrent data structures in demanding application contexts such as data stream processing.In the first part of the thesis, we focus on data structures that are difficult to parallelize due to inherent sequential bottlenecks. We present a lock-free vector design that efficiently addresses synchronization bottlenecks by utilizing the combining technique. Typical combining techniques are blocking. Our design introduces combining without sacrificing non-blocking progress guarantees. We extend the vector to present a concurrent lock-free unbounded binary heap that implements a priority queue with mutable priorities.In the second part of the thesis, we shift our focus to concurrent search data structures. In order to offer strong progress guarantee, typical implementations of non-blocking search data structures employ a "helping" mechanism. However, helping may result in performance degradation. We propose help-optimality, which expresses optimization in amortized step complexity of concurrent operations. To describe the concept, we revisit the lock-free designs of a linked-list and a binary search tree and present improved algorithms. We design the algorithms without using any language/platform specific constructs; we do not use bit-stealing or runtime type introspection of objects. Thus, our algorithms are portable. We further delve into multi-dimensional data and similarity search. We present the first lock-free multi-dimensional data structure and linearizable nearest neighbor search algorithm. Our algorithm for nearest neighbor search is generic and can be adapted to other data structures.In the last part of the thesis, we explore the utilization of concurrent data structures for deterministic stream processing. We propose solutions to two challenges prevalent in data stream processing: (1) efficient processing on cloud as well as edge devices and (2) deterministic data-parallel processing at high-throughput and low-latency. As a first step, we present a methodology for customization of streaming aggregation on low-power multicore embedded platforms. Then we introduce Viper, a communication module that can be integrated into stream processing engines for the coordination of threads analyzing data in parallel
- …