modules/python/clusterloader2/cri/config/config.yaml (149 lines of code) (raw):
name: resource-consumer
{{$deploymentSize := DefaultParam .CL2_DEPLOYMENT_SIZE 10}}
{{$memory := DefaultParam .CL2_RESOURCE_CONSUME_MEMORY "100"}}
{{$memoryKi := DefaultParam .CL2_RESOURCE_CONSUME_MEMORY_KI "100"}}
{{$cpu := DefaultParam .CL2_RESOURCE_CONSUME_CPU 100}}
{{$repeats := DefaultParam .CL2_REPEATS 1}}
{{$steps := DefaultParam .CL2_STEPS 1}}
{{$nodePerStep := DefaultParam .CL2_NODE_PER_STEP 1}}
{{$totalNodes := MultiplyInt $nodePerStep $steps}}
{{$replicas := MultiplyInt $deploymentSize $totalNodes}}
{{$scaleReplicas := MultiplyInt $deploymentSize $nodePerStep}}
{{$scaleEnabled := DefaultParam .CL2_SCALE_ENABLED false}}
{{$operationTimeout := DefaultParam .CL2_OPERATION_TIMEOUT "5m"}}
{{$podStartupLatencyThreshold := DefaultParam .CL2_POD_STARTUP_LATENCY_THRESHOLD "15s"}}
{{$loadType := DefaultParam .CL2_LOAD_TYPE "memory"}}
{{$provider := DefaultParam .CL2_PROVIDER "aks"}}
{{$scrapeKubelets := DefaultParam .CL2_SCRAPE_KUBELETS false}}
namespace:
number: 1
prefix: resource-consumer
deleteStaleNamespaces: true
deleteAutomanagedNamespaces: true
enableExistingNamespaces: false
tuningSets:
- name: Uniform1qps
qpsLoad:
qps: 1
steps:
- name: Start measurements
measurements:
- Identifier: PodStartupLatency
Method: PodStartupLatency
Params:
action: start
labelSelector: group = resource-consumer
threshold: {{$podStartupLatencyThreshold}}
- Identifier: ResourceUsageSummary
Method: ResourceUsageSummary
Params:
action: start
labelSelector: group = resource-consumer
- Identifier: WaitForRunningLatencyDeployments
Method: WaitForControlledPodsRunning
Params:
action: start
checkIfPodsAreUpdated: true
apiVersion: apps/v1
kind: Deployment
labelSelector: group = resource-consumer
operationTimeout: {{$operationTimeout}}
{{range $i := Loop $repeats}}
{{if $scrapeKubelets}}
- module:
path: /kubelet-measurement.yaml
params:
action: start
{{end}}
{{range $j := Loop $steps}}
- name: Create deployment {{$j}}
phases:
- namespaceRange:
min: 1
max: 1
replicasPerNamespace: 1
tuningSet: Uniform1qps
objectBundle:
- basename: resource-consumer-{{$j}}
objectTemplatePath: deployment_template.yaml
templateFillMap:
{{if $scaleEnabled}}
{{if eq $j 0}}
Replicas: {{AddInt $scaleReplicas $deploymentSize}}
{{else}}
Replicas: {{$scaleReplicas}}
{{end}}
{{else}}
Replicas: {{$replicas}}
{{end}}
Group: resource-consumer
Memory: {{$memory}}K
CPU: --millicores={{$cpu}}
MemoryRequest: {{$memoryKi}}
CPURequest: {{$cpu}}m
LoadType: {{$loadType}}
Provider: {{$provider}}
- name: Waiting for latency pods to be running
measurements:
- Identifier: WaitForRunningLatencyDeployments
Method: WaitForControlledPodsRunning
Params:
action: gather
- name: Wait for resource consumption
measurements:
- Identifier: Sleep
Method: Sleep
Params:
duration: 1m
- name: Wait for nodes to be ready
measurements:
- Identifier: ConfirmNodeCount
Method: WaitForNodes
Params:
action: start
{{if $scaleEnabled}}
minDesiredNodeCount: {{MultiplyInt (AddInt (MultiplyInt $nodePerStep (AddInt $j 1)) 1) 0.8}}
maxDesiredNodeCount: {{AddInt $totalNodes 1}}
{{else}}
minDesiredNodeCount: {{MultiplyInt $totalNodes 0.8}}
maxDesiredNodeCount: {{$totalNodes}}
{{end}}
labelSelector: cri-resource-consume = true
timeout: 1m
refreshInterval: 5s
{{end}}
{{if $scrapeKubelets}}
- module:
path: /kubelet-measurement.yaml
params:
action: gather
{{end}}
{{range $j := Loop $steps}}
- name: Deleting deployments {{$j}}
phases:
- namespaceRange:
min: 1
max: 1
replicasPerNamespace: 0
tuningSet: Uniform1qps
objectBundle:
- basename: resource-consumer-{{$j}}
objectTemplatePath: deployment_template.yaml
- name: Waiting for latency pods to be deleted
measurements:
- Identifier: WaitForRunningLatencyDeployments
Method: WaitForControlledPodsRunning
Params:
action: gather
{{end}}
{{end}}
- name: Collect measurements
measurements:
- Identifier: ResourceUsageSummary
Method: ResourceUsageSummary
Params:
action: gather
- Identifier: PodStartupLatency
Method: PodStartupLatency
Params:
action: gather