The Task Space Searcher (TSS) Project Report

Tyler Bletsch (tkbletsc [AT] unity.ncsu.edu)
North Carolina State University
For CSC714, Prof. Mueller
30 November 2005

Introduction

I implemented a schedulability analysis tool in Perl that supports EDF and DM scheduling policies, as well as the PIP and PCP priority schemes. This tool allows one to search a problem space for feasible task sets.

This document reports the final development status. Full project information is available at http://www4.ncsu.edu/~tkbletsc/714/project.html. The current source code is available there, as well.

Development Summary

I successfully implemented almost all of the requirements I set for myself, and created what I consider to be a fairly useful tool for real-time development. The final product supports the following:

These features are adequately demonstrated using the sample input files included with the program distribution (test*.tss, see comments within each file for details). During the development process, the project evolved significantly from the original proposal. For example, there were a number of features that turned out to be unnecessary: Finally, I was unfortunately not able to fulfill every goal I set for myself. Specifically, my implementation of resource locking does not allow recursive locks at present. This would be a significant step forward, and would make for excellent future development. Other sources of future development include:

Completed Milestone History

Program usage (taken from the README)

INSTALLATION

Simply extract the archive to the directory of your choice. You can get started quickly by using the included sample input files as a template. The following sample session demonstrates extraction, shows a sample input file, shows the usage information, and finally runs the sample file through the system:

Sample session
$ tar -xvzf tss.tar.gz
tss.pl
test1.tss
test2.tss
test3.tss
Task.plx
TaskSet.plx
blocking.plx
common.plx
gtda.plx
util.plx
README

$ cat test1.tss
# Here's a basic input file.  Some of the tasks are schedulable, some aren't.
# Note what the test results show regarding what is schedulable under DM.

task [1,16,3];[1,5,0.1]
task 7;2;7
task 11;4;10

try DM with PIP
try EDF with PIP

$ tss.pl
Task Space Searcher (TSS) by Tyler Bletsch

A schedulability analysis tool for real-time applications.  See project
homepage for complete documentation.

Usage:
  tss.pl [-v[#]] [-c<CSVfile>] <TSSFile>

Options:
  -v  Set verbosity to #, or 1 if no number is specified. Defaults to 0. Key:
        0 = Emit successful task sets only
        1 = Print TaskSets & analysis result
        2 = Print all of 1, and include in-depth calculation details
  -c  Output results in Comma-Separated Values (CSV) format to <CSVFile>.
  -p  Just print the cases that would be tested (but don't test them).

Arguments:
    TSSFile: A Task Space Searcher input file, see documentation for format


$ tss.pl test1.tss
DM/PIP:  (13,1,13) (7,2,7) (11,4,10)
DM/PIP:  (16,1,16) (7,2,7) (11,4,10)
DM/PIP:  (13,1.1,13) (7,2,7) (11,4,10)
DM/PIP:  (16,1.1,16) (7,2,7) (11,4,10)
DM/PIP:  (13,1.2,13) (7,2,7) (11,4,10)
DM/PIP:  (16,1.2,16) (7,2,7) (11,4,10)
DM/PIP:  (16,1.3,16) (7,2,7) (11,4,10)
DM/PIP:  (16,1.4,16) (7,2,7) (11,4,10)
DM/PIP:  (16,1.5,16) (7,2,7) (11,4,10)
EDF/PIP: (4,1,4) (7,2,7) (11,4,10)
EDF/PIP: (7,1,7) (7,2,7) (11,4,10)
EDF/PIP: (10,1,10) (7,2,7) (11,4,10)
EDF/PIP: (13,1,13) (7,2,7) (11,4,10)
EDF/PIP: (16,1,16) (7,2,7) (11,4,10)
EDF/PIP: (4,1.1,4) (7,2,7) (11,4,10)
     ... a lot of results ...

OPTIONS

You can get increasing amounts of output on stdout by specifying higher verbosity with the -v option. Use the highest level, -v2, to get a detailed hierarchical report of every step of the analysis. You can output the results of analysis to a Comma-Separated Values (CSV) file with the -c option. This file can be opened readily in Excel, Gnumeric, OpenOffice Calc, and most any other table-oriented data analysis tool. Finally, you can use -p to simply get a list of all task sets (without analysis).