Table of Contents
Fetching ...

An Implementation and Experimental Comparison of Dynamic Ordered Sets

Jordan Malek

TL;DR

An implementation of Ko's Lock-Free Binary Trie, which stores a dynamic set of keys from an ordered universe, and which performs better than existing theoretical implementations of this ADT when the universe of keys is large, when removes are rare and when the number of processes performing operations concurrently is low.

Abstract

It is becoming increasingly difficult to improve the performance of a a single process (thread) on a computer due to physical limitations. Modern systems use multi-core processors in which multiple processes (threads) may run concurrently. A lock-free data structure can allow these processes to communicate with each other without requiring mutual exclusion, and may increase the amount of work they may perform in parallel rather than sequentially, thus improving the performance of the system as a whole. This paper contains an implementation of Ko's Lock-Free Binary Trie, which stores a dynamic set of keys from an ordered universe. It supports insert, remove, search and predecessor operations. One novel component of this implementation is a lock-free linked list which allows multiple processes to attempt to insert the same node, but which prevents a node from being reinserted once it has been removed from the list. The final section of this paper contains an experimental comparison of this implementation against other data structures which implement the same abstract data type (ADT) as the lock-free trie. Analysis of these experiments reveal that the implementation of Ko's Trie performs better than existing theoretical implementations of this ADT when the universe of keys is large, when removes are rare and when the number of processes performing operations concurrently is low.

An Implementation and Experimental Comparison of Dynamic Ordered Sets

TL;DR

An implementation of Ko's Lock-Free Binary Trie, which stores a dynamic set of keys from an ordered universe, and which performs better than existing theoretical implementations of this ADT when the universe of keys is large, when removes are rare and when the number of processes performing operations concurrently is low.

Abstract

It is becoming increasingly difficult to improve the performance of a a single process (thread) on a computer due to physical limitations. Modern systems use multi-core processors in which multiple processes (threads) may run concurrently. A lock-free data structure can allow these processes to communicate with each other without requiring mutual exclusion, and may increase the amount of work they may perform in parallel rather than sequentially, thus improving the performance of the system as a whole. This paper contains an implementation of Ko's Lock-Free Binary Trie, which stores a dynamic set of keys from an ordered universe. It supports insert, remove, search and predecessor operations. One novel component of this implementation is a lock-free linked list which allows multiple processes to attempt to insert the same node, but which prevents a node from being reinserted once it has been removed from the list. The final section of this paper contains an experimental comparison of this implementation against other data structures which implement the same abstract data type (ADT) as the lock-free trie. Analysis of these experiments reveal that the implementation of Ko's Trie performs better than existing theoretical implementations of this ADT when the universe of keys is large, when removes are rare and when the number of processes performing operations concurrently is low.

Paper Structure

This paper contains 29 sections, 15 theorems, 39 figures.

Key Result

Theorem 1

If switch is a linearizable $k$-bounded min register and every $T_i$ is a linearizable $s$-bounded min register, then $m$ is a linearizable $kY$-bounded min register.

Figures (39)

  • Figure 1: The insertion of an Update-Node, $B$, between two consecutive Update-Nodes, $A$ and $C$, in the algorithm.
  • Figure 2: The reinsertion of an Update-Node, $B$, after it has been marked and removed is prevented.
  • Figure 3: The removal of an Update-Node $B$ between $A$ and $C$.
  • Figure 4: Function performed by a process $p_i$ before starting an instance of a data structure operation.
  • Figure 5: Changes $p_i$'s limbo bag to be the one it has least recently used.
  • ...and 34 more figures

Theorems & Definitions (29)

  • Theorem 1
  • proof
  • Theorem 2
  • proof
  • Lemma 3
  • proof
  • Lemma 4
  • proof
  • Corollary 5
  • Lemma 6
  • ...and 19 more