From 2a60787db5d8011de0b2b9ea64ba8759bd3612d6 Mon Sep 17 00:00:00 2001 From: ewezy Date: Fri, 24 May 2024 11:00:03 +0800 Subject: [PATCH] Refactor cpu limit as nullable field --- .../cluster/servicebuilder/service_builder.go | 19 +++++++++++-------- api/turing/models/resource_request.go | 2 +- api/turing/models/resource_request_test.go | 1 - 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/api/turing/cluster/servicebuilder/service_builder.go b/api/turing/cluster/servicebuilder/service_builder.go index 06abe5c8d..67a13eb4a 100644 --- a/api/turing/cluster/servicebuilder/service_builder.go +++ b/api/turing/cluster/servicebuilder/service_builder.go @@ -405,15 +405,18 @@ func (sb *clusterSvcBuilder) getTopologySpreadConstraints() ([]corev1.TopologySp } func (sb *clusterSvcBuilder) getCPULimit(resourceRequest *models.ResourceRequest) *resource.Quantity { - if resourceRequest != nil && resourceRequest.CPULimit.IsZero() { - if sb.knativeServiceConfig.UserContainerCPULimitRequestFactor != 0 { - cpuLimit := cluster.ComputeResource(resourceRequest.CPURequest, - sb.knativeServiceConfig.UserContainerCPULimitRequestFactor) - return &cpuLimit + if resourceRequest != nil { + if resourceRequest.CPULimit == nil || resourceRequest.CPULimit.IsZero() { + if sb.knativeServiceConfig.UserContainerCPULimitRequestFactor != 0 { + cpuLimit := cluster.ComputeResource(resourceRequest.CPURequest, + sb.knativeServiceConfig.UserContainerCPULimitRequestFactor) + return &cpuLimit + } + return nil } - return nil + return resourceRequest.CPULimit } - return &resourceRequest.CPULimit + return nil } func (sb *clusterSvcBuilder) getMemoryLimit(resourceRequest *models.ResourceRequest) *resource.Quantity { @@ -427,7 +430,7 @@ func (sb *clusterSvcBuilder) getMemoryLimit(resourceRequest *models.ResourceRequ func (sb *clusterSvcBuilder) getEnvVars(resourceRequest *models.ResourceRequest, userEnvVars *models.EnvVars) (newEnvVars []corev1.EnvVar) { - if resourceRequest != nil && resourceRequest.CPULimit.IsZero() && + if resourceRequest != nil && resourceRequest.CPULimit != nil && resourceRequest.CPULimit.IsZero() && sb.knativeServiceConfig.UserContainerCPULimitRequestFactor == 0 { newEnvVars = append(newEnvVars, sb.knativeServiceConfig.DefaultEnvVarsWithoutCPULimits...) } diff --git a/api/turing/models/resource_request.go b/api/turing/models/resource_request.go index cba2fbc62..ab4dcf764 100644 --- a/api/turing/models/resource_request.go +++ b/api/turing/models/resource_request.go @@ -17,7 +17,7 @@ type ResourceRequest struct { // CPU request of inference service CPURequest resource.Quantity `json:"cpu_request"` // CPU limit of inference service - CPULimit resource.Quantity `json:"cpu_limit"` + CPULimit *resource.Quantity `json:"cpu_limit,omitempty"` // Memory request of inference service MemoryRequest resource.Quantity `json:"memory_request"` } diff --git a/api/turing/models/resource_request_test.go b/api/turing/models/resource_request_test.go index b384a03c0..ac4ed9022 100644 --- a/api/turing/models/resource_request_test.go +++ b/api/turing/models/resource_request_test.go @@ -27,7 +27,6 @@ func TestResourceRequestValue(t *testing.T) { "min_replica": 1, "max_replica": 2, "cpu_request": "500m", - "cpu_limit":"0", "memory_request": "1Gi" } `, string(byteValue))