Logical Execution Time Linear Programming Scheduler is an backend server for the following LetSynchronise framework plugins:
Minimise End-to-End Response Times (ILP): Minimises the delays of task dependencies in a LET systemMinimise End-to-End Response Time (WCET, ILP): Minimises the communication delay in a System-Level LET systemMinimise Core Usage (WCET)Minimises the number of cores needed by a System-Level LET system
Limitations:
- The task schedule is analysed over a scheduling window, starting at 0 ns and ending at the makespan, rounded up to the next hyper-period.
- Only minimises task dependency delays. This indirectly minimises the overall end-to-end response times of all event chains.
- Task dependencies are minimised in random order. No concept of priority or importance.
- Tasks are scheduled non-preemptively.
- Python 3
- LetSynchronise framework
- Linear Programming (LP) solver: PuLP and all PuLP supported solvers (Mosek (MOSEK), Gurobi (GUROBI), Cplex (CPLEX_PY), Xpress (XPRESS_PY), HiGHS (HiGHS), SCIP (SCIP_PY), XPRESS (XPRESS_PY), and COPT (COPT))
- Run main.py and it will list all avalaible solvers avaliable on the system
python3 main.py- Example result:
Avaliable Solver on this PC: ['GUROBI_CMD', 'PULP_CBC_CMD']
- Specify the LP solver (e.g.,
PULP_CBC_CMD), the LetSynchronise system model file (e.g.,system.json), and the optimisation goal (e.g.,min-core-usage,min-e2e-mc, orilp):python3 main.py --file system.json --solver PULP_CBC_CMD, --goal ilp
- Run the LetSynchronise framework in a browser
- Start up the server with selected solver:
- PuLP:
python3 main.py --solver PULP_CBC_CMD
- PuLP:
- In the "Analyse" tab of LetSynchronise, under "LET Task Schedule", choose
No Scheduling (Identity)andMinimise End-to-End Response Times (ILP)orMinimise End-to-End Response Time (WCET, ILP)orMinimise Core Usage (WCET, ILP) - Set the
Makespanof the generated schedule - Click the
Optimisebutton
The LET-LP-Scheduler communicates with LetSynchronise via localhost on port 8181. The address can be changed, but this has to be reflected in the address setup defined in the LetSynchronise framework plugins.
The LET-LP-Scheduler uses POST requests to service a scheduling request. The body of a POST request contains a LetSynchronise system model in JSON format (examples) and extended with "PluginParameters": { "Makespan": <int> } at the top level.