Adaptive Reservation Simulator (ARSim)

Description

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 ,.dat).

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.

Requirements

Compile

Just type 'make'.

Use

./arsim [options] Note:

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).

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

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.

Task types

Task predictor types

Controller types

Invariant Based

Stochastic Based

License

ARSim
Copyright (c) 2000-1009 Tommaso Cucinotta

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