Skip to content

Commit 089181a

Browse files
committed
feat(defaults): Add default resources to engine container
Defines default requests and limits on the engine/executor container. Contributes to 2475 Signed-off-by: Nick Groszewski <groszewn@gmail.com>
1 parent f275586 commit 089181a

File tree

6 files changed

+102
-3
lines changed

6 files changed

+102
-3
lines changed

helm-charts/seldon-core-operator/templates/deployment_seldon-controller-manager.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,22 @@ spec:
131131
value: '{{ .Values.executor.requestLogger.defaultEndpoint }}'
132132
- name: DEFAULT_USER_ID
133133
value: '{{ .Values.defaultUserID }}'
134+
- name: EXECUTOR_DEFAULT_CPU_REQUEST
135+
value: '{{ .Values.executor.resources.cpuRequest }}'
136+
- name: EXECUTOR_DEFAULT_MEMORY_REQUEST
137+
value: '{{ .Values.executor.resources.memoryRequest }}'
138+
- name: EXECUTOR_DEFAULT_CPU_LIMIT
139+
value: '{{ .Values.executor.resources.cpuLimit }}'
140+
- name: EXECUTOR_DEFAULT_MEMORY_LIMIT
141+
value: '{{ .Values.executor.resources.memoryLimit }}'
142+
- name: ENGINE_DEFAULT_CPU_REQUEST
143+
value: '{{ .Values.engine.resources.cpuRequest }}'
144+
- name: ENGINE_DEFAULT_MEMORY_REQUEST
145+
value: '{{ .Values.engine.resources.memoryRequest }}'
146+
- name: ENGINE_DEFAULT_CPU_LIMIT
147+
value: '{{ .Values.engine.resources.cpuLimit }}'
148+
- name: ENGINE_DEFAULT_MEMORY_LIMIT
149+
value: '{{ .Values.engine.resources.memoryLimit }}'
134150
image: '{{ .Values.image.registry }}/{{ .Values.image.repository }}:{{ .Values.image.tag }}'
135151
imagePullPolicy: '{{ .Values.image.pullPolicy }}'
136152
name: manager

helm-charts/seldon-core-operator/values.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@ executor:
4747
registry: docker.io
4848
repository: seldonio/seldon-core-executor
4949
tag: 1.3.0-dev
50+
resources:
51+
cpuLimit: 500m
52+
cpuRequest: 500m
53+
memoryLimit: 512Mi
54+
memoryRequest: 512Mi
5055
prometheus:
5156
path: /prometheus
5257
serviceAccount:
@@ -174,6 +179,11 @@ engine:
174179
registry: docker.io
175180
repository: seldonio/engine
176181
tag: 1.3.0-dev
182+
resources:
183+
cpuLimit: 500m
184+
cpuRequest: 500m
185+
memoryLimit: 512Mi
186+
memoryRequest: 512Mi
177187
logMessagesExternally: false
178188
port: 8000
179189
prometheus:

operator/config/manager/manager.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,22 @@ spec:
125125
value: "http://default-broker"
126126
- name: DEFAULT_USER_ID
127127
value: ''
128+
- name: EXECUTOR_DEFAULT_CPU_REQUEST
129+
value: "0.5"
130+
- name: EXECUTOR_DEFAULT_MEMORY_REQUEST
131+
value: "512Mi"
132+
- name: EXECUTOR_DEFAULT_CPU_LIMIT
133+
value: "0.5"
134+
- name: EXECUTOR_DEFAULT_MEMORY_LIMIT
135+
value: "512Mi"
136+
- name: ENGINE_DEFAULT_CPU_REQUEST
137+
value: "0.5"
138+
- name: ENGINE_DEFAULT_MEMORY_REQUEST
139+
value: "512Mi"
140+
- name: ENGINE_DEFAULT_CPU_LIMIT
141+
value: "0.5"
142+
- name: ENGINE_DEFAULT_MEMORY_LIMIT
143+
value: "512Mi"
128144
image: controller:latest
129145
name: manager
130146
resources:

