diff options
author | Bjoern Brandenburg <bbb@mpi-sws.org> | 2012-04-11 12:05:29 -0400 |
---|---|---|
committer | Bjoern Brandenburg <bbb@mpi-sws.org> | 2012-04-11 12:05:29 -0400 |
commit | 3775a84edabd42828aeb9c915e579bd5c4904f50 (patch) | |
tree | 1a37697c981b58f56366d717592ecc728d4e8e55 | |
parent | 7f5bca0f5d1c1bfc56c83e248360720ef45c842a (diff) |
Add a short READMEv0
-rw-r--r-- | README.md | 77 |
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 | ||
2 | Schedcat: the **sched**ulability test **c**collection **a**nd **t**oolkit. | ||
3 | |||
4 | ## About | ||
5 | |||
6 | Schedcat 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 | |||
8 | Additionally, 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 | |||
10 | This 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 | |||
56 | To 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 | |||
61 | Python 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 | |||
63 | Schedcat 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 | |||
65 | On 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 | |||
67 | The [Homebrew package manager](http://mxcl.github.com/homebrew/) provides the easiest way to install GNU GMP under Mac OS X. | ||
68 | |||
69 | ## Limitations | ||
70 | |||
71 | At 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 | |||
73 | The unit test suite could use a lot more tests. | ||
74 | |||
75 | ## Contributions | ||
76 | |||
77 | Improvements, bugfixes, additional unit tests are very welcome! Please send pull requests or patches to [Björn Brandenburg](http://www.mpi-sws.org/~bbb). | ||