NOTE: Please see Kitten repository at GitHub for latest source code (link)

git clone

Kitten is a lightweight kernel (LWK) compute node operating system, similar to previous LWKs such as SUNMOS, Puma, Cougar, and Catamount. Kitten distinguishes itself from these prior LWKs by providing a Linux-compatible user environment, a more modern and extendable codebase, and a virtual machine monitor capability via  Palacios that allows full-featured guest operating systems to be loaded on-demand. For a more detailed introduction to Kitten, please see this presentation:

 Kitten: A Lightweight Operating System for Ultrascale Supercomputers

Be warned – there are rough edges and missing functionality (a polished job load mechanism springs to mind). However, there is also a solid foundation in place on which to build and experiment with new system software ideas. We have found that LWKs in general often allow more effort to be directed at the true issue being explored, rather than working around complex Linux kernel internals and maintaining non-standard Linux patches.

Highlight Features

  • Open Source (GPL)
  • New LWK codebase partially derived from  Linux, familiar organization and build process
  • Linux user-space ABI support (partial, similar to IBM's  CNK)
  •  Guest OS support (via V3VEE project's  Palacios hypervisor)
  • Uses standard GNU toolchains and system libraries such as Glibc
  • Multiple processes and threads per core, uses standard Glibc NPTL POSIX Threads implementation
  •  SMARTMAP address-space to address-space mapping support
  •  Qthreads API support

Kitten Releases

  • 1.0.0, Dec. 8, 2008
  • 1.1.0, May 1, 2009
    • Integration with Palacios VMM, allows guest OSes to be loaded alongside native Kitten applications
    • Initial support for POSIX threads and OpenMP user applications
  • 1.2.0, Jan 27, 2010
    • Updated Palacios interface, matches Palacios 1.2.0 release
    • Added SMARTMAP test application
    • Added experimental Open Fabrics Infiniband stack
    • Misc. bug fixes and improvements
  • 1.3.0, November 14, 2011  Current Release
    • Initial cut at ACPI SRAT table parsing, make NUMA topology information available to user-space
    • Added SwitchCores() thread migration mechanism, similar to V1 algorithm described in  Fast Switching of Threads Between Cores
    • Prototype job launch tool for IB clusters (in kitten/user/runtime)
    • Misc. updates to stay current with Palacios and Linux