A toolkit for constructing and analyzing schedule-abstraction graph in Python
Project description
SAGkit
A lightweight Python toolkit for response-time analysis based on schedule-abstraction graph. You may also be interested in Official SAG repository (in C++), sag-go (in GO), and sag-py (in Python).
Install
You may install SAGkit with pip:
pip install sagkit
or reproduce the results in our paper with a docker image (requires Docker):
docker pull caoruide/sagkit
Use
The jobset generator takes the following arguments:
- --ET_ratio: What percentage of jobs are ET. Default is 15.
- --utilization: What percentage of the macrocycle is the expectation of the total execution time. Default is 45.
- --jobset_folder: Which folder to save the jobsets. Default is "./jobsets/".
- --num_job: How many jobs to include in each job set. Default is 1000.
- --num_instance: How many jobsets to generate for each set of parameter combinations. Default is 1.
Generate jobsets:
python -m sagkit.jobset_generator [ET_ratio] [utilization] [jobset_folder] [num_job] [num_instance]
The SAG constructor takes the following arguments:
- --jobset_folder: Which folder to read the jobsets. Default is "./jobsets/".
- --constructor_type: What constructor(s) to use to do the construction. Default is "original,extended,hybrid".
- --save_dot: Which folder to save the dot files. Default is "./dotfiles/".
- --save_statistics: Which path to save the statistics results. Default is "./statistics.csv".
Construct SAGs:
python -m sagkit.sag_constructor [jobset_folder] [constructor_type] [save_dot] [save_statistics]
Example Usage (Manually type in 1 jobset)
-
Create a folder /example/ in the current working directory.
-
Create a file 'example.txt' in the /example/ folder.
-
Write the following content (Fig. 4 example in our paper) into example.txt.
0 2 9 10 20 1 1 1 2 5 6 25 4 0 4 5 1 2 25 3 0 3 6 2 3 25 2 0or write any job you want for each line, in the following format:
BCAT WCAT BCET WCET deadline priority ET- BCAT (Best-Case Arrival Time): Earliest arrival time for the job.
- WCAT (Worst-Case Arrival Time): Latest arrival time for the job.
- BCET (Best-Case Execution Time): Minimum time required for the job to be executed.
- WCET (Worst-Case Execution Time): Maximum time required for the work to be executed.
- deadline: Deadline in absolute time.
- priority: A smaller value implies higher priority.
- ET (Event-Triggered): Whether the job is potentially absent, with 0 being impossible and 1 being possible.
-
Go back to the original working directory. Run the constructor:
python -m sagkit.sag_constructor --jobset_folder ./example/ -
The constructed SAGs will be saved in ./dotfiles/ folder. To visualize, paste the contents of each .dot file to:
https://dreampuf.github.io/GraphvizOnline (you may want to access in incognito mode.)
Example Usage (Automatically generate 84 jobsets)
-
Generate jobsets:
python -m sagkit.jobset_generator --ET_ratio 0,10,15,20,30,40,50,60,70,80,90,100 --utilization 45,50,55,60,65,70,75 -
Construct SAGs:
python -m sagkit.sag_constructor --jobset_folder ./jobsets/ --save_statistics ./statistics.csv -
View the statistics in ./statistics.csv.
Reproduce
- Step 1: Create a folder named 'results' in the current working directory:
mkdir results
- Step 2: Reproduce Fig. 1 and 2. The .dot files corresponding to the figures ('original.dot' for Fig.1, 'hybrid.dot' for Fig.2) will appear under the /results folder after running the following command:
docker run -v "$(pwd)/results:/output" caoruide/sagkit sagkit.sag_constructor --save_dot True --jobset_folder /basic_idea/
- Step 3 (optional): Visualize Fig. 1 and 2. This step is optional because the .dot files are readable and easy to understand. Paste the contents of each .dot file to:
https://dreampuf.github.io/GraphvizOnline (you may want to access in incognito mode.)
- Step 4: Reproduce Fig. 3. Also, you may visualize the .dot files ('original.dot' for Fig. 3 (a), 'extended.dot' for Fig. 3 (b), 'hybrid.dot' for Fig. 3 (c)) following Step 3.
docker run -v "$(pwd)/results:/output" caoruide/sagkit sagkit.sag_constructor --save_dot True --jobset_folder /example1/
- Step 5: Reproduce Fig. 4. Also, you may visualize the .dot files ('original.dot' for Fig. 4 (a), 'extended.dot' for Fig. 4 (b), 'hybrid.dot' for Fig. 4 (c)) following Step 3.
docker run -v "$(pwd)/results:/output" caoruide/sagkit sagkit.sag_constructor --save_dot True --jobset_folder /example2/
- Step 6: Generate job sets:
docker run -v "$(pwd)/results:/output" caoruide/sagkit sagkit.jobset_generator --ET_ratio 0,10,15,20,30,40,50,60,70,80,90,100 --utilization 45,50,55,60,65,70,75
- Step 7: Reproduce Fig. 5 and Tables 2-4. This step may take some time (29 hours on my machine). All numerical results corresponding to Figure 5 and Tables 2-4 will be automatically generated in the /results/statistics.csv file. The construction times may vary from Fig. 5 (a), (b), (c) depending on the computational power of the machine.
docker run -v "$(pwd)/results:/output" caoruide/sagkit sagkit.sag_constructor
Test
Install SAGkit from source:
git clone https://github.com/RyderCRD/sagkit
Change direcotry to ./sagkit (over the /src directory):
cd sagkit
Run all unit tests:
python -m unittest discover tests
Contribute
Contributions are welcome! Please feel free to drop your issues and PRs :)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sagkit-0.0.14.tar.gz.
File metadata
- Download URL: sagkit-0.0.14.tar.gz
- Upload date:
- Size: 17.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c25de036a6bf8273a68c17efce3bb469e257e4a88bae47be3137b703f086cc95
|
|
| MD5 |
c934bc93e5ce26f9d0b08a56591cc888
|
|
| BLAKE2b-256 |
79988e2b82da9ff82006cd3550b6850620a46628ba3a2673462f8531efaeddab
|
File details
Details for the file sagkit-0.0.14-py3-none-any.whl.
File metadata
- Download URL: sagkit-0.0.14-py3-none-any.whl
- Upload date:
- Size: 19.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
952704add1f5d4f49428ee6dd0cdcc62ab8736ade3d7b22e2c9a8d39641c6151
|
|
| MD5 |
a7ac0f554a9debea52cbf29207ab1f5a
|
|
| BLAKE2b-256 |
97057e359d551be3f2cbc47e08dd37ba395276797b71678d389f7cb7451b5532
|