Introduction

Downloads

Instructions

FAQ


Introduction:
Redline is an operating system designed to ensure responsiveness even when system is extremely overloaded.
 
Downloads:
Redline is developed for research purpose. Its code is not optimized and can be buggy, so feel free to download patches and try it, but at your own risk. Currently, Redline only works on Intel i386 platform, it supports HyperThreading and SMP, but not NUMA. Please read the instructions carefully when you try out Redline kernel, and be sure to backup all important things on your machine :-)
  •  CFS-V20.3 patch for kernel 2.6.22.5: here
  •  Redline-V1.6 patch against CFS-V20.3: here
  •  Redline-V1.6 patch against kernel 2.6.22.5: here
  •  SpecTools: here
  •  Toy programs for testing: here
Instructions:
    Redline kernel is developed from Linux kernel 2.6.22.5, and Ingo's new CFS scheduler which was merged into Linux kernel mainstream summer 2007. We started our implementation before the merge happened. Redline kernel adds a new scheduling class which 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 that related to I/O management, such as page writeback, file system, journal system and I/O scheduler. All these modifications are aiming at retain responsiveness when system is overloaded (in terms of CPU, memory or I/O bandwidth).
  •  Kernel Installation
    Step 1: download Linux kernel 2.6.22.5 here, then download CFS V20.3 patch and Redline-V1.6 from Downloads section above. Extract kernel source into a local directory, say /your_source/, then apply patches using following commands:

                    $cd your_source
                    $patch -p1 < cfs-v20.3.patch
                    $patch -p1 < redline-v1.t.patch


    Step 2: compile your kernel. Here is an sample configuration file I used.

                    $make xconfig or make menuconfig
                    $make
                    $make modules_install install

    NOTE: Redline currently only works on Intel i386 platforms. However, Redline implementation does not touch any architecture specific part, except adding two system calls, which supports setting and getting specifications for applications. That is said, just adding proper system calls into other architectures in Linux kernel should also make Redline work.

    NOTE: You may have to disable 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 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 jobs. It contains a specification table, several binary tools for setting/getting specifications, and several scripts. For detail, 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 I do not have specifications for GNOME, but feel free to work it out by yourself. Most GUI applications currently inherits a default specification from KDE, when kdeinit fork and exec a new application. Firefox, mplayer, gmplayer, vim, gvim has their own specifications, either because they need more than the default or I always launch them from a shell. You can provide your own specification for an application if necessary, and please see README files in SpecTools package for how to do it.

    Now, you are ready to reboot your system with Readline kernel. Enjoy it!
     
  •  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 me at tingy@cs.umass.edu