ARSim emulates multiple reservation-based schedulers, where each job of each task, with unpredictable duration, is dynamically assigned a bandwidth controlled by a QoS module. In the second release of the emulator, it is possible to instantiate more tasks, each one controlled by its own controller, and the statistics are collected on a temporal-average basis, rather than on the job-end event-based fashion used in the first release.
Supports various kind of QoS controllers (which have been properly renamed to Controllers w.r.t. to the previous release), task types and task predictor. Also, there is a single GlobalController which enforces the global saturation constraint by means of a simple recompression policy, but other global controllers may be added, by subclassing the GlobalController class.
A QoS Controller is a module that decides, each time a job finishes, what bandwidth must be allocated for the next job execution. Decision is made differently by various controller types. Some of them rely on the prediction of the next execution time (mean value, standard deviation, interval in which sample will fall with high prob), that is performed by a TaskPredictor module. Task behaviour is emulated by a Task module, that generates job execution times. QoS Controller, Task and Task Predictor types can be changed, and parameters can be fed to them, by using proper command line options.
The program executable is arsim, and it is able to simulate the asynchronous execution of multiple tasks running on multiple resources. Each new resource but the first one is introduced by a '-r' option. Tasks have unique zero-based IDs within the resource they consume. Resources have zero-based IDs as well. During an execution run, the program produces various files (? is a pair of comma separated numbers identifying a task by means of its own task ID and resource ID):
More specifically, apart from what is randomly written on stdout, the
program creates a huge number of "*_stat*,*.dat" files within the
current folder. This is the main result of the simulation (all files
have a suffix of the type
The task*.dat files contain the temporal evolution of the simulation,
with such columns as:
The *_stats*.dat files contain various statistics on the simulation.
Each file has a one-line quick description of the statistic, plus a few
summary statistics (mean, standard deviation, min, max and mean
of non-zero samples) in the first commented 3 lines. The files are as follows:
Moreover, there are some invariant-specific stats:
Please, note that in the stats files values are all normalized to the task
period (T column), so "1.0" represents actually the value "T" (e.g. 40 msec
for the usual MPEG samples we use).
You can easily plot the represented data with GNUplot scripts.
Just type 'make'.
List of supported options:
./arsim [-h|--help]
Each '-s' option adds a QoS controller, which must be assigned a task
type with a subsequent '-t' option, and may be assigned a task
predictor with the '-tp' option. All subsequent options, up to the
next '-s' option, feed parameters to the just added controller, task
type, or task predictor. All of the introduced tasks and controllers
refer to the same resource, unless a '-r' option is used, which
introduced the definition of a new resource, so that all of the
subsequent controller and task definitions refer to the new created
resource. Dependencies among tasks may be specified through the '-pa'
(Pipe After) and '-pb' (Pipe Before) options within a task definition,
which take as argument a pair of comma separated IDs identifying a
specific task into a specific resource (taskID,resourceID).
Launchs a simulation that lasts for 1000 scheduling events, with a SDB
controller attached to a uniformly distributed task in the range
[60,70] with period 100, with maximum bandwidth 0.9, and a second SDB
controller attached to a uniformly distributed task in the range
[10,20] with period 50, with maximum bandwidth 1.
Invariant Based
Stochastic Based
ARSim
This file is part of ARSim.
ARSim is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public
License as published by the Free Software Foundation, either
version 3 of the License, or (at your option) any later version.
ARSim is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public
License along with ARSim. If not, see http://www.gnu.org/licenses
Requirements
Compile
Use
./arsim [options]
Note:
Example
./arsim -N 1000 \
-s sdb -t u -T 100 -c 60 -C 70 -B 0.9 \
-s sdb -t u -T 50 -c 10 -C 20 -B 1
Task types
Task predictor types
Controller types
License
Copyright (c) 2000-1009 Tommaso Cucinotta