Git Product home page Git Product logo

real-time-task-generator-framework's Introduction


Real-time task generator framework

A collection of task set generators for real-time systems in Go

GitHub License

DependenciesBuildConfiguration FormatFeaturesOutput formatLimitationsLicense

📦 Required Packages

This program uses the following packages:

gopkg.in/yaml.v2

📋 Build Instructions

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>

📝 Configuration Format

The configuration file is in YAML format. For more information on the configuration file, please refer to the Configuration File example.

🔧 Features

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

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

⚠️ Note: In addition to the features already listed, this framework is designed to support parallel execution. This means that multiple tasks can be run concurrently, significantly improving the performance and efficiency of the system, especially when dealing with large task sets.

📄 Output Format

The generated task set can be saved in either CSV or YAML format. The output format can be specified in the configuration file.

🚧 Limitations

  • For now, the generators just support the discrete-time model and all the numbers are integers.

🌱 Contribution

With your feedback and conversation, you can assist me in developing this application.

  • Open pull request with improvements
  • Discuss feedback and bugs in issues

📜 License

Copyright © 2024 Pourya Gohari.

This project is licensed under the MIT License - see the LICENSE file for details.

🔄 Previous Work

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.

📚 References

If you are interested in the task-generation algorithms, you can refer to the following papers:

real-time-task-generator-framework's People

Contributors

porya-gohary avatar gnelissen avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.