Below are some projects that our group is actively working on. If you are a Ph.D. student, email Sanidhya.

Transient Operating System Design

The main goal of this big project is to dynamically modify various subsystems to cater to heterogeneous hardware and varying application requirements. Most of the prior works focus on IO, while our focus is mostly on the concurrency aspect. In particular, we are exploring how applications can fine-tune the concurrency control mechanisms and underlying stack to improve their performance. Some of the projects are as follows:

  1. A concurrency control runtime to efficiently switch between locks at various granularity.
  2. New low-level language to support lock design while ensuring lock properties, such as mutual exclusion, starvation avoidance, and fairness.
  3. A lightweight hypervisor that caters to various forms of virtualization: bare-metal to serverless.

We will further extend this project to reason about data structures' concurrency and consistency.

Scalable Storage Stack

With blazing fast IO devices, saturating them is becoming a difficult task. Unfortunately, the current OS stack is the major bottleneck that is still operating in the era of 2000s. As a part of this big project, we are looking at ways to redesign the OS stack to support fast storage devices. We are working on designing new ways to improves the design of file systems. Some of the projects are as follows:

  1. Designing new techniques to saturate and scale operations for various storage media.
  2. Understanding the implication of persistent memory (PM) over traditional storage media, such as SSDs.
  3. Offloading file system stack to computational SSDs.
  4. Re-architecting OS for microsecond IO.

Concurrency Primitives and Frameworks

With our particular interest in designing new synchronization primitives and concurrency frameworks, we are looking at designing new primitives that further squeeze the performance out of hardware for two scenarios: heterogeneous hardware (such as BIG/Little architectures and high bandwidth memory) and rack-scale systems. We are revisiting some of the primitives and trying to reason about their practicality. Some of the ongoing projects are as follows:

  1. Making advanced synchronization primitives (combining/delegation) a reality.
  2. Revisiting the design of locking primitives for very large multicore machines.
  3. Reasoning about various bugs in a concurrent environment.