Reo Simulator
The simulator in Reo is created to perform quality of service analysis in Reo with general stochastic distributions. Before, this kind of analysis was only possible when using exponential distributions. Below you will find a discription how to use the simulator which can be found by adding the simulation tab to the Reo perspective in Reo. First we discuss the possible distributions for the simulation, followed by the options which have to specified in Reo, and finally the possible outputs. Please refer to the paper for a more extensive description about the simulator.
Distributions
You can define the distributions on the channels by clicking on a channel and going to the 'Delay' tab in the properties view in Eclipse. Depending on the channel, you can specify one or two distributions. All possible distributions are displayed in the table below. For example if you want to specify a uniform distribution between 0 and 1, you can specify uniform(0,1) or unif(0,1). The inter-arrival rate on the boundary node can be specified by clicking on a boundary node and going to the 'Arrivals' tab in the properties view. Here you can specify the same distributions as with the channels, and you specify if you start with a request by setting 'Start with request' to 'true'.
Distribution | Par 1 | Par 2 | Par 3 | Short | Remark |
Beta | α (d) | β (d) | |||
Binomial | n (i) | p (d) | Bino | ||
Chi^{2} | k (i) | ||||
Constant | value (d) | Con | |||
Exponential | λ (d) | Exp | |||
F | d_{1} (d) | d_{2} (d) | |||
Gamma | k (d) | Gam | Uses θ = 1 | ||
Lognormal | μ (d) | θ (d) | Logn | ||
Poisson | λ (d) | Poiss | |||
Triangular | low (d) | high (d) | avg (d) | Tri | |
Uniform | low (d) | high (d) | Unif | ||
Weibull | k (d) | Wbl | Uses λ = 1 | ||
IfNeeded | |||||
Always | |||||
File | path (s) | loop (b) | loop is optional |
The special cases 'IfNeeded' and 'Always' indicates that a request is always available at the boundary node or created when it is needed. For the arrival rate at a boundary node it is also possible to add one or two extra booleans, the first is to indicate that a request should be sampled when the boundary node is empty again. The second parameter is to indicate that the boundary node should iterate between samples of the distribution and 0. When this is needed is explained in the paper.
Options
The following list indicates the options to use the simulation. For some of the options the type of the option is displayed between brackets.
- Type of simulation: long- or short-term simulation
- Base simulation end on: events or time
- Warm-up period (double): time or number of events till the simulation starts gathering statistics
- Simulation length (double): time or events till the simulation stops
- Number of batches (integer): the simulation length will be split into multiple batches to be able to give a confidence interval for the statistics. The number of batches is normally chosen between 25 and 50
- Confidence interval (double between 0 and 1): how accurate the confidence interval should be
- Detect deadlock: if enabled, the simulation will stop whenever we are in a deadlock. If disabled, the simulation will go on so the user can see what happens with the statistics after the deadlock.
- Detect livelock: ability to specify if a livelock should be detected
- Internal colourings for livelock (integer): specify how many colourings in a row without any involved boundary nodes should be chosen to indicate a livelock.
- State to stop simulation (optional): possibility to define a certain system state in which the simulation should stop.
- Special state (optional): possibility to define a system state to get statistics from.
- Seed (integer): define a seed if you want to produce the same results in every consecutive simulation with the same parameters
- Max chart points (integer): maximum number of chart points for the charts.
Output
The following list indicates the possible outputs for the simulation. The tab 'results options' in the simulation view allows the user to disable certain output statistics. It is recommended to disable the 'System state' and 'Colourings' when using large connectors, because the number of colourings and states can become very large.
- Actual loss ratio: ratio of requests lost in LossySync channel, compare to the total number of requests into the channel
- Average conditional waiting time: average waiting time of all requests which will not be blocked
- Average waiting time: average waiting time over all requests
- Buffer utilization: ratio of time the FIFO buffer is full
- Channel locked: ratio of time a channel is locked because a colouring involving this channel is active
- Channel utilization: ratio of time a channel is actually in use
- Colourings: ratio of time a colouring is active
- End to end delay: average total delay between two points
- Inter-arrival times: average time between two arrivals at an ending point from a certain starting point
- Merger directions: ratio of requests from a certain sink end of a node compared to the total number of requests into the node
- Node state: the ratio of time a node is in a certain state
- Request observations: the ratio of requests which observes the node in a certain state compared to the total number of requests arriving at the node
- System state: ratio of time the system is in a certain state
- Special state: ratio of time the system is in the specified special state