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
|