From b3386bc5a3f1e45bb779bc9c977aeb7530f52b6f Mon Sep 17 00:00:00 2001 From: Bjoern Brandenburg <bbb@Serenity.local> Date: Sat, 19 Jul 2008 14:06:24 +0200 Subject: work on the documentation made it somewhat more pretty --- gfx/setsched.png | Bin 0 -> 14816 bytes inc/format.css | 31 ++++++--- index2.html | 192 +++++++++++++++++++++++++++++-------------------------- 3 files changed, 123 insertions(+), 100 deletions(-) create mode 100644 gfx/setsched.png diff --git a/gfx/setsched.png b/gfx/setsched.png new file mode 100644 index 0000000..e90c62b Binary files /dev/null and b/gfx/setsched.png differ diff --git a/inc/format.css b/inc/format.css index 3cf2edb..1de7be0 100644 --- a/inc/format.css +++ b/inc/format.css @@ -15,7 +15,6 @@ html { body { - background-image : url('gfx/corner.png'); background-position : top right; background-repeat : no-repeat; @@ -34,6 +33,16 @@ img { border: 0px; } +h4 { + font-style: italic; + margin: 0; + padding: 0; +} + +.release { + margin-left: 0.5in; +} + p { font-size: 12pt; } @@ -169,7 +178,7 @@ h1 { } h2 { - font-size: 13pt; + font: italic bold 18pt Georgia, "Times New Roman", Times, serif; } @@ -186,6 +195,12 @@ h3 { margin-bottom: 0.1cm; } +.relname { + color: #eb4f0c; + margin-left: 0.25in; + font: italic bold 16pt Georgia, "Times New Roman", Times, serif; +} + .itext { margin-bottom: 0cm; margin-left: 0.6cm; @@ -214,14 +229,14 @@ h3 { margin-left: 0.5cm; margin-right: 0.5cm; padding: 0.2cm; - font-family: Courier New, Courier, monospace; - font-size: 10pt; - font-weight: bold; background-color: #000000; color: #cccccc; - border-color: #00C400; - border-width: 1px; - border-style: solid; + border: 2px solid #eb4f0c; + font: bold 10pt "Courier New", Courier, mono; +} + +.qa { + margin-top: 0; } .flushright { diff --git a/index2.html b/index2.html index 883f9ef..db9ebe4 100644 --- a/index2.html +++ b/index2.html @@ -53,13 +53,13 @@ </ul> <p> </p> - <p>Earlier versions (2007.1 — 2007.3), which were based on Linux 2.6.20 - and supported additional scheduling policies, are discussed + <p>Earlier versions (2007.1 — 2007.3), which are based on Linux 2.6.20 + and support additional scheduling policies, are discussed on a separate page dedicated to the <a href="litmus2007.html">LITMUS<sup>RT</sup> 2007 series</a>. </p> <p class="nobottommargin"> The first version of LITMUS<sup>RT</sup>, which was implemented in Spring 2006, - was based on Linux 2.6.9 and never publicly released. + is based on Linux 2.6.9. </div> <h2 id="support">Support</h2> @@ -91,7 +91,7 @@ </li> </ul> <p> - (The current version of LITMUS<sup>RT</sup> is based on the <a href="litmus2007.html">2007 series</a>, which had <a href="litmus2007.html#collaborators">additional contributors</a>.) + (<a href="litmus2007.html#collaborators">Additional contributors</a> contributed to earlier versions of LITMUS<sup>RT</sup>.) </p> </div> @@ -101,45 +101,49 @@ <ol class="nomargin"> + <li> + <p> + B. Brandenburg and J. Anderson, + “A Comparison of the M-PCP, D-PCP, and FMLP on LITMUS<sup>RT</sup>”, in submission, July 2008. + <a href="http://www.cs.unc.edu/~anderson/papers/opodis08.ps">Postscript</a>. <a href="http://www.cs.unc.edu/~anderson/papers/opodis08.pdf">PDF</a>. + </p> + </li> <li> + <p> B. Brandenburg, J. Calandrino, and J. Anderson, “On the Scalability of Real-Time Scheduling Algorithms on Multicore Platforms: A Case Study”, in submission, May 2008. <a href="http://www.cs.unc.edu/~anderson/papers/rtss08b.ps">Postscript</a>. <a href="http://www.cs.unc.edu/~anderson/papers/rtss08b.pdf">PDF</a>. + </p> </li> <li> - B. Brandenburg and J. Anderson, - “A Comparison of the M-PCP, D-PCP, and FMLP on LITMUS<sup>RT</sup>”, in submission, April 2008. - <a href="http://www.cs.unc.edu/~anderson/papers/emsoft08.ps">Postscript</a>. <a href="http://www.cs.unc.edu/~anderson/papers/emsoft08.pdf">PDF</a>. - </li> - - <li> + <p> B. Brandenburg and J. Anderson, “An Implementation of the PCP, SRP, D-PCP, M-PCP, and FMLP Real-Time Synchronization Protocols in LITMUS<sup>RT</sup>”, - <cite>Proceedings of the 14th IEEE International Conference on Embedded and Real-Time Computing Systems and Applications</cite>, to appear, 2008. + <cite>Proceedings of the 14th IEEE International Conference on Embedded and Real-Time Computing Systems and Applications</cite>, to appear, August 2008. <a href="http://www.cs.unc.edu/~anderson/papers/rtcsa08.ps">Postscript</a>. <a href="http://www.cs.unc.edu/~anderson/papers/rtcsa08.pdf">PDF</a>. + </p> </li> <li> - A. Block, B. Brandenburg<, J. Anderson, + <p> + A. Block, B. Brandenburg, J. Anderson, and S. Quint, “An Adaptive Framework for Multiprocessor Real-Time Systems”, - <cite>Proceedings of the 20th Euromicro Conference on Real-Time Systems</cite>, to appear, 2008. + <cite>Proceedings of the 20th Euromicro Conference on Real-Time Systems</cite>, pp. 23-33, July 2008. <a href="http://www.cs.unc.edu/~anderson/papers/ecrts08b.ps">Postscript</a>. <a href="http://www.cs.unc.edu/~anderson/papers/ecrts08b.pdf">PDF</a>. - + </p> </li> <li> + <p> B. Brandenburg, J. Calandrino, A. Block, H. Leontyev, and J. Anderson, “Real-Time Synchronization on Multiprocessors: To Block or Not to Block, to Suspend or Spin?”, <cite> Proceedings of the 14th IEEE Real-Time and Embedded Technology and Applications Symposium</cite>, pp. 342-353, April 2008. <a href="http://www.cs.unc.edu/~anderson/papers/rtas08.ps">Postscript</a>. <a href="http://www.cs.unc.edu/~anderson/papers/rtas08.pdf">PDF</a>. - </li> - - <p> Extended version, including all graphs: <a href="http://www.cs.unc.edu/~anderson/papers/rtas08along.ps">Postscript</a>, @@ -161,7 +165,7 @@ Technology and Applications Symposium</cite>, pp. 342-353, April 2008. <p> B. Brandenburg and J. Anderson, "Integrating Hard/Soft Real-Time Tasks and Best-Effort Jobs on Multiprocessors", <cite> Proceedings of the 19th Euromicro - Conference on Real-Time Systems</cite>, July 2007, to appear. + Conference on Real-Time Systems</cite>, pp. 61-70, July 2007. <a href="http://www.cs.unc.edu/~anderson/papers/ecrts07b.ps">Postscript</a>, <a href="http://www.cs.unc.edu/~anderson/papers/ecrts07b.pdf">PDF</a>. </p> @@ -196,13 +200,13 @@ Technology and Applications Symposium</cite>, pp. 342-353, April 2008. <span class="src">liblitmus</span>, the user-space API for real-time tasks. </p> + <h3 class="relname">LITMUS<sup>RT</sup> 2008.1</h3> + <div class="release"> + <p> + Based on Linux 2.6.24. Released in July 2008. + </p> + <h4>Files:</h4> <ul> - <li> - 2008.1 (July 2008)<br/> - Based on Linux 2.6.24. (see <a href="#install">Section Install</a> - below) <br/> - Files: - <ul> <li> <a href="download/2008.1/litmus-rt-2008.1.patch">litmus-rt-2008.1.patch</a> </li> @@ -211,10 +215,9 @@ Technology and Applications Symposium</cite>, pp. 342-353, April 2008. </li> <li><a href="download/2008.1/SHA256SUMS">SHA256 check sums</a> </li> - </ul> - </li> - <li> - Major changes (compared to LITMUS<sup>RT</sup> 2007.3): + </ul> + + <h4>Major changes (since LITMUS<sup>RT</sup> 2007.3):</h4> <ul> <li>LITMUS<sup>RT</sup> was ported to Linux 2.6.24. </li> @@ -235,6 +238,7 @@ Technology and Applications Symposium</cite>, pp. 342-353, April 2008. </ul> </li> </ul> + </div> <p> Please note that the current implementation is a <em>prototype</em> with @@ -255,19 +259,19 @@ Technology and Applications Symposium</cite>, pp. 342-353, April 2008. <h2 id="install">Installation</h2> <div class="box"> <p class="notopmargin"> - The current release of LITMUS<sup>RT</sup>, version 2007.2, consists of an + The current release of LITMUS<sup>RT</sup> consists of an extension of the Linux kernel that adds support for the sporadic task model, a scheduler plugin infrastructure, and some scheduler plugins, as - well as two user-space libraries that provide the LITMUS<sup>RT</sup> + well as a user-space library that provides the LITMUS<sup>RT</sup> real-time API. Note, that the current implementation only works on the - Intel x86 architecture. + Intel x86-32 and sparc64 architectures. </p> <h3>Patching the Kernel</h3> <p class="notopmargin"> The extension to the Linux kernel is released as a patch against Linux - 2.6.20. To install the LITMUS<sup>RT</sup> kernel, first <a - href="http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.tar.bz2">download the Linux - kernel 2.6.20</a> and untar it in a directory of your choice (hereafter + 2.6.24. To install the LITMUS<sup>RT</sup> kernel, first <a + href="http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.24.tar.bz2">download the Linux + kernel 2.6.24</a> and untar it in a directory of your choice (hereafter referred to as <span class="src">$DIR</span>). Second, apply the LITMUS<sup>RT</sup> patch (see <a href="#download">Section Download</a>) and configure, compile, and install the kernel as usual. The patch is <span @@ -277,78 +281,46 @@ Technology and Applications Symposium</cite>, pp. 342-353, April 2008. </p> <pre class="shell"> cd $DIR -# get Linux 2.6.20 -wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.tar.bz2 -tar xjf linux-2.6.20.tar.bz2 -wget http://www.cs.unc.edu/~anderson/litmus-rt/download/2007.3/litmus-rt-2007.3.patch -mv linux-2.6.20 litmus-rt +# get Linux 2.6.24 +wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.24.tar.bz2 +tar xjf linux-2.6.24.tar.bz2 +wget http://www.cs.unc.edu/~anderson/litmus-rt/download/2008.1/litmus-rt-2008.1.patch +mv linux-2.6.24 litmus2008 # apply the LITMUS RT patch -cd litmus-rt -patch -p1 < ../litmus-rt-2007.3.patch +cd litmus2008 +patch -p1 < ../litmus-rt-2008.1.patch # create a working kernel configuration with HZ=1000 -make gconfig +make menuconfig # compile the kernel make bzImage make modules # proceed to install kernel, build initrd, etc. ... </pre> - <p> - After the kernel has been compiled and installed, the boot-loader must be - configured to load the desired real-time scheduler plugin at boot time (run - time selection of the real-time scheduler is currently not supported). The - real-time scheduler plugin is selected with the <span - class="src">rtsched</span> kernel parameter. - </p> -<pre class="shell"> -rtsched= {linux, pfair, part_edf, global_edf, - global_edf_np, edf_hsb, gsn_edf, psn_edf, adaptive} -</pre> - <p> - For example, on our test machine, we use the - following GRUB entry: - </p> - -<pre class="shell"> -title Kernel 2.6.20-LITMUSRT -root (hd0,5) -kernel /boot/vmlinuz-2.6.20-LITMUSRT root=/dev/sda6 ro vga=791 rtsched=gsn_edf -initrd /boot/kernel-2.6.20-LITMUSRT.img -</pre> + <p> + When configuring the kernel, note that there is a menu (at the very end of the list) + with LITMUS<sup>RT</sup>-specific configuration options. + </p> <h3>Libraries</h3> <p class="notopmargin"> - The two user-space libraries, <span class="src">liblitmus</span> and <span - class="src">libso</span>, provide their own makefiles and thus are easy to - compile. The kernel interface for real-time tasks is provided by <span - class="src">liblitmus</span>, which can be compiled as follows: + The user-space library for real-time tasks, <span class="src">liblitmus</span>, + depends on the LITMUS<sup>RT</sup> kernel kernel and provides its own makefile. + In order to compile <span class="src">liblitmus</span>, you need to adjust the + variable <span class="src">KERNEL_DIR</span> in the Makfile to point to your + copy of the kernel. </p> <pre class="shell"> cd $DIR -wget http://www.cs.unc.edu/~anderson/litmus-rt/download/2007.3/liblitmus-2007.3.tgz -tar xzf liblitmus-2007.3.tgz +wget http://www.cs.unc.edu/~anderson/litmus-rt/download/2008.1/liblitmus-2008.1.tgz +tar xzf liblitmus-2008.1.tgz cd liblitmus +# change KERNEL_DIR in Makefile to point to the kernel source make -</pre> - <p> - The second library, <span class="src">libso</span>, provides shared object - and synchronization support for real-time tasks. It depends on <span - class="src">liblitmus</span> and must be installed in "parallel" - (they must have the same parent directory). The following commands will - obtain and compile <span class="src">libso</span>, including the test programs: - </p> -<pre class="shell"> -cd $DIR -wget http://www.cs.unc.edu/~anderson/litmus-rt/download/2007.3/libso-2007.3.tgz -tar xzf libso-2007.3.tgz -cd libso -make -make tests </pre> <p class="nobottommargin"> Please refer to the <a href="#doc">documentation</a> on how to use the LITMUS<sup>RT</sup> - real-time API as provided by <span class="src">libso</span> and - <span class="src">liblitmus</span>. + real-time API as provided by <span class="src">liblitmus</span>. </p> </div> @@ -358,18 +330,56 @@ make tests <div class="box"> <p class="notopmargin"> - Most of the documentation has yet to be written. To get an overview of + Unfortunately, most of the documentation has yet to be written. To get an overview of the architecture of the kernel extension, we recommend reading the paper <a href="http://www.cs.unc.edu/~anderson/papers/rtlws07.pdf">“LITMUS<sup>RT</sup>: A Status Report”</a>. </p> + <h3>Real-Time Scheduling Policies</h3> + <p class="qa"> + The kernel contains the following real-time scheduling policy implementations: + </p> + <ul> + <li> + PFAIR, an implementation of the PD<sup>2</sup> algorithm, + </li> + <li> + PSN-EDF, a partitioned EDF (P-EDF) implementation with support for the real-time synchronization protocol + FMLP, + </li> + <li> + GSN-EDF, a global EDF (G-EDF) implementation with support for the real-time synchronization protocol + FMLP, + </li> + <li> + C-EDF (Clustered EDF), a hybrid of G-EDF and P-EDF, and + </li> + <li> + Linux, a placeholder policy that disables all real-time functionality added by the LITMUS<sup>RT</sup> patch. + </li> + </ul> <p> + Only one policy can be active at any time. Initially (<em>i.e.,</em> during boot), the "Linux" policy is active. + You can use the tool <span class="src">showsched</span> (part of <span class="src">liblitmus</span>) to display + the name of the currently active policy. + </p> + <h3>Changing the Active Policy</h3> + <p class="qa"> + You can use the tool <span class="src">setsched</span> (part of <span class="src">liblitmus</span>) + to select a new plugin at run time. + <div align="center"> + <img class="screenshot" src="gfx/setsched.png" alt="Screen shot of setsched"/> + </div> + Only root can change the active policy, and only when there are no real-time tasks present. + </p> + <h3>Writing Real-Time Tasks</h3> + <p class="qa"> The user space library that provides the LITMUS<sup>RT</sup> API, <span class="src">liblitmus</span>, contains two example real-time tasks (<span class="src">base_task.c</span> and <span class="src">base_mt_task.c</span>) that both illustrate how to use the API and provide a skeleton for real-time - task development. To get started with development, take a look these example + task development. To get started with development, please take a look these example programs. </p> <p class="nobottommargin"> @@ -390,9 +400,7 @@ make tests <p class="nomargin"> Linux is a registered trademark of Linus Torvalds. <br /> The - LITMUS<sup>RT</sup> logo was designed by <a - href="http://designs.primevalpress.com">Jasper McChesney</a> of <a - href="http://designs.primevalpress.com">Primeval Designs</a>. <br /> + LITMUS<sup>RT</sup> logo was designed by Jasper McChesney of Primeval Designs. <br /> Web design by Björn Brandenburg. </p> -- cgit v1.2.2