Dependencies • Build • Configuration Format • Features • Output format • Limitations • License
This program uses the following packages:
gopkg.in/yaml.v2
Considering that you already installed a recent version of Go (version 1.22.0 and higher), you can build the project using the following command:
go build -o generate
For running the program, you can use the following command:
./generate -config <path-to-config-file>
Or you can build and run the program in one step using the following command:
go run generate.go -config <path-to-config-file>
The configuration file is in YAML format. For more information on the configuration file, please refer to the Configuration File example.
The framework is highly customizable and can be used to generate tasksets with different characteristics. In this section, we will discuss some of the features of the framework.
The framework can be used to generate task sets with the following characteristics:
- Periodic tasks
- Fork-join DAG tasks
- Random DAG tasks
- Multi-rate task chain
To generate the periods of the tasks, the framework uses the following distribution functions:
- Uniform distribution
- Log-uniform distribution
- Uniform distribution with discrete values (which should be provided in the configuration file)
- Log-uniform distribution with discrete values (which should be provided in the configuration file)
- Automotive benchmark
Utilization of the tasks also can be generated using the following distribution functions:
- UUniFast-Discard
- RandFixedSum
- Automotive benchmark
The task set can also be partitioned using the following partitioning algorithms:
- Best-fit
- Worst-fit
- First-fit
The framework also can unfold a generated taskset to a jobset with a specified priority assignment algorithm. Currently, the following priority assignment algorithms are supported:
- Rate Monotonic
- Deadline Monotonic
- Earliest Deadline First
The generated task set can be saved in either CSV or YAML format. The output format can be specified in the configuration file.
- For now, the generators just support the discrete-time model and all the numbers are integers.
With your feedback and conversation, you can assist me in developing this application.
- Open pull request with improvements
- Discuss feedback and bugs in issues
Copyright © 2024 Pourya Gohari.
This project is licensed under the MIT License - see the LICENSE file for details.
This project is a newer version of the Real-time task generator project. The previous project was written in Python and was not as efficient as the current project. The current project is written in Go and designed to be more efficient, scalable, and provide more options.
If you are interested in the task-generation algorithms, you can refer to the following papers:
- E. Bini, G. Buttazzo, and M. Bertogna, "Measuring the Performance of Schedulability Tests," in Proceedings of the 2005 ACM Symposium on Applied Computing, 2005, pp. 1333–1337.
- S. Kramer, D. Ziegenbein, and A. Hamann, "Real world automotive benchmark for free"
- P. Emberson, R. Stafford, and R. Davis, "Techniques for the synthesis of multiprocessor tasksets"