diff options
Diffstat (limited to 'index.html')
-rw-r--r-- | index.html | 417 |
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 & | ||
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 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 — 2007.3), which are based on Linux 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 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ö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 | “A Comparison of the M-PCP, D-PCP, and FMLP on LITMUS<sup>RT</sup>”, 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 | “On the Scalability of Real-Time Scheduling Algorithms on Multicore Platforms: A Case Study”, 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 | “An Implementation of the PCP, SRP, D-PCP, M-PCP, | ||
124 | and FMLP Real-Time Synchronization Protocols in LITMUS<sup>RT</sup>”, | ||
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, “An Adaptive Framework for Multiprocessor Real-Time Systems”, | ||
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, “Real-Time Synchronization | ||
143 | on Multiprocessors: To Block or Not to Block, to Suspend or | ||
144 | Spin?”, <cite> Proceedings of the 14th IEEE Real-Time and Embedded | ||
145 | Technology 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 | "LITMUS<sup>RT</sup>: A Status Report", <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, "Integrating Hard/Soft Real-Time Tasks | ||
167 | and Best-Effort Jobs on Multiprocessors", <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 | "LITMUS<sup>RT</sup>: A Testbed for Empirically Comparing Real-Time | ||
179 | Multiprocessor Schedulers ", <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"> | ||
283 | cd $DIR | ||
284 | # get Linux 2.6.24 | ||
285 | wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.24.tar.bz2 | ||
286 | tar xjf linux-2.6.24.tar.bz2 | ||
287 | wget http://www.cs.unc.edu/~anderson/litmus-rt/download/2008.1/litmus-rt-2008.1.patch | ||
288 | mv linux-2.6.24 litmus2008 | ||
289 | # apply the LITMUS RT patch | ||
290 | cd litmus2008 | ||
291 | patch -p1 < ../litmus-rt-2008.1.patch | ||
292 | # create a working kernel configuration with HZ=1000 | ||
293 | make menuconfig | ||
294 | # compile the kernel | ||
295 | make bzImage | ||
296 | make 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"> | ||
314 | cd $DIR | ||
315 | wget http://www.cs.unc.edu/~anderson/litmus-rt/download/2008.1/liblitmus-2008.1.tgz | ||
316 | tar xzf liblitmus-2008.1.tgz | ||
317 | cd liblitmus | ||
318 | # change KERNEL_DIR in Makefile to point to the kernel source | ||
319 | make | ||
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">“LITMUS<sup>RT</sup>: | ||
336 | A Status Report”</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ö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"; | ||
414 | urchinTracker(); | ||
415 | </script> | ||
416 | </body> | ||
417 | </html> | ||