Delay Models
MOSAIC has different types of delays implemented for different use cases. This page will
give a short introduction into the types and their usages, as well as example configurations,
which are used throughout MOSAIC. The implementations can be
found in the package org.eclipse.mosaic.lib.model.delay.
Note prior to the release of MOSAIC delay values were configured using Milliseconds as unit,
this has been refactored to Nanoseconds. Alternatively you can specify delay values using
a String with a unit (eg "delay": "20 ms").
Delay Models
The Delay class represents an implementation for a specific delay model. The following model implementation exist:
ConstantDelay
The ConstantDelay-class is arguably the simplest implementation of Delay. This model is configured with a single
field delay, which the generateDelay(...)-method will simply return.
While this delay doesn’t provide realistic behaviour in most cases it is optimal for testing purposes as it
can easily be retraced.
Configuration:
"delay": {
"type": "ConstantDelay",
"delay": "20 ms"
}
SimpleRandomDelay
The SimpleRandomDelay model allows for the generated delays to be randomly distributed between a minDelay and a maxDelay.
Additionally, the steps field is used to limit the amount of different delays, by equally separating the interval into
the amount of steps specified. This delay provides a simple and performant way to randomize and thereby more realistically reflect real-world delays.
For example, with the configuration below, one of the following delays is randomly chosen: [0.4, 0.9, 1.4, 1.9, 2.4] ms.
Configuration:
"delay": {
"type": "SimpleRandomDelay",
"steps": 5,
"minDelay": "0.4 ms",
"maxDelay": "2.4 ms"
}
Gamma Delays
MOSAIC provides two types of delays using a Gamma-distribution to sample values, namely GammaRandomDelay and GammaSpeedDelay.
The parameters for the used Gamma-distribution have been determined experimentally. The GammaSpeedDelay extends the GammaRandomDelay
by a speed penalty. Both delay-types aim to provide more realistic solution, than the previous models, but come with the downside of complexity.
Configurations:
"delay": {
"type": "GammaRandomDelay",
"minDelay": "10 ms",
"expDelay": "30 ms"
}
"delay": {
"type": "GammaSpeedDelay",
"minDelay": "10 ms",
"expDelay": "30 ms"
}