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"
}