Manticore Operating System

Manticore is a clean-slate research operating system, written in the Rust programming language, with the aim of exploring the parakernel OS architecture.

Why a new operating system? The OS is increasingly a bottleneck for server applications that want to take maximum advantage of the hardware. Many traditional kernel interfaces (such as in POSIX) were designed when I/O was significantly slower than the CPU. However, today I/O is getting faster, but single-threaded CPU performance has stagnated. For example, a 40 GbE NIC can receive a cache-line sized packet faster than the CPU can access its last-level cache (LLC), which makes it tricky for an OS to keep up with packets arriving from the network. Similarly, non-volatile memory (NVM) access speed is getting closer to DRAM speeds, which challenges OS abstractions for storage.

What is a parakernel? To address this OS bottleneck, server applications are increasingly adopting kernel-bypass techniques. For example, the Seastar framework is an OS implemented in userspace, which implements its own CPU and I/O scheduler, and bypasses the Linux kernel as much as it can. Parakernel is an OS architecture that eliminates many OS abstractions (similar to exokernels) and partitions hardware resources (similar to multikernels) to facilitate high-performance server application with increased application-level parallelism and predictable tail latency.

Features

Manticore supports the following features:

  • Process scheduling (no kernel threads)
  • Hardware resource partitioning
  • Virtual memory (no demand paging)
  • User-level network stack and socket interface with IPv4/UDP support
  • Non-blocking OS system calls
  • ELF executable support

Roadmap

The development roadmap for Manticore is as follows:

  • Phase 0: kernel bootstrap, memory management, interrupts, etc. on Intel x86 platform with KVM/QEMU (done)
  • Phase 1: UDP/IPv4 userspace network stack and VirtIO network device driver, and UDP echo server (done)
  • Phase 2: packet buffer management, virtual memory, and high-speed I/O interfaces (ongoing)
  • Phase 3: port memcached key-value store to the OS
  • Phase 4: multicore support on Intel x86 platform
  • Phase 5: hardware NIC driver (e.g., for Intel 82599) with PCI device assignment under KVM/QEMU
  • Phase N: managed runtime support (e.g., Node.js or Wasmer)

There are also plans to port Manticore to the RISC-V and ARM64 machine architectures, please contact us if you are interested in helping out!

Publications

Manticore is featured in the following academic publications:

  • Pekka Enberg, Ashwin Rao, and Sasu Tarkoma. I/O Is Faster Than the CPU: Let's Partition Resources and Eliminate (Most) OS Abstractions. In Proceedings of the Workshop on Hot Topics in Operating Systems (HotOS '19), Bertinoro, Italy, May 2019. [ PDF ]