Skip to content
Snippets Groups Projects
Commit 7ed80d87 authored by Lorenz Boguhn's avatar Lorenz Boguhn Committed by Lorenz Boguhn
Browse files

Enhance benchmark and execution dokumentation

parent 3bb5e941
No related branches found
No related tags found
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
...@@ -33,11 +33,11 @@ kafkaConfig: ...@@ -33,11 +33,11 @@ kafkaConfig:
... ...
``` ```
The properties have the following meaning: The properties have the following definitions:
* **name**: The name of the *benchmark* * **name**: The name of the *benchmark*
* **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.
<Patcher Arguments> ...
... ...
## 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
* **type**: "NumSensorsLoadGeneratorReplicaPatcher"
* **resource**: "uc1-load-generator-deployment.yaml"
* **NumNestedGroupsLoadGeneratorReplicaPatcher**: Allows to scale the nummer of load generators. Scales arcording to the following formular: (4^(value) + 15_000 -1) /15_000
* **type**: "NumNestedGroupsLoadGeneratorReplicaPatcher"
* **resource**: "uc1-load-generator-deployment.yaml"
* **ReplicaPatcher**: Allows to modify the number of Replicas for a kubernetes deployment.
* **type**: "ReplicaPatcher"
* **resource**: "uc1-kstreams-deployment.yaml"
* **EnvVarPatcher**: Allows to modify the value of an environment variable for a container in a kubernetes deployment.
* **type**: "EnvVarPatcher"
* **resource**: "uc1-load-generator-deployment.yaml"
* **container**: "workload-generator"
* **variableName**: "NUM_SENSORS"
* **NodeSelectorPatcher**: Changes the node selection field in kubernetes resources.
* **type**: "NodeSelectorPatcher"
* **resource**: "uc1-load-generator-deployment.yaml"
* **variableName**: "env"
* **value**: "prod"
* **ResourceLimitPatcher**: Changes the resource limit for a kubernetes resource.
* **resource**: "uc1-kstreams-deployment.yaml"
* **container**: "uc-application"
* **variableName**: "cpu" or "memory"
* **value**:"1000m" or "2Gi"
* **SchedulerNamePatcher**: Changes the sheduler for kubernetes resources.
* **type**: "SchedulerNamePatcher"
* **resource**: "uc1-kstreams-deployment.yaml"
* **value**: "random-scheduler"
* **ImagePatcher**: Changes the image of a kubernetes resource. Currently not fully implemented.
* **type**: "ImagePatcher"
* **resource**: "uc1-kstreams-deployment.yaml"
* **container**: "uc-application"
* **value**: "dockerhubrepo/imagename"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment