Redline

Introduction:
Redline is an operating system kernel designed to ensure responsiveness even when the system is extremely overloaded.

Downloads:
Currently, Redline works on the Intel i386 platform and supports HyperThreading and SMP, but not NUMA. Please read the instructions carefully when you try out the Redline kernel. While Redline has been tested, you should backup any important things on your machine just in case.

Instructions:
The Redline kernel uses the Linux kernel 2.6.22.5 as a base, combined with Ingo Molnar’s new CFS scheduler which was merged into Linux kernel mainstream summer 2007. We started our implementation before the merge happened. The Redline kernel adds a new scheduling class that uses EDF with eligibility control in CPU scheduler, modifies virtual memory manager (VMM) to protect pages used by interactive tasks. It also modifies several layers in the system related to I/O management, such as page writeback, the file system, journaling, and the I/O scheduler. All these modifications aim to maintain responsiveness even when the system is overloaded (in terms of CPU, memory or I/O bandwidth).

NOTE: Redline currently only works on Intel i386 platforms. However, Redline implementation does not touch any architecture-specific part, except adding two system calls to support setting and getting specifications for applications. Adding proper system calls into other architectures in the Linux kernel should also make Redline work.

NOTE: You may have to disable the following options in your kernel configuration file, even though by default they are disabled: CONFIG_NUMA /* For NUMA */
CONFIG_MC /* For Multi-Core */
CONFIG_RT_MUTEXES /* For Mutex Priority Inheritance */
CONFIG_NOMMU /* no MMU, for systems that have no VM */

System Setup using SpecTools
Redline is specification-driven, so you need to setup specifications for your system, and also manage them. SpecTools is a package that allows you to do these tasks. It contains a specification table, several binary tools for setting/getting specifications, and several scripts. For details, please refer to README.SPECTOOLS in the downloaded package.

Step 1: Before you can compile SpecTools, you need first add necessary system call interface, because Redline adds two system calls. You need to
replace: /usr/include/asm/unistd.h (or whatever suitable file in your system)
with : /include/asm-i386/unistd.h (in your downloaded kernel source above)

Step 2: Download SpecTools from the Downloads section above, and then decompress it using

$tar -zxvf spectools.tar.gz
$make
$make install /* You need have root privilege to do this */This will setup a directory /etc/spec in your system, and generates proper specification files in that directory from specification.tab. You can do this manually using update_spec.pl script in the package. It also installs two binaries: set_pid_spec and get_pid_spec

Step 3: The last thing you need to do is add one line in your /etc/rc.d/rc.local/etc/spec/kernelthread_specfix.pl
So that your system invokes this script after it boots up. This script will set specifications for kernel threads, which do not call do_execve() at all.

NOTE: The sample system specification provided by SpecTools, i.e. specification.tab, is configured for KDE desktop environment. Currently, Redline does not include specifications for GNOME. Most GUI applications currently inherit a default specification from KDE, when kdeinit fork and exec a new application. Firefox, mplayer, gmplayer, vim, gvim have their own specifications, either because they need more than the default or because they are often launched from a shell. You can provide your own specification for an application if necessary; please see README files in SpecTools package for how to do it.

Now, you are ready to reboot your system with Redline kernel. Enjoy!

Setting Specification:
Please read README.SPECTOOLS and README.SPECIFICATIONS to see how to provide specification for applications

FAQ:
If you have any questions or suggestions, please contact Ting Yang at tingy@cs.umass.edu or Emery Berger at emery@cs.umass.edu.This material is based upon work supported by the National Science Foundation under CAREER Award CNS-0347339 and CNS-0615211. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.

Contact Info

Recent Posts: Emery Blogger

I just sent this message as a guide to the program committee members who will be chairing sessions for PLDI 2016 (I figure it’s the first time for some of them). A few people suggested I post it, so here it is (lightly edited). Additions or other suggestions welcome. Find your speakers before the session begins. You […]

Originally posted on the morning paper: Coz: Finding code that counts with causal profiling – Curtsinger & Berger 2015 update: fixed typo in paper title Sticking to the theme of ‘understanding what our systems are doing,’ but focusing on a single process, Coz is a causal profiler. In essence, it makes the output of a…

Doppio, our work on making it possible to run general-purpose applications inside the browser, recently won two awards. At PLDI, it received the Distinguished Artifact Award. SIGPLAN, the Special Interest Group of ACM that focuses on Programming Languages, just selected Doppio as a Research Highlight. These papers are chosen by a board from across the PL […]