Concurrent Deterministic Skiplist and Other Data Structures

This paper presents the design, analysis, and performance evaluation of a concurrent deterministic skiplist alongside lock-free queue and hash table implementations on many-core NUMA systems, introducing memory management strategies and hierarchical usage patterns to reduce page faults, cache misses, and remote memory access latencies.

Aparna Sasidharan

Published 2026-03-06
📖 5 min read🧠 Deep dive

Imagine you are the manager of a massive, super-fast library called the Many-Core Library. This library has thousands of tiny librarians (processors) working at the same time, but they are organized into different wings (NUMA nodes). If a librarian in the North Wing needs a book stored in the South Wing, it takes a long time to walk over there. The goal of this paper is to figure out how to organize the books so that every librarian can find what they need instantly, without tripping over each other or walking across the whole building.

The author, Aparna Sasidharan, tests three different ways to organize this library: Skiplists (a smart way to sort books), Queues (lines for waiting), and Hash Tables (a magic filing cabinet).

Here is a breakdown of her findings using simple analogies.

1. The Skiplist: The "Express Elevator" System

Most libraries use a standard list where you have to check every single book one by one to find the right one. That's slow. A Skiplist is like a building with express elevators.

  • How it works: Imagine you want to find a book on the 50th floor. Instead of walking up 50 flights of stairs, you take an elevator to the 40th floor, then a smaller elevator to the 48th, then a short walk to the 50th.
  • The Problem: The author looked at "Random" Skiplists (where the elevator stops are decided by rolling a dice) and "Deterministic" Skiplists (where the stops are planned perfectly).
  • The Twist: She built a Deterministic Skiplist (a perfectly planned elevator system) that works even when thousands of librarians are trying to use it at once.
  • The Result: While her perfectly planned system was great, she found that the "Random" version (the dice-rolling one) was actually faster when the library got too crowded. Why? Because the random system required less "re-arranging" of the shelves when new books arrived. It was more flexible.

2. The Queue: The "Recycling Bin" Strategy

Queues are like lines of people waiting for a ticket. In computer land, these lines are often made of paper slips (memory blocks).

  • The Problem: If every time someone leaves the line, you throw their slip in the trash and print a brand new one for the next person, you waste a lot of time and paper. Also, if everyone runs to the central supply closet to get new paper, the closet gets jammed.
  • The Solution: The author created a Lock-Free Queue with a "Recycling Bin."
    • Instead of throwing slips away, she puts them in a bin.
    • When a new person joins the line, she grabs a used slip from the bin, erases it, and reuses it.
    • She also grouped the slips into "blocks" (like a stack of 8,000 slips) so the librarians don't have to walk to the supply closet as often.
  • The Result: This method was much faster and didn't clog up the library's memory, especially when many librarians were working at once.

3. The Hash Table: The "Magic Filing Cabinet"

A Hash Table is like a filing cabinet where you don't look for a name alphabetically; you use a magic formula to know exactly which drawer to open.

  • The Problem: When the cabinet gets full, you have to move everything to a bigger cabinet (resizing). This is like moving an entire library to a new building while people are still trying to find books. It causes chaos, and the "magic formula" often points to drawers that are far apart in the building, causing librarians to run back and forth (cache misses).
  • The Solution: She tested two types of cabinets:
    1. The Flat Cabinet: One giant drawer system.
    2. The Two-Level Cabinet: A main cabinet with small sub-cabinets inside.
  • The Result: The Two-Level Cabinet won. It was like having a main directory that told you exactly which small sub-cabinet to go to. This kept the librarians in one small area of the building, reducing the time they spent running across the library. It beat the standard "Intel" library system in many tests.

4. The Secret Sauce: Managing the "Wings" (NUMA)

The biggest lesson from the paper isn't just about the data structures, but where they live.

  • The Analogy: Imagine the library has 8 wings. If a librarian in Wing 1 has to constantly run to Wing 8 to grab a book, the whole system slows down.
  • The Strategy: The author's system tries to keep the books and the librarians in the same wing.
    • She used "Huge Pages" (giant book covers) so librarians don't have to flip through tiny pages.
    • She used "Recycling" so librarians don't have to walk to the supply closet.
    • She split the work so that librarians in Wing 1 mostly talk to books in Wing 1.

The Big Takeaway

In a world with super-fast, multi-core computers, the old ways of organizing data often fail because they cause too much "traffic" and "walking distance" between different parts of the machine.

The paper shows that:

  1. Recycling memory (reusing old blocks) is better than constantly buying new ones.
  2. Grouping data (using two-level tables or blocks) keeps librarians in their local neighborhood, saving time.
  3. Sometimes, a randomized system (like the random skiplist) is actually more efficient than a perfectly planned one because it requires less maintenance when things get busy.

By using these strategies, the author made data structures that can handle massive amounts of work without the computer getting tired or confused.