summaryrefslogtreecommitdiffstats
path: root/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'index.html')
-rw-r--r--index.html417
1 files changed, 417 insertions, 0 deletions
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..db9ebe4
--- /dev/null
+++ b/index.html
@@ -0,0 +1,417 @@
1<?xml version="1.0" encoding="utf-8" ?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
4 <head>
5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
6 <meta name="verify-v1" content="pZNmf5XyUUfAPdlSPbFSavMUsLgVsmBYOXzOhbIy2gw=" />
7 <link rel="stylesheet" type="text/css" href="inc/format.css"/>
8 <title>LITMUS RT: Linux Testbed for Multiprocessor Scheduling in Real-Time Systems</title>
9 </head>
10 <body>
11 <div class="logobox">
12 <img src="inc/litmusrt.png" alt="LITMUS^RT: Linux Testbed for Multiprocessor Scheduling in Real-Time Systems" />
13 <p class="authors">
14 <a href="http://www.cs.unc.edu/~anderson/">Dr. James H. Anderson &amp;
15 Students</a>,
16 <a href="http://www.unc.edu">The University of North Carolina at Chapel Hill</a>
17 </p>
18
19 </div>
20
21 <div class="nav">
22 <p>
23 <a href="#about">about</a> -
24 <a href="#support">support</a> -
25 <a href="#collaborators">collaborators</a> -
26 <a href="#publications">publications</a> -
27 <a href="#download">download</a> -
28 <a href="#install">installation</a> -
29 <a href="#links">documentation</a>
30 </p>
31 </div>
32
33 <h2 id="about">About</h2>
34 <div class="box">
35 <p class="nomargin">
36 The LITMUS<sup>RT</sup> project is a soft real-time extension of the Linux
37 kernel with focus on multiprocessor real-time scheduling and
38 synchronization. The Linux kernel is modified
39 to support the sporadic task
40 model and modular scheduler plugins. Both partitioned and global scheduling
41 is supported.
42 </p>
43 <p>
44 The current version of LITMUS<sup>RT</sup> is <strong>2008.1</strong> and is based on Linux&nbsp;2.6.24.
45 It was released on ??/??/2008 and includes plugins for the following
46 scheduling policies are included:
47 </p>
48 <ul>
49 <li> Partitioned EDF with synchronization support (PSN-EDF)</li>
50 <li> Global EDF with synchronization support (GSN-EDF)</li>
51 <li> Clustered EDF (C-EDF) </li>
52 <li> PFAIR (both staggered and aligned quanta are supported)</li>
53 </ul>
54 <p>
55 </p>
56 <p>Earlier versions (2007.1 &mdash; 2007.3), which are based on Linux&nbsp;2.6.20
57 and support additional scheduling policies, are discussed
58 on a separate page dedicated to the <a href="litmus2007.html">LITMUS<sup>RT</sup> 2007 series</a>.
59 </p>
60 <p class="nobottommargin">
61 The first version of LITMUS<sup>RT</sup>, which was implemented in Spring 2006,
62 is based on Linux&nbsp;2.6.9.
63 </div>
64
65 <h2 id="support">Support</h2>
66 <div class="box">
67 <p class="nomargin">
68 The LITMUS<sup>RT</sup> development effort is being supported by grants from
69 Intel Corp., IBM Corp., The National Science Foundation (grant CCR 0615197), and The U.S.
70 Army Research Office (grant W911NF-06-1-0425).
71 </p>
72 </div>
73
74 <h2 id="collaborators">Collaborators</h2>
75 <div class="box">
76 <p class="notopmargin"> The LITMUS<sup>RT</sup> project is led by <a
77 href="http://www.cs.unc.edu/~anderson/">Dr. James H. Anderson</a>.
78 </p>
79 <p>
80 The
81 implementation effort is carried out by students of the
82 <a href="http://www.cs.unc.edu/rt">Real-Time Systems
83 Group</a> at the <a href="http://www.unc.edu">University of North Carolina
84 at Chapel Hill</a>:
85 </p>
86 <ul>
87 <li>
88 <a href="http://www.cs.unc.edu/~bbb/">Bj&ouml;rn B. Brandenburg</a>
89 </li>
90 <li> <a href="http://www.cs.unc.edu/~jmc/">John M. Calandrino</a>
91 </li>
92 </ul>
93 <p>
94 (<a href="litmus2007.html#collaborators">Additional contributors</a> contributed to earlier versions of LITMUS<sup>RT</sup>.)
95 </p>
96 </div>
97
98
99 <h2 id="publications">Publications</h2>
100 <div class="box">
101
102 <ol class="nomargin">
103
104 <li>
105 <p>
106 B. Brandenburg and J. Anderson,
107 &ldquo;A Comparison of the M-PCP, D-PCP, and FMLP on LITMUS<sup>RT</sup>&rdquo;, in submission, July 2008.
108 <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>.
109 </p>
110 </li>
111
112 <li>
113 <p>
114 B. Brandenburg, J. Calandrino, and J. Anderson,
115 &ldquo;On the Scalability of Real-Time Scheduling Algorithms on Multicore Platforms: A Case Study&rdquo;, in submission, May 2008.
116 <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>.
117 </p>
118 </li>
119
120 <li>
121 <p>
122 B. Brandenburg and J. Anderson,
123 &ldquo;An Implementation of the PCP, SRP, D-PCP, M-PCP,
124 and FMLP Real-Time Synchronization Protocols in LITMUS<sup>RT</sup>&rdquo;,
125 <cite>Proceedings of the 14th IEEE International Conference on Embedded and Real-Time Computing Systems and Applications</cite>, to appear, August 2008.
126 <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>.
127 </p>
128 </li>
129
130 <li>
131 <p>
132 A. Block, B. Brandenburg, J. Anderson,
133 and S. Quint, &ldquo;An Adaptive Framework for Multiprocessor Real-Time Systems&rdquo;,
134 <cite>Proceedings of the 20th Euromicro Conference on Real-Time Systems</cite>, pp. 23-33, July 2008.
135 <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>.
136 </p>
137 </li>
138
139 <li>
140 <p>
141 B. Brandenburg, J. Calandrino, A. Block,
142 H. Leontyev, and J. Anderson, &ldquo;Real-Time Synchronization
143 on Multiprocessors: To Block or Not to Block, to Suspend or
144 Spin?&rdquo;, <cite> Proceedings of the 14th IEEE Real-Time and Embedded
145Technology and Applications Symposium</cite>, pp. 342-353, April 2008.
146 <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>.
147 <p>
148 Extended version, including all graphs:
149 <a href="http://www.cs.unc.edu/~anderson/papers/rtas08along.ps">Postscript</a>,
150 <a href="http://www.cs.unc.edu/~anderson/papers/rtas08along.pdf">PDF</a>.
151 </p>
152 </li>
153
154 <li>
155 <p>
156 B. Brandenburg, A. Block, J. Calandrino, U. Devi, H. Leontyev, and J. Anderson,
157 &quot;LITMUS<sup>RT</sup>: A Status Report&quot;, <cite> Proceedings of the 9th
158 Real-Time Linux Workshop</cite>, pp. 107-123, November 2007.
159 <a href="http://www.cs.unc.edu/~anderson/papers/rtlws07.ps">Postscript</a>.
160 <a href="http://www.cs.unc.edu/~anderson/papers/rtlws07.pdf">PDF</a>.
161 </p>
162 </li>
163
164 <li>
165 <p>
166 B. Brandenburg and J. Anderson, &quot;Integrating Hard/Soft Real-Time Tasks
167 and Best-Effort Jobs on Multiprocessors&quot;, <cite> Proceedings of the 19th Euromicro
168 Conference on Real-Time Systems</cite>, pp. 61-70, July 2007.
169 <a href="http://www.cs.unc.edu/~anderson/papers/ecrts07b.ps">Postscript</a>,
170 <a href="http://www.cs.unc.edu/~anderson/papers/ecrts07b.pdf">PDF</a>.
171 </p>
172 </li>
173
174
175 <li>
176 <p>
177 J. Calandrino, H. Leontyev, A. Block, U. Devi, and J. Anderson,
178 &quot;LITMUS<sup>RT</sup>: A Testbed for Empirically Comparing Real-Time
179 Multiprocessor Schedulers &quot;, <cite>Proceedings of the 27th IEEE Real-Time Systems
180 Symposium</cite>, pp. 111-123, December 2006.
181 <a href="http://www.cs.unc.edu/~anderson/papers/rtss06b.ps">Postscript</a>,
182 <a href="http://www.cs.unc.edu/~anderson/papers/rtss06b.pdf">PDF</a>.
183 </p>
184 </li>
185
186 </ol>
187 </div>
188
189 <h2 id="download">Download</h2>
190 <div class="box">
191 <p class="notopmargin">
192 The source code of LITMUS<sup>RT</sup> is made available as open source
193 under the terms of the <a href="http://www.gnu.org/licenses/gpl.txt">GNU
194 General Public License (GPL)</a>.
195 </p>
196 <p>
197 The current release of LITMUS<sup>RT</sup> is 2008.1 and was released on ??/??/2008.
198 It consists of our Linux kernel modifications in the form of
199 a patch against Linux 2.6.24 and
200 <span class="src">liblitmus</span>, the user-space API for real-time tasks.
201 </p>
202
203 <h3 class="relname">LITMUS<sup>RT</sup> 2008.1</h3>
204 <div class="release">
205 <p>
206 Based on Linux 2.6.24. Released in July 2008.
207 </p>
208 <h4>Files:</h4>
209 <ul>
210 <li>
211 <a href="download/2008.1/litmus-rt-2008.1.patch">litmus-rt-2008.1.patch</a>
212 </li>
213 <li>
214 <a href="download/2008.1/liblitmus-2008.1.tgz">liblitmus-2008.1.tgz</a>
215 </li>
216 <li><a href="download/2008.1/SHA256SUMS">SHA256 check sums</a>
217 </li>
218 </ul>
219
220 <h4>Major changes (since LITMUS<sup>RT</sup> 2007.3):</h4>
221 <ul>
222 <li>LITMUS<sup>RT</sup> was ported to Linux 2.6.24.
223 </li>
224 <li>LITMUS<sup>RT</sup> was ported to <span style="src">sparc64</span>.
225 </li>
226 <li>LITMUS<sup>RT</sup> is now a proper scheduling class (<span class="src">SCHED_LITMUS</span>).
227 </li>
228 <li>
229 LITMUS<sup>RT</sup> queues are now based on mergeable heaps.
230 </li>
231 <li>Support for multi-threaded real-time tasks.
232 </li>
233 <li>Scheduler plugins can be selected at runtime; no reboot required.
234 </li>
235 <li>
236 Many bug fixes.
237 </li>
238 </ul>
239 </li>
240 </ul>
241 </div>
242
243 <p>
244 Please note that the current implementation is a <em>prototype</em> with
245 certain limitations. Most notably, it is not secure in a multiuser context,
246 <em>i.e.</em>, real-time system calls do not require superuser
247 privileges.
248 </p>
249
250 <p class="nobottommargin">
251 Older releases: <a href="litmus2007.html">LITMUS<sup>RT</sup> 2007 series</a>.
252 </p>
253
254 </p>
255
256 </div>
257
258
259 <h2 id="install">Installation</h2>
260 <div class="box">
261 <p class="notopmargin">
262 The current release of LITMUS<sup>RT</sup> consists of an
263 extension of the Linux kernel that adds support for the sporadic task
264 model, a scheduler plugin infrastructure, and some scheduler plugins, as
265 well as a user-space library that provides the LITMUS<sup>RT</sup>
266 real-time API. Note, that the current implementation only works on the
267 Intel x86-32 and sparc64 architectures.
268 </p>
269 <h3>Patching the Kernel</h3>
270 <p class="notopmargin">
271 The extension to the Linux kernel is released as a patch against Linux
272 2.6.24. To install the LITMUS<sup>RT</sup> kernel, first <a
273 href="http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.24.tar.bz2">download the Linux
274 kernel 2.6.24</a> and untar it in a directory of your choice (hereafter
275 referred to as <span class="src">$DIR</span>). Second, apply the
276 LITMUS<sup>RT</sup> patch (see <a href="#download">Section Download</a>)
277 and configure, compile, and install the kernel as usual. The patch is <span
278 class="src">-p1</span> applicable.
279 To summarize, the LITMUS<sup>RT</sup> kernel can be obtained, patched, and
280 compiled with the following commands:
281 </p>
282<pre class="shell">
283cd $DIR
284# get Linux 2.6.24
285wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.24.tar.bz2
286tar xjf linux-2.6.24.tar.bz2
287wget http://www.cs.unc.edu/~anderson/litmus-rt/download/2008.1/litmus-rt-2008.1.patch
288mv linux-2.6.24 litmus2008
289# apply the LITMUS RT patch
290cd litmus2008
291patch -p1 &lt; ../litmus-rt-2008.1.patch
292# create a working kernel configuration with HZ=1000
293make menuconfig
294# compile the kernel
295make bzImage
296make modules
297# proceed to install kernel, build initrd, etc.
298...
299</pre>
300 <p>
301 When configuring the kernel, note that there is a menu (at the very end of the list)
302 with LITMUS<sup>RT</sup>-specific configuration options.
303 </p>
304
305 <h3>Libraries</h3>
306 <p class="notopmargin">
307 The user-space library for real-time tasks, <span class="src">liblitmus</span>,
308 depends on the LITMUS<sup>RT</sup> kernel kernel and provides its own makefile.
309 In order to compile <span class="src">liblitmus</span>, you need to adjust the
310 variable <span class="src">KERNEL_DIR</span> in the Makfile to point to your
311 copy of the kernel.
312 </p>
313<pre class="shell">
314cd $DIR
315wget http://www.cs.unc.edu/~anderson/litmus-rt/download/2008.1/liblitmus-2008.1.tgz
316tar xzf liblitmus-2008.1.tgz
317cd liblitmus
318# change KERNEL_DIR in Makefile to point to the kernel source
319make
320</pre>
321 <p class="nobottommargin">
322 Please refer to the <a href="#doc">documentation</a> on how to use the LITMUS<sup>RT</sup>
323 real-time API as provided by <span class="src">liblitmus</span>.
324 </p>
325
326 </div>
327
328
329 <h2 id="doc">Documentation</h2>
330 <div class="box">
331
332 <p class="notopmargin">
333 Unfortunately, most of the documentation has yet to be written. To get an overview of
334 the architecture of the kernel extension, we recommend reading the paper
335 <a href="http://www.cs.unc.edu/~anderson/papers/rtlws07.pdf">&ldquo;LITMUS<sup>RT</sup>:
336 A Status Report&rdquo;</a>.
337 </p>
338 <h3>Real-Time Scheduling Policies</h3>
339 <p class="qa">
340 The kernel contains the following real-time scheduling policy implementations:
341 </p>
342 <ul>
343 <li>
344 PFAIR, an implementation of the PD<sup>2</sup> algorithm,
345 </li>
346 <li>
347 PSN-EDF, a partitioned EDF (P-EDF) implementation with support for the real-time synchronization protocol
348 FMLP,
349 </li>
350 <li>
351 GSN-EDF, a global EDF (G-EDF) implementation with support for the real-time synchronization protocol
352 FMLP,
353 </li>
354 <li>
355 C-EDF (Clustered EDF), a hybrid of G-EDF and P-EDF, and
356 </li>
357 <li>
358 Linux, a placeholder policy that disables all real-time functionality added by the LITMUS<sup>RT</sup> patch.
359 </li>
360 </ul>
361 <p>
362 Only one policy can be active at any time. Initially (<em>i.e.,</em> during boot), the "Linux" policy is active.
363 You can use the tool <span class="src">showsched</span> (part of <span class="src">liblitmus</span>) to display
364 the name of the currently active policy.
365 </p>
366 <h3>Changing the Active Policy</h3>
367 <p class="qa">
368 You can use the tool <span class="src">setsched</span> (part of <span class="src">liblitmus</span>)
369 to select a new plugin at run time.
370 <div align="center">
371 <img class="screenshot" src="gfx/setsched.png" alt="Screen shot of setsched"/>
372 </div>
373 Only root can change the active policy, and only when there are no real-time tasks present.
374 </p>
375 <h3>Writing Real-Time Tasks</h3>
376 <p class="qa">
377 The user space library that provides the LITMUS<sup>RT</sup> API,
378 <span class="src">liblitmus</span>, contains two example real-time tasks
379 (<span class="src">base_task.c</span> and
380 <span class="src">base_mt_task.c</span>)
381 that both illustrate how to use the API and provide a skeleton for real-time
382 task development. To get started with development, please take a look these example
383 programs.
384 </p>
385 <p class="nobottommargin">
386 Please contact <span class="src">bbb[AT]cs.unc.edu</span> if you have any
387 questions.
388 </p>
389
390
391 </div>
392
393 <h2 id="credits">Credits</h2>
394 <div class="box">
395 <div style="float: right;">
396 <a href="http://validator.w3.org/check?uri=referer"><img
397 src="http://www.w3.org/Icons/valid-xhtml10"
398 alt="Valid XHTML 1.0 Strict" height="31" width="88"/></a>
399 </div>
400
401 <p class="nomargin">
402 Linux is a registered trademark of Linus Torvalds. <br /> The
403 LITMUS<sup>RT</sup> logo was designed by Jasper McChesney of Primeval Designs. <br />
404 Web design by Bj&ouml;rn Brandenburg.
405 </p>
406
407
408 </div>
409
410<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
411</script>
412<script type="text/javascript">
413_uacct = "UA-3184628-1";
414urchinTracker();
415</script>
416</body>
417</html>