4 merge requests!159Re-implementation of Theodolite with Kotlin/Quarkus,!157Update Graal Image in CI pipeline,!125Add dokumentation for benchmark and execution,!83WIP: Re-implementation of Theodolite with Kotlin/Quarkus
***appResource**: A list of file names that reference Kubernetes resources and that are deployed on the cluster for the system under test (SUT).
***appResource**: A list of file names that reference Kubernetes resources that are deployed on the cluster for the system under test (SUT).
***loadGenResources**: A list of file names that reference Kubernetes resources and that are deployed on the cluster for the load generator.
***loadGenResources**: A list of file names that reference Kubernetes resources that are deployed on the cluster for the load generator.
***resourceTypes**: A list of resource types that can be scaled for this *benchmark*. For each resource type the concrete values are defined in the *execution* object. Each resource type has the following structure:
***resourceTypes**: A list of resource types that can be scaled for this *benchmark*. For each resource type the concrete values are defined in the *execution* object. Each resource type has the following structure:
***typeName**: Name of the resource type.
***typeName**: Name of the resource type.
***patchers**: List of patchers used to scale this resource type. Each patcher has the following structure:
***patchers**: List of patchers used to scale this resource type. Each patcher has the following structure:
...
@@ -49,9 +49,6 @@ The properties have the following meaning:
...
@@ -49,9 +49,6 @@ The properties have the following meaning:
***patchers**: List of patchers used to scale * **resourceTypes**: A list of resource types that can be scaled for this *benchmark*. For each resource type the concrete values are defined in the *execution* resource object.Each resource type has the following structure:
***patchers**: List of patchers used to scale * **resourceTypes**: A list of resource types that can be scaled for this *benchmark*. For each resource type the concrete values are defined in the *execution* resource object.Each resource type has the following structure:
***typeName**: Name of the resource type.
***typeName**: Name of the resource type.
***patchers**: List of patchers used to scale this resource type. Each patcher has the following structure:
***patchers**: List of patchers used to scale this resource type. Each patcher has the following structure:
***type**: Type of the Patcher. The concrete types can be looked up in the list of patchers.
***resources**: Specifies the Kubernetes resource to be patched.
***Patcher Arguments**: (Optional) Patcher specific additional arguments.this load type. Each patcher has the following structure:
***type**: Type of the Patcher. The concrete types can be looked up in the list of patchers.
***type**: Type of the Patcher. The concrete types can be looked up in the list of patchers.
***resources**: Specifies the Kubernetes resource to be patched.
***resources**: Specifies the Kubernetes resource to be patched.
***Patcher Arguments**: (Optional) Patcher specific additional arguments.
***Patcher Arguments**: (Optional) Patcher specific additional arguments.
...
@@ -116,23 +113,70 @@ The properties have the following meaning:
...
@@ -116,23 +113,70 @@ The properties have the following meaning:
***resourceValues**: List of resource values for the specified resource type.
***resourceValues**: List of resource values for the specified resource type.
***slos**: List of the Service Level Objective (SLO) for this *execution*. Each SLO has the following fields:
***slos**: List of the Service Level Objective (SLO) for this *execution*. Each SLO has the following fields:
***sloType**: The type of the SLO. It must match 'lag trend'.
***sloType**: The type of the SLO. It must match 'lag trend'.
***threshold**:
***threshold**: The threshold the SUT should meet for a sucessful experiment.
* prometheusUrl: String
***prometheusUrl**: Connection string for promehteus.
* externalSloUrl: String
***externalSloUrl**: Connection string for a external slo analysis.
* offset: SignedInt
***offset**: Hours by which the start and end timestamp will be shifted (for different timezones).
* warmup: UnsignedInt
***warmup**: Seconds of time that are ignored in the analysis.
executions:
***executions**: defines the overall parameter for the execution.
strategy: "LinearSearch" or "BinarySearch"
***strategy**: defines the used straegy for the execution: either 'LinearSearch' or 'BinarySearch'
duration: UnsignedInt
***duration**: defines the duration of each experiment in seconds.
repetition: UnsignedInt
***repetition**: Unused.
restrictions:
***restrictions**: List of restriction strategys used to delimit the search space.
- "LowerBound"
**- LowerBound**: currently only supported restriction strategy.
...
***configurationOverrides**: List of patchers that are used to override existing configurations.
configurationOverrides:
***patcher**: patcher used to patch a resource . Each patcher has the following structure:
- patcher:
***type**: Type of the Patcher. The concrete types can be looked up in the list of patchers.
type: String
***resources**: Specifies the Kubernetes resource to be patched.
resource: String
***Patcher Arguments**: (Optional) Patcher specific additional arguments.
<PatcherArguments> ...
...
...
## Patchers
## Patchers
\ No newline at end of file
***ReplicaPatcher**: Allows to modify the number of Replicas for a kubernetes deployment.
***type**: "ReplicaPatcher"
***resource**: "uc1-kstreams-deployment.yaml"
***NumSensorsLoadGeneratorReplicaPatcher**: Allows to scale the nummer of load generators. Scales arcording to the following formular: (value + 15_000 - 1) / 15_000
***NumNestedGroupsLoadGeneratorReplicaPatcher**: Allows to scale the nummer of load generators. Scales arcording to the following formular: (4^(value) + 15_000 -1) /15_000