operator/constants/constants.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,3 +74,15 @@ const (
7474
ExplainerPathSuffix = "-explainer"
7575
ExplainerNameSuffix = "-explainer"
7676
)
77+
78+
// Default resources
79+
const (
80+
DefaultExecutorCpuRequest = "0.5"
81+
DefaultExecutorCpuLimit = "0.5"
82+
DefaultExecutorMemoryRequest = "512Mi"
83+
DefaultExecutorMemoryLimit = "512Mi"
84+
DefaultEngineCpuRequest = "0.5"
85+
DefaultEngineCpuLimit = "0.5"
86+
DefaultEngineMemoryRequest = "512Mi"
87+
DefaultEngineMemoryLimit = "512Mi"
88+
)

operator/controllers/seldondeployment_engine.go

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,14 @@ import (
3535
const (
3636
ENV_DEFAULT_EXECUTOR_SERVER_PORT = "EXECUTOR_SERVER_PORT"
3737
ENV_DEFAULT_EXECUTOR_SERVER_GRPC_PORT = "EXECUTOR_SERVER_GRPC_PORT"
38+
ENV_DEFAULT_EXECUTOR_CPU_REQUEST = "EXECUTOR_DEFAULT_CPU_REQUEST"
39+
ENV_DEFAULT_EXECUTOR_MEMORY_REQUEST = "EXECUTOR_DEFAULT_MEMORY_REQUEST"
40+
ENV_DEFAULT_EXECUTOR_CPU_LIMIT = "EXECUTOR_DEFAULT_CPU_LIMIT"
41+
ENV_DEFAULT_EXECUTOR_MEMORY_LIMIT = "EXECUTOR_DEFAULT_MEMORY_LIMIT"
42+
ENV_DEFAULT_ENGINE_CPU_REQUEST = "ENGINE_DEFAULT_CPU_REQUEST"
43+
ENV_DEFAULT_ENGINE_MEMORY_REQUEST = "ENGINE_DEFAULT_MEMORY_REQUEST"
44+
ENV_DEFAULT_ENGINE_CPU_LIMIT = "ENGINE_DEFAULT_CPU_LIMIT"
45+
ENV_DEFAULT_ENGINE_MEMORY_LIMIT = "ENGINE_DEFAULT_MEMORY_LIMIT"
3846
ENV_EXECUTOR_METRICS_PORT_NAME = "EXECUTOR_SERVER_METRICS_PORT_NAME"
3947
ENV_EXECUTOR_PROMETHEUS_PATH = "EXECUTOR_PROMETHEUS_PATH"
4048
ENV_ENGINE_PROMETHEUS_PATH = "ENGINE_PROMETHEUS_PATH"
@@ -62,6 +70,16 @@ var (
6270
envUseExecutor = os.Getenv(ENV_USE_EXECUTOR)
6371

6472
executorMetricsPortName = utils.GetEnv(ENV_EXECUTOR_METRICS_PORT_NAME, constants.DefaultMetricsPortName)
73+
74+
executorDefaultCpuRequest = utils.GetEnv(ENV_DEFAULT_EXECUTOR_CPU_REQUEST, constants.DefaultExecutorCpuRequest)
75+
executorDefaultCpuLimit = utils.GetEnv(ENV_DEFAULT_EXECUTOR_CPU_LIMIT, constants.DefaultExecutorCpuLimit)
76+
executorDefaultMemoryRequest = utils.GetEnv(ENV_DEFAULT_EXECUTOR_MEMORY_REQUEST, constants.DefaultExecutorMemoryRequest)
77+
executorDefaultMemoryLimit = utils.GetEnv(ENV_DEFAULT_EXECUTOR_MEMORY_LIMIT, constants.DefaultExecutorMemoryLimit)
78+
79+
engineDefaultCpuRequest = utils.GetEnv(ENV_DEFAULT_ENGINE_CPU_REQUEST, constants.DefaultEngineCpuRequest)
80+
engineDefaultCpuLimit = utils.GetEnv(ENV_DEFAULT_ENGINE_CPU_LIMIT, constants.DefaultEngineCpuLimit)
81+
engineDefaultMemoryRequest = utils.GetEnv(ENV_DEFAULT_ENGINE_MEMORY_REQUEST, constants.DefaultEngineMemoryRequest)
82+
engineDefaultMemoryLimit = utils.GetEnv(ENV_DEFAULT_ENGINE_MEMORY_LIMIT, constants.DefaultEngineMemoryLimit)
6583
)
6684

6785
func addEngineToDeployment(mlDep *machinelearningv1.SeldonDeployment, p *machinelearningv1.PredictorSpec, engine_http_port int, engine_grpc_port int, pSvcName string, deploy *appsv1.Deployment) error {
@@ -367,12 +385,31 @@ func createEngineContainer(mlDep *machinelearningv1.SeldonDeployment, p *machine
367385
}
368386

369387
//Engine resources
370-
engineResources := p.SvcOrchSpec.Resources
388+
var engineResources *corev1.ResourceRequirements = p.SvcOrchSpec.Resources
371389
if engineResources == nil {
372-
cpuQuantity, _ := resource.ParseQuantity("0.1")
390+
var cpu_request resource.Quantity
391+
var cpu_limit resource.Quantity
392+
var memory_request resource.Quantity
393+
var memory_limit resource.Quantity
394+
if isExecutorEnabled(mlDep) {
395+
cpu_request = resource.MustParse(executorDefaultCpuRequest)
396+
cpu_limit = resource.MustParse(executorDefaultCpuLimit)
397+
memory_request = resource.MustParse(executorDefaultMemoryRequest)
398+
memory_limit = resource.MustParse(executorDefaultMemoryLimit)
399+
} else {
400+
cpu_request = resource.MustParse(engineDefaultCpuRequest)
401+
cpu_limit = resource.MustParse(engineDefaultCpuLimit)
402+
memory_request = resource.MustParse(engineDefaultMemoryRequest)
403+
memory_limit = resource.MustParse(engineDefaultMemoryLimit)
404+
}
373405
engineResources = &corev1.ResourceRequirements{
374406
Requests: map[corev1.ResourceName]resource.Quantity{
375-
corev1.ResourceCPU: cpuQuantity,
407+
corev1.ResourceCPU: cpu_request,
408+
corev1.ResourceMemory: memory_request,
409+
},
410+
Limits: map[corev1.ResourceName]resource.Quantity{
411+
corev1.ResourceCPU: cpu_limit,
412+
corev1.ResourceMemory: memory_limit,
376413
},
377414
}
378415
}

operator/helm/split_resources.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,14 @@
5757
"MANAGER_CREATE_RESOURCES": "managerCreateResources",
5858
"EXECUTOR_REQUEST_LOGGER_DEFAULT_ENDPOINT": "executor.requestLogger.defaultEndpoint",
5959
"DEFAULT_USER_ID": "defaultUserID",
60+
"EXECUTOR_DEFAULT_CPU_LIMIT": "executor.resources.cpuLimit",
61+
"EXECUTOR_DEFAULT_CPU_REQUEST": "executor.resources.cpuRequest",
62+
"EXECUTOR_DEFAULT_MEMORY_LIMIT": "executor.resources.memoryLimit",
63+
"EXECUTOR_DEFAULT_MEMORY_REQUEST": "executor.resources.memoryRequest",
64+
"ENGINE_DEFAULT_CPU_LIMIT": "engine.resources.cpuLimit",
65+
"ENGINE_DEFAULT_CPU_REQUEST": "engine.resources.cpuRequest",
66+
"ENGINE_DEFAULT_MEMORY_LIMIT": "engine.resources.memoryLimit",
67+
"ENGINE_DEFAULT_MEMORY_REQUEST": "engine.resources.memoryRequest",
6068
}
6169
HELM_VALUES_IMAGE_PULL_POLICY = "{{ .Values.image.pullPolicy }}"
6270

0 commit comments

Comments
 (0)