From ac623ef07ebf7ffcc9eb5ab0a4968d27ef65cf7a Mon Sep 17 00:00:00 2001 From: liuqx Date: Wed, 23 Aug 2023 14:19:44 +0800 Subject: [PATCH] fix: Add the configuration to meet the load cpu and memory usage. Stop the recommendation --- .../recommender/resource/recommend.go | 15 ++++-- .../recommender/resource/registry.go | 46 +++++++++++-------- 2 files changed, 38 insertions(+), 23 deletions(-) diff --git a/pkg/recommendation/recommender/resource/recommend.go b/pkg/recommendation/recommender/resource/recommend.go index f03f8fc5a..4e0d7bfc1 100644 --- a/pkg/recommendation/recommender/resource/recommend.go +++ b/pkg/recommendation/recommender/resource/recommend.go @@ -174,9 +174,18 @@ func (rr *ResourceRecommender) Recommend(ctx *framework.RecommendationContext) e memQuantity = &normalizedMem } } - - cr.Target[corev1.ResourceCPU] = cpuQuantity.String() - cr.Target[corev1.ResourceMemory] = memQuantity.String() + // Resource Compliance recommendation enabled + if rr.ResourceComplianceRecommendation { + cr.Target[corev1.ResourceCPU] = cpuQuantity.String() + cr.Target[corev1.ResourceMemory] = memQuantity.String() + } else { + if *cpuQuantity != c.Resources.Requests[corev1.ResourceCPU] { + cr.Target[corev1.ResourceCPU] = cpuQuantity.String() + } + if *memQuantity != c.Resources.Requests[corev1.ResourceMemory] { + cr.Target[corev1.ResourceMemory] = memQuantity.String() + } + } newContainerSpec := corev1.Container{ Name: c.Name, diff --git a/pkg/recommendation/recommender/resource/registry.go b/pkg/recommendation/recommender/resource/registry.go index 438c61014..ccfdc014a 100644 --- a/pkg/recommendation/recommender/resource/registry.go +++ b/pkg/recommendation/recommender/resource/registry.go @@ -14,26 +14,27 @@ var _ recommender.Recommender = &ResourceRecommender{} type ResourceRecommender struct { base.BaseRecommender - CpuSampleInterval string - CpuRequestPercentile string - CpuRequestMarginFraction string - CpuTargetUtilization string - CpuModelHistoryLength string - MemSampleInterval string - MemPercentile string - MemMarginFraction string - MemTargetUtilization string - MemHistoryLength string - OOMProtection bool - OOMHistoryLength time.Duration - OOMBumpRatio float64 - Specification bool - SpecificationConfigs []Specification - CpuHistogramBucketSize string - CpuHistogramMaxValue string - MemHistogramBucketSize string - MemHistogramMaxValue string - HistoryCompletionCheck bool + CpuSampleInterval string + CpuRequestPercentile string + CpuRequestMarginFraction string + CpuTargetUtilization string + CpuModelHistoryLength string + MemSampleInterval string + MemPercentile string + MemMarginFraction string + MemTargetUtilization string + MemHistoryLength string + OOMProtection bool + OOMHistoryLength time.Duration + OOMBumpRatio float64 + Specification bool + SpecificationConfigs []Specification + CpuHistogramBucketSize string + CpuHistogramMaxValue string + MemHistogramBucketSize string + MemHistogramMaxValue string + HistoryCompletionCheck bool + ResourceComplianceRecommendation bool } func init() { @@ -94,6 +95,10 @@ func NewResourceRecommender(recommender apis.Recommender, recommendationRule ana if err != nil { return nil, err } + resourceComplianceRecommendation, err := recommender.GetConfigBool("resource-compliance-recommendation-check", false) + if err != nil { + return nil, err + } return &ResourceRecommender{ *base.NewBaseRecommender(recommender), @@ -117,5 +122,6 @@ func NewResourceRecommender(recommender apis.Recommender, recommendationRule ana memHistogramBucketSize, memHistogramMaxValue, historyCompletion, + resourceComplianceRecommendation, }, nil }