1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
|
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="verify-v1" content="pZNmf5XyUUfAPdlSPbFSavMUsLgVsmBYOXzOhbIy2gw=" />
<link rel="stylesheet" type="text/css" href="inc/format.css"/>
<title>LITMUS RT: Linux Testbed for Multiprocessor Scheduling in Real-Time Systems</title>
</head>
<body>
<!--<h1>LITMUS<sup>RT</sup>: Linux Testbed for Multiprocessor Scheduling in Real-Time Systems</h1>-->
<div class="logobox">
<img src="inc/litmusrt.png" alt="LITMUS^RT: Linux Testbed for Multiprocessor Scheduling in Real-Time Systems" />
<p class="authors">
<a href="http://www.cs.unc.edu/~anderson/">Dr. James H. Anderson &
Students</a>,
<a href="http://www.unc.edu">The University of North Carolina at Chapel Hill</a>
</p>
</div>
<div class="nav">
<p>
<a href="#about">about</a> -
<a href="#support">support</a> -
<a href="#collaborators">collaborators</a> -
<a href="#publications">publications</a> -
<a href="#download">download</a> -
<a href="#install">installation</a> -
<a href="#links">documentation</a>
</p>
</div>
<h2 id="about">About</h2>
<div class="box">
<p class="nomargin">
The LITMUS<sup>RT</sup> project is a soft real-time extension of the Linux
kernel with focus on multiprocessor real-time scheduling and
synchronization. The Linux kernel is modified to support the sporadic task
model and modular scheduler plugins. Both partitioned and global scheduling
is supported. In the current version (2007.2), plugins for the following
scheduling policies are included:
</p>
<ul>
<li> Partitioned EDF (P-EDF)</li>
<li> Partitioned EDF with synchronization support (PSN-EDF)</li>
<li> Global EDF (G-EDF)</li>
<li> Global EDF with synchronization support (GSN-EDF)</li>
<li> Global non-preemptive EDF (G-NP-EDF)</li>
<li> Global Feedback-Controlled EDF (FC-EDF)</li>
<li> EDF for heterogeneous task systems (EDF-HSB)</li>
<li> PFAIR (both staggered and aligned quanta are supported)</li>
</ul>
<p>
The latest public release of LITMUS<sup>RT</sup> occurred on 10/29/2007.
</p>
</div>
<h2 id="support">Support</h2>
<div class="box">
<p class="nomargin">
The LITMUS<sup>RT</sup> development effort is being supported by grants from
Intel Corp., The National Science Foundation (grant CCR 0615197), and The U.S.
Army Research Office (grant W911NF-06-1-0425).
</p>
</div>
<h2 id="collaborators">Collaborators</h2>
<div class="box">
<p class="nomargin"> The LITMUS<sup>RT</sup> project is led by <a
href="http://www.cs.unc.edu/~anderson/">Dr. James H. Anderson</a>. The
implementation effort is carried out by students of the
<a href="http://www.cs.unc.edu/rt">Real-Time Systems
Group</a> at the <a href="http://www.unc.edu">University of North Carolina
at Chapel Hill</a>:
</p>
<ul>
<li> <a href="http://www.cs.unc.edu/~block/">Aaron D. Block</a>
</li>
<li> <a href="http://www.cs.unc.edu/~bbb/">Björn B. Brandenburg</a>
</li>
<li> <a href="http://www.cs.unc.edu/~jmc/">John M. Calandrino</a>
</li>
<li> <a href="http://www.cs.unc.edu/~uma/">UmaMaheswari Devi</a> <em>(graduated
Dec. 2006)</em>
</li>
<li> <a href="http://www.cs.unc.edu/~leontyev/">Hennadiy Leontyev</a>
</li>
</ul>
</div>
<h2 id="publications">Publications</h2>
<div class="box">
<ul class="nomargin">
<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>, to appear,
April 2008.
<a href="http://www.cs.unc.edu/~anderson/papers/rtas08a.ps">Postscript</a>,
<a href="http://www.cs.unc.edu/~anderson/papers/rtas08a.pdf">PDF</a>.
</p>
<p>
Extended version, including all graphs:
<a href="http://www.cs.unc.edu/~anderson/papers/rtas08along.ps">Postscript</a>,
<a href="http://www.cs.unc.edu/~anderson/papers/rtas08along.pdf">PDF</a>.
</p>
</li>
<li>
<p>
B. Brandenburg, A. Block, J. Calandrino, U. Devi, H. Leontyev, and J. Anderson,
" LITMUS<sup>RT</sup>: A Status Report ", <cite> Proceedings of the 9th
Real-Time Linux Workshop</cite>, pp. 107-123, November 2007.
<a href="http://www.cs.unc.edu/~anderson/papers/rtlws07.ps">Postscript</a>.
<a href="http://www.cs.unc.edu/~anderson/papers/rtlws07.pdf">PDF</a>.
</p>
</li>
<li>
<p>
A. Block, B. Brandenburg, J. Anderson, and S. Quint, "Feedback-Controlled Adaptive
Multiprocessor Real-Time Systems", in submission, October 2007.
<a href="http://www.cs.unc.edu/~anderson/papers/rtas08b.ps">Postscript</a>.
<a href="http://www.cs.unc.edu/~anderson/papers/rtas08b.pdf">PDF</a>.
</p>
</li>
<li>
<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.
<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>
</li>
<li>
<p>
J. Calandrino, H. Leontyev, A. Block, U. Devi, and J. Anderson,
"LITMUS<sup>RT</sup>: A Testbed for Empirically Comparing Real-Time
Multiprocessor Schedulers ", <cite>Proceedings of the 27th IEEE Real-Time Systems
Symposium</cite>, pp. 111-123, December 2006.
<a href="http://www.cs.unc.edu/~anderson/papers/rtss06b.ps">Postscript</a>,
<a href="http://www.cs.unc.edu/~anderson/papers/rtss06b.pdf">PDF</a>.
</p>
</li>
</ul>
</div>
<h2 id="download">Download</h2>
<div class="box">
<p class="notopmargin">
The source code of LITMUS<sup>RT</sup> is made available as open source
under the terms of the <a href="http://www.gnu.org/licenses/gpl.txt">GNU
General Public License (GPL)</a>.
</p>
<p>
The latest version of LITMUS<sup>RT</sup> is 2007.2 and was released on 10/29/2007.
It consists of
our Linux kernel modifications in the form of
a patch against Linux 2.6.20,
<span class="src">liblitmus</span>, the user-space API for real-time tasks,
and <span class="src">libso</span>, a library for shared objects that
provides synchronization primitives suitable for real-time tasks.
</p>
<ul >
<li><a href="download/litmus-rt-2007.2.patch">litmus-rt-2007.2.patch</a>
(328 KB)<br/>
Applies
against Linux 2.6.20 (see <a href="#install">Section Install</a> below).</li>
<li><a href="download/liblitmus-2007.2.tgz">liblitmus-2007.2.tgz</a>
(11 KB)
</li>
<li><a href="download/libso-2007.2.tgz">libso-2007.2.tgz</a>
(16 KB)
</li>
</ul>
<p class="nobottommargin">
Please note that the current implementation is a <em>prototype</em> with
certain limitations. Most notably, it is not secure in a multiuser context,
<em>i.e.</em>, real-time system calls do not require superuser
privileges. Further, some resources (<em>e.g.</em> semaphores) that
should be dynamically allocated are allocated statically in the current version.
</p>
<p class="nobottommargin">
Old releases:
</p>
<ul>
<li> 2007.1 (May 2007)<br/>
Based on Linux 2.6.20. <br/>
<a href="download/litmus-rt-2007.1.patch">litmus-rt-2007.1.patch</a>
(266 KB) <br/>
<a href="download/liblitmus-2007.1.tgz">liblitmus-2007.1.tgz</a>
(6.8 KB) <br/>
<a href="download/libso-2007.1.tgz">libso-2007.1.tgz</a>
(16 KB) <br/>
</li>
</ul>
</div>
<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
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>
real-time API. Note, that the current implementation only works on the
Intel x86 architecture.
</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
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
class="src">-p1</span> applicable.
To summarize, the LITMUS<sup>RT</sup> kernel can be obtained, patched, and
compiled with the following commands:
</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/litmus-rt-2007.2.patch
mv linux-2.6.20 litmus-rt
# apply the LITMUS RT patch
cd litmus-rt
patch -p1 < ../litmus-rt-2007.2.patch
# create a working kernel configuration with HZ=1000
make gconfig
# 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>
<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:
</p>
<pre class="shell">
cd $DIR
wget http://www.cs.unc.edu/~anderson/litmus-rt/download/liblitmus-2007.2.tgz
tar xzf liblitmus-2007.2.tgz
cd liblitmus
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/libso-2007.2.tgz
tar xzf libso-2007.2.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>.
</p>
</div>
<h2 id="doc">Documentation</h2>
<div class="box">
<p class="nomargin">
Most of the documentation has yet to be written. To get an overview of
the architecture of the kernel extension, we recommend to read the paper
<a href="http://www.cs.unc.edu/~anderson/papers/rtlws07.pdf">“LITMUS<sup>RT</sup>:
A Status Report”</a>.
<br/>
<br/>
Please contact <span class="src">bbb[AT]cs.unc.edu</span> if you have any
questions.
</p>
<!-- <p class="nomargin">
<em>To be written...</em>
<ul class="nomargin">
<li>How to use LITMUS<sup>RT</sup></li>
<li>A real-time "Hello World!"</li>
</ul>
</p>
-->
</div>
<div class="flushright">
<p>
<a href="http://validator.w3.org/check?uri=referer"><img
src="http://www.w3.org/Icons/valid-xhtml10"
alt="Valid XHTML 1.0 Strict" height="31" width="88"/></a>
</p>
</div>
</body>
</html>
|