Frequently there's a requirement to perform a specific load which may be defined by a ratio between different operation types. For example the load step may be described as:
- 20 % write operations
- 80 % read operations
- Ability to specify the relative operations weight for a set of load sub-steps
The weighted load is implemented as a specific scenario step:
WeightedLoad
.append(weightedWriteConfig)
.append(weightedReadConfig)
.run();
Internally, the weighted load step contains several load generators (for each configuration element supplied) and single load step context. The load step context contains the weight throttle shared among the load generators configured.
The configuration option load-generator-weight
should be used to set
the relative operations weight for the given load generator. The actual
weight is calculated as the specified weight value divided by the
weights sum.
var weightedWriteConfig = {
...
"load": {
"op": {
"weight": 20
}
},
...
};
var weightedReadConfig = {
...
"load": {
"op": {
"weight": 80,
"type": "read"
}
},
...
};
By default weights are distributed evenly between steps. For example
- if 1 step - weight == 100%
- if 2 steps - weight == 50% for each
- if 3 steps - weight == 33% for each, etc.
Notes
- Full example may be found in the
example/scenario/js/types/weighted.js
scenario file.- Weight throttle will never permit the operations if the corresponding weight is 0
- Weighted load step should contain at least 2 configuration elements.
Specific log messages:
Run the weighted load step "<STEP_ID>"
Weighted load step "<STEP_ID>" started
Weighted load step "<STEP_ID>" done
Weighted load step "<STEP_ID>" timeout
https://mvnrepository.com/artifact/com.github.emc-mongoose/mongoose-load-step-weighted