diff options
author | Bjoern Brandenburg <bbb@swan5.cs.unc.edu> | 2008-07-01 08:46:20 -0400 |
---|---|---|
committer | Bjoern Brandenburg <bbb@swan5.cs.unc.edu> | 2008-07-01 08:46:20 -0400 |
commit | e794a7a2ada5773cc95924e310c756f35aaf5e63 (patch) | |
tree | 265c8cec367f5ed6f395fc97ef2c090615293037 | |
parent | d54fa76ba938a71cf6d53dd9b83453651f3011f5 (diff) |
don't loose it
-rw-r--r-- | index2.html | 406 |
1 files changed, 406 insertions, 0 deletions
diff --git a/index2.html b/index2.html new file mode 100644 index 0000000..f47ca11 --- /dev/null +++ b/index2.html | |||
@@ -0,0 +1,406 @@ | |||
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 were based on Linux 2.6.20 | ||
57 | and supported 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 | was based on Linux 2.6.9 and never publicly released. | ||
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 | (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>.) | ||
95 | </p> | ||
96 | </div> | ||
97 | |||
98 | |||
99 | <h2 id="publications">Publications</h2> | ||
100 | <div class="box"> | ||
101 | |||
102 | <ol class="nomargin"> | ||
103 | |||
104 | |||
105 | <li> | ||
106 | B. Brandenburg, J. Calandrino, and J. Anderson, | ||
107 | “On the Scalability of Real-Time Scheduling Algorithms on Multicore Platforms: A Case Study”, in submission, May 2008. | ||
108 | <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>. | ||
109 | </li> | ||
110 | |||
111 | <li> | ||
112 | B. Brandenburg and J. Anderson, | ||
113 | “A Comparison of the M-PCP, D-PCP, and FMLP on LITMUS<sup>RT</sup>”, in submission, April 2008. | ||
114 | <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>. | ||
115 | </li> | ||
116 | |||
117 | <li> | ||
118 | B. Brandenburg and J. Anderson, | ||
119 | “An Implementation of the PCP, SRP, D-PCP, M-PCP, | ||
120 | and FMLP Real-Time Synchronization Protocols in LITMUS<sup>RT</sup>”, | ||
121 | <cite>Proceedings of the 14th IEEE International Conference on Embedded and Real-Time Computing Systems and Applications</cite>, to appear, 2008. | ||
122 | <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>. | ||
123 | </li> | ||
124 | |||
125 | <li> | ||
126 | A. Block, B. Brandenburg<, J. Anderson, | ||
127 | and S. Quint, “An Adaptive Framework for Multiprocessor Real-Time Systems”, | ||
128 | <cite>Proceedings of the 20th Euromicro Conference on Real-Time Systems</cite>, to appear, 2008. | ||
129 | <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>. | ||
130 | |||
131 | </li> | ||
132 | |||
133 | <li> | ||
134 | B. Brandenburg, J. Calandrino, A. Block, | ||
135 | H. Leontyev, and J. Anderson, “Real-Time Synchronization | ||
136 | on Multiprocessors: To Block or Not to Block, to Suspend or | ||
137 | Spin?”, <cite> Proceedings of the 14th IEEE Real-Time and Embedded | ||
138 | Technology and Applications Symposium</cite>, pp. 342-353, April 2008. | ||
139 | <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>. | ||
140 | </li> | ||
141 | |||
142 | |||
143 | <p> | ||
144 | Extended version, including all graphs: | ||
145 | <a href="http://www.cs.unc.edu/~anderson/papers/rtas08along.ps">Postscript</a>, | ||
146 | <a href="http://www.cs.unc.edu/~anderson/papers/rtas08along.pdf">PDF</a>. | ||
147 | </p> | ||
148 | </li> | ||
149 | |||
150 | <li> | ||
151 | <p> | ||
152 | B. Brandenburg, A. Block, J. Calandrino, U. Devi, H. Leontyev, and J. Anderson, | ||
153 | "LITMUS<sup>RT</sup>: A Status Report", <cite> Proceedings of the 9th | ||
154 | Real-Time Linux Workshop</cite>, pp. 107-123, November 2007. | ||
155 | <a href="http://www.cs.unc.edu/~anderson/papers/rtlws07.ps">Postscript</a>. | ||
156 | <a href="http://www.cs.unc.edu/~anderson/papers/rtlws07.pdf">PDF</a>. | ||
157 | </p> | ||
158 | </li> | ||
159 | |||
160 | <li> | ||
161 | <p> | ||
162 | B. Brandenburg and J. Anderson, "Integrating Hard/Soft Real-Time Tasks | ||
163 | and Best-Effort Jobs on Multiprocessors", <cite> Proceedings of the 19th Euromicro | ||
164 | Conference on Real-Time Systems</cite>, July 2007, to appear. | ||
165 | <a href="http://www.cs.unc.edu/~anderson/papers/ecrts07b.ps">Postscript</a>, | ||
166 | <a href="http://www.cs.unc.edu/~anderson/papers/ecrts07b.pdf">PDF</a>. | ||
167 | </p> | ||
168 | </li> | ||
169 | |||
170 | |||
171 | <li> | ||
172 | <p> | ||
173 | J. Calandrino, H. Leontyev, A. Block, U. Devi, and J. Anderson, | ||
174 | "LITMUS<sup>RT</sup>: A Testbed for Empirically Comparing Real-Time | ||
175 | Multiprocessor Schedulers ", <cite>Proceedings of the 27th IEEE Real-Time Systems | ||
176 | Symposium</cite>, pp. 111-123, December 2006. | ||
177 | <a href="http://www.cs.unc.edu/~anderson/papers/rtss06b.ps">Postscript</a>, | ||
178 | <a href="http://www.cs.unc.edu/~anderson/papers/rtss06b.pdf">PDF</a>. | ||
179 | </p> | ||
180 | </li> | ||
181 | |||
182 | </ol> | ||
183 | </div> | ||
184 | |||
185 | <h2 id="download">Download</h2> | ||
186 | <div class="box"> | ||
187 | <p class="notopmargin"> | ||
188 | The source code of LITMUS<sup>RT</sup> is made available as open source | ||
189 | under the terms of the <a href="http://www.gnu.org/licenses/gpl.txt">GNU | ||
190 | General Public License (GPL)</a>. | ||
191 | </p> | ||
192 | <p> | ||
193 | The current release of LITMUS<sup>RT</sup> is 2008.1 and was released on ??/??/2008. | ||
194 | It consists of our Linux kernel modifications in the form of | ||
195 | a patch against Linux 2.6.24 and | ||
196 | <span class="src">liblitmus</span>, the user-space API for real-time tasks. | ||
197 | </p> | ||
198 | |||
199 | <ul> | ||
200 | <li> | ||
201 | 2008.1 (July 2008)<br/> | ||
202 | Based on Linux 2.6.24. (see <a href="#install">Section Install</a> | ||
203 | below) <br/> | ||
204 | Files: | ||
205 | <ul> | ||
206 | <li> | ||
207 | <a href="download/2008.1/litmus-rt-2008.1.patch">litmus-rt-2008.1.patch</a> | ||
208 | </li> | ||
209 | <li> | ||
210 | <a href="download/2008.1/liblitmus-2008.1.tgz">liblitmus-2008.1.tgz</a> | ||
211 | </li> | ||
212 | <li><a href="download/2008.1/SHA256SUMS">SHA256 check sums</a> | ||
213 | </li> | ||
214 | </ul> | ||
215 | </li> | ||
216 | <li> | ||
217 | Major changes (compared to LITMUS<sup>RT</sup> 2007.3): | ||
218 | <ul> | ||
219 | <li>LITMUS<sup>RT</sup> ported to Linux 2.6.24. | ||
220 | </li> | ||
221 | <li>LITMUS<sup>RT</sup> ported to <span style="src">sparc64</span> | ||
222 | </li> | ||
223 | <li>LITMUS<sup>RT</sup> is now a proper scheduling class (<span class="src">SCHED_LITMUS</span>) | ||
224 | </li> | ||
225 | <li>Support for multi-threaded real-time tasks. | ||
226 | </li> | ||
227 | <li>Scheduler plugins can be selected during runtime; no reboot required. | ||
228 | </li> | ||
229 | <li> | ||
230 | Many bug fixes. | ||
231 | </li> | ||
232 | </ul> | ||
233 | </li> | ||
234 | </ul> | ||
235 | |||
236 | <p> | ||
237 | Please note that the current implementation is a <em>prototype</em> with | ||
238 | certain limitations. Most notably, it is not secure in a multiuser context, | ||
239 | <em>i.e.</em>, real-time system calls do not require superuser | ||
240 | privileges. | ||
241 | </p> | ||
242 | |||
243 | <p class="nobottommargin"> | ||
244 | Older releases: <a href="litmus2007.html">LITMUS<sup>RT</sup> 2007 series</a>. | ||
245 | </p> | ||
246 | |||
247 | </p> | ||
248 | |||
249 | </div> | ||
250 | |||
251 | |||
252 | <h2 id="install">Installation</h2> | ||
253 | <div class="box"> | ||
254 | <p class="notopmargin"> | ||
255 | The current release of LITMUS<sup>RT</sup>, version 2007.2, consists of an | ||
256 | extension of the Linux kernel that adds support for the sporadic task | ||
257 | model, a scheduler plugin infrastructure, and some scheduler plugins, as | ||
258 | well as two user-space libraries that provide the LITMUS<sup>RT</sup> | ||
259 | real-time API. Note, that the current implementation only works on the | ||
260 | Intel x86 architecture. | ||
261 | </p> | ||
262 | <h3>Patching the Kernel</h3> | ||
263 | <p class="notopmargin"> | ||
264 | The extension to the Linux kernel is released as a patch against Linux | ||
265 | 2.6.20. To install the LITMUS<sup>RT</sup> kernel, first <a | ||
266 | href="http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.tar.bz2">download the Linux | ||
267 | kernel 2.6.20</a> and untar it in a directory of your choice (hereafter | ||
268 | referred to as <span class="src">$DIR</span>). Second, apply the | ||
269 | LITMUS<sup>RT</sup> patch (see <a href="#download">Section Download</a>) | ||
270 | and configure, compile, and install the kernel as usual. The patch is <span | ||
271 | class="src">-p1</span> applicable. | ||
272 | To summarize, the LITMUS<sup>RT</sup> kernel can be obtained, patched, and | ||
273 | compiled with the following commands: | ||
274 | </p> | ||
275 | <pre class="shell"> | ||
276 | cd $DIR | ||
277 | # get Linux 2.6.20 | ||
278 | wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.tar.bz2 | ||
279 | tar xjf linux-2.6.20.tar.bz2 | ||
280 | wget http://www.cs.unc.edu/~anderson/litmus-rt/download/2007.3/litmus-rt-2007.3.patch | ||
281 | mv linux-2.6.20 litmus-rt | ||
282 | # apply the LITMUS RT patch | ||
283 | cd litmus-rt | ||
284 | patch -p1 < ../litmus-rt-2007.3.patch | ||
285 | # create a working kernel configuration with HZ=1000 | ||
286 | make gconfig | ||
287 | # compile the kernel | ||
288 | make bzImage | ||
289 | make modules | ||
290 | # proceed to install kernel, build initrd, etc. | ||
291 | ... | ||
292 | </pre> | ||
293 | <p> | ||
294 | After the kernel has been compiled and installed, the boot-loader must be | ||
295 | configured to load the desired real-time scheduler plugin at boot time (run | ||
296 | time selection of the real-time scheduler is currently not supported). The | ||
297 | real-time scheduler plugin is selected with the <span | ||
298 | class="src">rtsched</span> kernel parameter. | ||
299 | </p> | ||
300 | <pre class="shell"> | ||
301 | rtsched= {linux, pfair, part_edf, global_edf, | ||
302 | global_edf_np, edf_hsb, gsn_edf, psn_edf, adaptive} | ||
303 | </pre> | ||
304 | <p> | ||
305 | For example, on our test machine, we use the | ||
306 | following GRUB entry: | ||
307 | </p> | ||
308 | |||
309 | <pre class="shell"> | ||
310 | title Kernel 2.6.20-LITMUSRT | ||
311 | root (hd0,5) | ||
312 | kernel /boot/vmlinuz-2.6.20-LITMUSRT root=/dev/sda6 ro vga=791 rtsched=gsn_edf | ||
313 | initrd /boot/kernel-2.6.20-LITMUSRT.img | ||
314 | </pre> | ||
315 | |||
316 | <h3>Libraries</h3> | ||
317 | <p class="notopmargin"> | ||
318 | The two user-space libraries, <span class="src">liblitmus</span> and <span | ||
319 | class="src">libso</span>, provide their own makefiles and thus are easy to | ||
320 | compile. The kernel interface for real-time tasks is provided by <span | ||
321 | class="src">liblitmus</span>, which can be compiled as follows: | ||
322 | </p> | ||
323 | <pre class="shell"> | ||
324 | cd $DIR | ||
325 | wget http://www.cs.unc.edu/~anderson/litmus-rt/download/2007.3/liblitmus-2007.3.tgz | ||
326 | tar xzf liblitmus-2007.3.tgz | ||
327 | cd liblitmus | ||
328 | make | ||
329 | </pre> | ||
330 | <p> | ||
331 | The second library, <span class="src">libso</span>, provides shared object | ||
332 | and synchronization support for real-time tasks. It depends on <span | ||
333 | class="src">liblitmus</span> and must be installed in "parallel" | ||
334 | (they must have the same parent directory). The following commands will | ||
335 | obtain and compile <span class="src">libso</span>, including the test programs: | ||
336 | </p> | ||
337 | <pre class="shell"> | ||
338 | cd $DIR | ||
339 | wget http://www.cs.unc.edu/~anderson/litmus-rt/download/2007.3/libso-2007.3.tgz | ||
340 | tar xzf libso-2007.3.tgz | ||
341 | cd libso | ||
342 | make | ||
343 | make tests | ||
344 | </pre> | ||
345 | <p class="nobottommargin"> | ||
346 | Please refer to the <a href="#doc">documentation</a> on how to use the LITMUS<sup>RT</sup> | ||
347 | real-time API as provided by <span class="src">libso</span> and | ||
348 | <span class="src">liblitmus</span>. | ||
349 | </p> | ||
350 | |||
351 | </div> | ||
352 | |||
353 | |||
354 | <h2 id="doc">Documentation</h2> | ||
355 | <div class="box"> | ||
356 | |||
357 | <p class="notopmargin"> | ||
358 | Most of the documentation has yet to be written. To get an overview of | ||
359 | the architecture of the kernel extension, we recommend reading the paper | ||
360 | <a href="http://www.cs.unc.edu/~anderson/papers/rtlws07.pdf">“LITMUS<sup>RT</sup>: | ||
361 | A Status Report”</a>. | ||
362 | </p> | ||
363 | <p> | ||
364 | The user space library that provides the LITMUS<sup>RT</sup> API, | ||
365 | <span class="src">liblitmus</span>, contains two example real-time tasks | ||
366 | (<span class="src">base_task.c</span> and | ||
367 | <span class="src">base_mt_task.c</span>) | ||
368 | that both illustrate how to use the API and provide a skeleton for real-time | ||
369 | task development. To get started with development, take a look these example | ||
370 | programs. | ||
371 | </p> | ||
372 | <p class="nobottommargin"> | ||
373 | Please contact <span class="src">bbb[AT]cs.unc.edu</span> if you have any | ||
374 | questions. | ||
375 | </p> | ||
376 | |||
377 | |||
378 | </div> | ||
379 | |||
380 | <h2 id="credits">Credits</h2> | ||
381 | <div class="box"> | ||
382 | <div style="float: right;"> | ||
383 | <a href="http://validator.w3.org/check?uri=referer"><img | ||
384 | src="http://www.w3.org/Icons/valid-xhtml10" | ||
385 | alt="Valid XHTML 1.0 Strict" height="31" width="88"/></a> | ||
386 | </div> | ||
387 | |||
388 | <p class="nomargin"> | ||
389 | Linux is a registered trademark of Linus Torvalds. <br /> The | ||
390 | LITMUS<sup>RT</sup> logo was designed by <a | ||
391 | href="http://designs.primevalpress.com">Jasper McChesney</a> of <a | ||
392 | href="http://designs.primevalpress.com">Primeval Designs</a>. <br /> | ||
393 | Web design by Björn Brandenburg. | ||
394 | </p> | ||
395 | |||
396 | |||
397 | </div> | ||
398 | |||
399 | <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> | ||
400 | </script> | ||
401 | <script type="text/javascript"> | ||
402 | _uacct = "UA-3184628-1"; | ||
403 | urchinTracker(); | ||
404 | </script> | ||
405 | </body> | ||
406 | </html> | ||