LITMUS^RT: Linux Testbed for Multiprocessor Scheduling in Real-Time Systems

About

LITMUSRT is a real-time extension of the Linux kernel with a focus on multiprocessor real-time scheduling and synchronization. The Linux kernel is modified to support the sporadic task model, modular scheduler plugins, and reservation-based scheduling. Clustered, partitioned, and global schedulers are included, and semi-partitioned scheduling is supported as well.

LITMUSRT has been continuously maintained by Björn Brandenburg since 2006, and actively developed until 2017. As of 2018, there are currently no plans to rebase it to newer Linux kernel versions.

Goals

The primary purpose of the LITMUSRT project is to provide a useful experimental platform for applied real-time systems research. To that end, LITMUSRT provides abstractions and interfaces within the kernel that simplify the prototyping of multiprocessor real-time scheduling and synchronization algorithms (compared to modifying a “vanilla” Linux kernel).

As a secondary goal, LITMUSRT serves as a proof of concept, showing how predictable multiprocessor schedulers and locking protocols can be implemented on current hardware. Finally, we hope that parts of LITMUSRT and the “lessons learned” may find value as blueprints, or as a source of inspiration, for other implementation efforts (both commercial and open source).

Non-Goals

LITMUSRT is a research system that is stable and tested—it works well—but we do not have the resources to maintain a rigorous QA regime as it would be expected of a production-quality system suitable for safety- or mission-critical applications (just as it is the case with most research projects).

Furthermore, LITMUSRT’s API is not “stable,” that is, interfaces and implementations may change without warning between releases. POSIX-compliance is not a goal; the LITMUSRT-API offers alternate system call interfaces.

While we aim to follow Linux-coding standards, LITMUSRT is not targeted at being merged into mainline Linux. Rather, we hope that some of the ideas protoyped in LITMUSRT may eventually find adoption in Linux or other kernels.

Current Version

The current version of LITMUSRT is 2017.1 and is based on Linux 4.9.30. It was released on May 26, 2017 and includes plugins for the following scheduling policies:

Please refer to the download and documentation pages for more details about installing and working with LITMUSRT.

Getting Help

To get in contact with the LITMUSRT community, please use the mailing list.

Credit

The maintainer and main developer behind LITMUSRT is Björn Brandenburg of the Max Planck Institute for Software Systems (MPI-SWS).

LITMUSRT was originally launched at the University of North Carolina at Chapel Hill under the direction of James H. Anderson and has benefited from contributions by a number of researchers over the years.

When referencing LITMUSRT, please cite two publications:

  1. The original LITMUSRT paper: J. Calandrino, H. Leontyev, A. Block, U. Devi, and J. Anderson, "LITMUSRT: A Testbed for Empirically Comparing Real-Time Multiprocessor Schedulers ", Proceedings of the 27th IEEE Real-Time Systems Symposium, pp. 111–123, December 2006.
  2. The description of the current version: B. Brandenburg, “Scheduling and Locking in Multiprocessor Real-Time Operating Systems”, PhD thesis, UNC Chapel Hill, 2011.

While [1] is the first publication on LITMUSRT, the first public release of LITMUSRT was actually based on a reimplementation in 2007. All versions since 2007 are best described by the detailed description in [2].


legal imprint | data protection notice