STOMP: Scheduling Techniques Optimization in heterogeneous Multi-Processors
AVSched is a multi-step scheduler that leverages dynamic runtime information about the underlying heterogeneous hardware platform, along with the applications’ real-time constraintsand the task traffic in the system to optimize overall mission performance. AVSched proposes two scheduling policies: 𝑀𝑆𝑠𝑡𝑎𝑡 and 𝑀𝑆𝑑𝑦𝑛 and scheduling optimizations like task pruning, hybrid heterogeneous ranking and rank update.
AVSched is implemented using the STOMP simulator. STOMP is a simple yet powerful queue-based discrete-event simulator that enables fast implementation and evaluation of OS scheduling policies in multi-core/multi-processor systems. It implements a convenient interface to allow users and researchers to plug in new scheduling policies in a simple manner and without the need to touch the STOMP code.
STOMP is based on its predecesor C-based QUTE framework.
If you use the meta branch please cite our paper:
A. Amarnath et al., “Heterogeneity-Aware Scheduling on SoCs for Autonomous Vehicles,” in IEEE Computer Architecture Letters, vol. 20, no. 2, pp. 82-85, 1 July-Dec. 2021
STOMP is invoked using the stomp_main.py
script which supports the following options:
optional arguments:
-h, --help show this help message and exit
--conf-file CONF_FILE, -c CONF_FILE
specifies a json configuration file for STOMP to use this run
--input-trace INPUT_TRACE, -i INPUT_TRACE
specifies the filename from which STOMP should read an input DAG trace
--conf-json CONF_JSON, -j CONF_JSON
specifies a json string that includes the configuration information for STOMP to use this run
--debug, -d Output run-time debugging messages
STOMP supports a trace-driven operational mode. A trace file can be generated using the trace_generator.py script in utils/ to create random uniform arrival of directed acyclic graphs (DAGs).
Once a trace has been generated, subsequent STOMP runs can use that trace in the following mode:
The requirements to run STOMP are listed in requirements.txt
.
STOMP can be run with the default parameters:
make run_syn # For synthetic application
make run_ad # For the ADSuite application
STOMP can be configured using the inputs/stomp.json
for the synthetic application and inputs/stomp_real.json
for the real-world applications.
The inputs required to run STOMP are organized in inputs
. It contains a folder per application.
Also checkout the script run_all.py
in utils to run multiple runs and collect.py
to collect the stats for varying scheduling policies and parameters. To run and collect stats for preloaded parameters and all scheduling policies run:
./utils/run_all.py -ucsv
./utils/collect.py <output_sim_dir> <application_name>
STOMP-Viz is a utility based on the Python-Gantt project.
python3 utils/stomp-viz.py
STOMP-viz takes as inputs:
STOMP-viz outputs different views of tasks’ execution over time
A screenshot of the output of STOMP-viz on an example trace execution is shown below.