Implementation of the Schedule-Abstraction Graph (SAG) in Python.
Project description
Schedule-Abstraction Graph in Python
Schedule-abstraction graph (SAG) is a reachability-based response-time analysis for real-time systems.
This is the unofficial implementation of the SAG in Python. You can visit the official repository here. This is still WIP (Work-in-Progress) - you can run the anaysis but it doesn't scale because path merging is not implemented yet. The implemented SAG follows the following paper:
- M. Nasri, G. Nelissen, and B. Brandenburg, “Response-Time Analysis of Limited-Preemptive Parallel DAG Tasks under Global Scheduling”, Proceedings of the 31st Euromicro Conference on Real-Time Systems (ECRTS 2019), pp. 21:1–21:23, July 2019.
For Users
- Install the package with:
pip install sagpy
- Use the
sagpyCommand-Line Interface (CLI) to run the SAG analysis on a set of jobs from a csv file. You must select what SAG algorithm to use. For now there are only 2:ecrts2019(the one presented in the paper above) andros(based on ecrts2019, but adapted to analyze ROS2's executor):
sagpy overlapping_release_intervals.csv --algorithm ecrts2019
- Output files are by default generated in the
~/USER/.sagpyfolder.
By default the script generates a csv
containing the Best Response times (BR) and the Worst Response times (WR) for all given jobs. Moreover, a png with
the visual representation of the SAG is generated as well. Optionally, you can add --drawio to generate a drawio
file with a job release plot, so you can better visualize the interference between jobs. Also optionally, the SAG
can be serialized with pickle and saved for later use, e.g. making ground truths for testing.
For Developers
- Clone the repository.
git clone https://github.com/RaduLucianR/sag-py.git
- Change directory in the root folder of the repository.
cd sag-py
- Install the package locally. This allows you to run the scripts like they'd be run by the OS. Even if you make changes in the scripts, these changes will be taken into account when Python runs the script again after install.
pip install -e . --break-system-package
- Run the CLI script
sagpyon acsvfile that contains a set of jobs:
python3 -m src.sagpy.sagpy examples/input_examples/job_sets/overlapping_release_intervals.csv --algorithm ecrts2019
- Output files are by default generated in the
~/USER/.sagpyfolder. - Run the tests running
pytestfrom the root directiory:
pytest
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 sagpy-0.0.13.tar.gz.
File metadata
- Download URL: sagpy-0.0.13.tar.gz
- Upload date:
- Size: 14.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
64c73df635ca86363829434e9a5da1749e2e4b011a1183f481dcdf99df6246fb
|
|
| MD5 |
f3dce9440510865c0e438057aa87f26d
|
|
| BLAKE2b-256 |
9ab26448e98d3fa0950cad91b0ec63def924b2ceaaf5f51379222191ff0db94f
|
Provenance
The following attestation bundles were made for sagpy-0.0.13.tar.gz:
Publisher:
python-publish.yml on RaduLucianR/sag-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sagpy-0.0.13.tar.gz -
Subject digest:
64c73df635ca86363829434e9a5da1749e2e4b011a1183f481dcdf99df6246fb - Sigstore transparency entry: 154448232
- Sigstore integration time:
-
Permalink:
RaduLucianR/sag-py@5c967bcdfb4bffa89c31fa8b94e0e02417765b8b -
Branch / Tag:
refs/tags/v0.0.13 - Owner: https://github.com/RaduLucianR
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@5c967bcdfb4bffa89c31fa8b94e0e02417765b8b -
Trigger Event:
release
-
Statement type:
File details
Details for the file sagpy-0.0.13-py3-none-any.whl.
File metadata
- Download URL: sagpy-0.0.13-py3-none-any.whl
- Upload date:
- Size: 18.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d88248b517523e723700eb3cf8b66c1a442f53a89428ff3fcbc1710e925ad1c
|
|
| MD5 |
91da1f64ba8547cab200ea0fe6092da4
|
|
| BLAKE2b-256 |
79ec660f5a6793fca2a91b711afd7c3bd2b04b57439bc8b0f5b5fc0b0298dc95
|
Provenance
The following attestation bundles were made for sagpy-0.0.13-py3-none-any.whl:
Publisher:
python-publish.yml on RaduLucianR/sag-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sagpy-0.0.13-py3-none-any.whl -
Subject digest:
1d88248b517523e723700eb3cf8b66c1a442f53a89428ff3fcbc1710e925ad1c - Sigstore transparency entry: 154448235
- Sigstore integration time:
-
Permalink:
RaduLucianR/sag-py@5c967bcdfb4bffa89c31fa8b94e0e02417765b8b -
Branch / Tag:
refs/tags/v0.0.13 - Owner: https://github.com/RaduLucianR
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@5c967bcdfb4bffa89c31fa8b94e0e02417765b8b -
Trigger Event:
release
-
Statement type: