Dominoes: Configurable Replication-based Parallelism of Fine-grained System Services
Overview
Dominoes is a research project at the University of New Mexico focused on configurable, fine-grained system services for multi-core computers. In this system, services are assembled from components that receive requests generated by external actors (e.g. network devices, system calls from processes, virtual machine monitor exits from guest OSes) on high-performance channels. Execution of events on a single processor is atomic, and parallelism is handled by replicating component request processing across processor contexts. In particular, the first component that dequeues a request is responsible for fully processing it, while other replicas only process it sufficient to keep their replicas of component state consistent with other replicas. This approach avoids the locking and caching costs that have frequently limited the scalability of system services for multiprocessor systems and also preserves the simple execution model of event-based component systems.
Example Systems
We are currently focusing on using Dominoes to implement scalable system services in a variety of different systems, including:
- Network protocols stacks, including TCP/IP and the Configurable Transport Protocol (CTP)
- HPC OS system calls in the Kitten operating system
- Virtualization services in the Palacios virtual machine monitor
Implementation Status
Dominoes
An initial framework for coarse-grained replications without fine-grained configurability has been written, with its internal design information and source code in git available to authorized users.
Cactus
A simplified and optimized version of the Cactus composition framework is in the process of being implemented for handling fine-grained composition along with replication. Because the dominoes framework handles asynchronous and timed requests, this version of Cactus focuses primarily on synchronous event dispatch, with wrappers around some dominoes functionality used to support asynchronous and timed events.
Applications
Networking
We are currently in the process of embedding the Scout TCP/IP stack into the Dominoes framework for speeding up TCP/IP stacks using dominoes-style replication. Integration of CTP is awaiting finalization of the revised Cactus interface and its integration with dominoes.
HPC OSes and VMMs
We are in the process of porting the Dominoes prototype into the Kitten kernel, enabling its use for both system call handling and VM exit handling in the Palacios VMM.