Tyler Bletsch (tkbletsc [AT] unity.ncsu.edu)
18 October 2005
CSC714, Prof. Mueller
I intend to write a schedulability analysis tool that supports EDF and DM scheduling policies, as well as the PIP and PCP priority schemes. This tool will be written in Perl, and will build on the framework I developed previously while studying the analysis techniques discussed in class. The tool will accept input files that describe tasks, resources, and the scheduling/priority algorithms to analyze. For simplicity, all resources are assumed to be static and binary.
The following table shows the analysis needed for the various algorithms and situations.
Scheduling algorithm | Analysis needed |
---|---|
EDF | System density (including blocking term) ≤ 1 |
DM with all Di≤pi |
System density (including blocking term) ≤ URM(n) = n(21/n - 1) OR TDA (with blocking term) |
DM with some Di>pi |
System density (including blocking term) ≤ URM(n) = n(21/n - 1) OR Generalized TDA (with blocking term) |
From this, we see that the following analysis is needed:
In order to go beyond what has been covered in class, I propose to allow the user to specify something akin to "wildcards" within task specification. The system will then perform the analysis iteratively to discover which matching task sets are schedulable. Specifically, tasks can be input in the usual form:
[phase]; <period>; <WCET>; [relative deadline]Each of those variables can be:
{2,3,5}; [3,5,0.1]Means that this task could be any of:
0; 2; 3 ; 3 0; 2; 3.2 ; 3.2 0; 2; 3.4 ; 3.4 0; 2; 3.6 ; 3.6 0; 2; 3.8 ; 3.8 0; 2; 4 ; 4 0; 3; 3 ; 3 0; 3; 3.2 ; 3.2 0; 3; 3.4 ; 3.4 0; 3; 3.6 ; 3.6 0; 3; 3.8 ; 3.8 0; 3; 4 ; 4 0; 5; 3 ; 3 0; 5; 3.2 ; 3.2 0; 5; 3.4 ; 3.4 0; 5; 3.6 ; 3.6 0; 5; 3.8 ; 3.8 0; 5; 4 ; 4This allows the user to test a range of situations easily. Unfortunately, a combinatorial explosion is clearly possible, which will make the workload prohibitively large. This could be combatted a number of ways:
Below is an informal specification for the problem specification file. Blue text is meant to be filled in, black text is literal. Items in [blue brackets] are optional, whereas items in <blue angle-braces> are required. Task parameters may take any of the forms described in the previous section. The lock_usage variable has the same nested brackets syntax presented in lec6.ppt, slide 4.
The file first consists in one or more of the following line, such that each line describes a task:
task [phase;] <period>; <WCET>; [relative_deadline] [/ lock_usage]After this, one or more of the following lines are used to request an analysis on the tasks described above:
try <EDF | DM> with <PCP | PIP>
Here is a simple example file:
task 1; 2; 3 / [1; 1] task 1; 2; 3; 4 / [1; 2 [2; 1]] task {2,3,5}; [3,5,0.1] try EDF with PIP try EDF with PCP |
This example allows provides 3 tasks. The first has phase 1, period 2, WCET 3, and relative deadline equal to WCET. It uses resource 1 for 1 unit of time. The second task has phase 1, period 2, WCET 3, and relative deadline 4. It locks resource 1 for 2 units of time, then locks resource 2 for 1 unit of time, then releases both. The third task uses no resources, but is the wildcard example from the previous section, so it expands to represent 18 different possible tasks. Also note that the resource allocations after the slash have nothing to do with the intervals that can be specified before the slash. After defining these tasks, we apply EDF analysis with both forms of priority policy.