aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjoern Brandenburg <bbb@mpi-sws.org>2012-04-11 12:05:29 -0400
committerBjoern Brandenburg <bbb@mpi-sws.org>2012-04-11 12:05:29 -0400
commit3775a84edabd42828aeb9c915e579bd5c4904f50 (patch)
tree1a37697c981b58f56366d717592ecc728d4e8e55
parent7f5bca0f5d1c1bfc56c83e248360720ef45c842a (diff)
Add a short READMEv0
-rw-r--r--README.md77
1 files changed, 77 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..f17dadb
--- /dev/null
+++ b/README.md
@@ -0,0 +1,77 @@
1# SchedCAT
2Schedcat: the **sched**ulability test **c**collection **a**nd **t**oolkit.
3
4## About
5
6Schedcat is a Python/C++ library useful for schedulability experiments. It contains several **schedulability tests** for various real-time schedulers (including partitioned and global EDF, Pfair, etc.), **partitioning heuristics**, **blocking term analysis** for real-time locking protocols (including various spinlock types, the OMLP family, the FMLP and FMLP+, the MPCP, and the DPCP), and **overhead accounting** methods.
7
8Additionally, the library contains task set generation routines, task set serialization support, and various helper utilities that make developing schedulability experiments faster and less painful.
9
10This code is a refactored and cleaned-up version of the schedulability experiments provided at http://www.cs.unc.edu/~bbb/diss.
11
12## Quick Start
13
14 # get the library
15 $ git clone ...
16 [...]
17 $ cd schedcat
18
19 # compile (works out of the box on most Linux distributions)
20 $ make
21 [...]
22 $ python
23
24 # load task model
25 >>> import schedcat.model.tasks as tasks
26
27 # load schedulability tests for global EDF
28 >>> import schedcat.sched.edf as edf
29
30 # create task set with three implicit-deadline tasks and total utilization 2
31 >>> ts = tasks.TaskSystem([tasks.SporadicTask(2,3),
32 tasks.SporadicTask(2,3),
33 tasks.SporadicTask(2,3)])
34
35
36 # Is the task set hard real-time schedulable on two processors?
37 >>> edf.is_schedulable(2, ts)
38 False
39
40 # Well, how about three processors?
41 >>> edf.is_schedulable(3, ts)
42 True
43
44 # Do we have bounded response times on two processors?
45 >>> edf.bound_response_times(2, ts)
46 True
47
48 # So what's the maximum tardiness (using Devi and Anderson's analysis)?
49 >>> ts[0].tardiness()
50 2
51 >>> ts[1].tardiness()
52 2
53 >>> ts[2].tardiness()
54 2
55
56To check if everything works as expected, you can execute the unit test suite with `make test` or, equivalently, with `python -m tests`.
57
58
59## Dependencies
60
61Python 2.7 is required. Schedcat further requires the [GNU arbitrary precision library GMP](http://gmplib.org/) (most recent versions, including 5.0.4, work just fine) and the GMP C++ wrapper.
62
63Schedcat is known to work on both GNU/Linux and Mac OS X (both Snow Leopard and Lion). On Linux, it should compile "out of the box" if the GMP library is installed in `/usr/lib`, where most package managers place it by default.
64
65On Mac OS X, depending on where the GMP library is installed, you may have to provide a `.config` file in `schedcat/native` to provide the path to the GMP library in `GMP_PATH` (have a look at the `Makefile` in `schedcat/native` for details).
66
67The [Homebrew package manager](http://mxcl.github.com/homebrew/) provides the easiest way to install GNU GMP under Mac OS X.
68
69## Limitations
70
71At this point, the library is largely undocumented. However, the library consists of (mostly) clean Python code; it is thus not too difficult to understand the code.
72
73The unit test suite could use a lot more tests.
74
75## Contributions
76
77Improvements, bugfixes, additional unit tests are very welcome! Please send pull requests or patches to [Björn Brandenburg](http://www.mpi-sws.org/~bbb).