This repository contains scripts, graphs and simulation models for quality/latency-aware real-time scheduling of distributed streaming IoT applications [1]. It consists of several folders:
- scripts
- graphs
- networks
- sim-models
Below, we explain the content of each folder in detail:
This folder contains the implementation of T-RADF, quality model and optimization algorithm in Python (tradf.py,scheduler.py). It uses networkx library to represent the graph and operate on it. SciPy is used to implement the optimization routine. Finally, NumPy is miscellaneously used throughout the code. This folder also includes two executable scripts (optSched.py,randSched.py) that take a graph and latency constraint as input and generate the scheduled graph.
The graph is assumed to be in json format with actors and channels listed as value of actors and channels keys. Each actor has three keys: name, host and wcet. Latency constraint is described as the constraint factor rho (0<,<1). See Section 6 in the paper for the formal definition of rho.
This folder contains the random graphs used in experimental setup along with the graph corresponding to distributed neural network application. Random graphs are divided to two sets: acyclic and cyclic. Each set is further categorized to three groups of small (with 10 nodes), medium (with 50 nodes) and large (100 nodes). This folder also contains scheduled folder that is used as output directory for executable scripts.
This folder includes the network specifications used in the paper to schedule the random graphs (gamma100.ip.json) and distributed neural network application (gamma8.ip.json). As these files show, network specifications are nested Python dictionaries indexed by source and target hosts' name, stored in json format. Each entry in these dictionaries need to have 4 or 5 properties: dist, loc, scale, shape and u which are probabilistic distribution's name, delay offset to shift distribution by in milliseconds (e.g. mean of normal distribution), scale paramateter of distribution in milliseconds (e.g. standard deviation of normal distribution), unitless shape parameter of distribution if needed (e.g. for gamma distribution) and average loss rate (between 0 and 1), respectively. Distribution names follow the SciPy convention.
This folder includes simulation models for the random graphs and distributed neural network application. They were developed using OMNeT++ simulator 5.3 and INET Framework 3.6.4. To simulate a scheduled random graph, you will need to set **.graph variable in omnetpp.ini to point to it, which has a default value of scheduled.tradf.json. Furthermore, to be able to compile the simulation model, you will need to install json library for C++. Simulation model for distributed neural network has no external dependencies and once compiled, could simulate baseline and optimized schedules for rho values of 0.2, 0.25, 0.4, 0.5, 0.75 and 1.0. Note that you can simulate different configurations by modifying its omnetpp.ini.
[1] K. Mirzazad, Z. Zhao and A. Gerstlauer, "Quality/Latency-Aware Real-time Scheduling of Distributed Streaming IoT Applications," CODES+ISSS 2019, special issue of ACM Transactions on Embedded Computing Systems (TECS).
If you have a question about this repository or a problem running scripts/models, you can contact Kamyar at kammirzazad@utexas.edu.