diff --git a/config/crd/bases/config.katalyst.kubewharf.io_adminqosconfigurations.yaml b/config/crd/bases/config.katalyst.kubewharf.io_adminqosconfigurations.yaml index 53f21339..194e5c5d 100644 --- a/config/crd/bases/config.katalyst.kubewharf.io_adminqosconfigurations.yaml +++ b/config/crd/bases/config.katalyst.kubewharf.io_adminqosconfigurations.yaml @@ -527,6 +527,26 @@ spec: type: number type: object type: object + fineGrainedResourceConfig: + description: FineGrainedResourceConfig stores configurations related + to fine-grained resource management + properties: + cpuBurstConfig: + description: CPUBurstConfig stores cpu burst related configurations + properties: + cpuBurstPercent: + description: CPUBurstPercent identifies the upper limit + of the allowed burst percent optional + format: int64 + minimum: 0 + type: integer + cpuBurstPolicy: + description: 'CPUBurstPolicy indicates which policy to + enable the cpu burst feature. Optional values: none/static/dynamic + Default value: none optional' + type: string + type: object + type: object reclaimedResourceConfig: description: ReclaimedResourceConfig is a configuration for reclaim resource diff --git a/pkg/apis/config/v1alpha1/adminqos.go b/pkg/apis/config/v1alpha1/adminqos.go index d412d539..36334c1f 100644 --- a/pkg/apis/config/v1alpha1/adminqos.go +++ b/pkg/apis/config/v1alpha1/adminqos.go @@ -75,6 +75,10 @@ type AdminQoSConfig struct { // +optional AdvisorConfig *AdvisorConfig `json:"advisorConfig,omitempty"` + + // FineGrainedResourceConfig stores configurations related to fine-grained resource management + // +optional + FineGrainedResourceConfig *FineGrainedResourceConfig `json:"fineGrainedResourceConfig,omitempty"` } type ReclaimedResourceConfig struct { @@ -128,6 +132,12 @@ type AdvisorConfig struct { MemoryAdvisorConfig *MemoryAdvisorConfig `json:"memoryAdvisorConfig,omitempty"` } +type FineGrainedResourceConfig struct { + // CPUBurstConfig stores cpu burst related configurations + // +optional + CPUBurstConfig *CPUBurstConfig `json:"cpuBurstConfig,omitempty"` +} + type CPUAdvisorConfig struct { // AllowSharedCoresOverlapReclaimedCores is a flag, when enabled, // we will rely on kernel features to ensure that shared_cores pods can suppress and preempt reclaimed_cores pods. @@ -621,3 +631,16 @@ type NumaEvictionRankingMetric string // system level // +kubebuilder:validation:Enum=qos.pod;priority.pod;mem.usage.container;native.qos.pod;owner.pod type SystemEvictionRankingMetric string + +type CPUBurstConfig struct { + // CPUBurstPolicy indicates which policy to enable the cpu burst feature. + // Optional values: none/static/dynamic + // Default value: none + // optional + CPUBurstPolicy string `json:"cpuBurstPolicy,omitempty"` + + // CPUBurstPercent identifies the upper limit of the allowed burst percent + // +kubebuilder:validation:Minimum=0 + // optional + CPUBurstPercent *int64 `json:"cpuBurstPercent,omitempty"` +} diff --git a/pkg/apis/config/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/config/v1alpha1/zz_generated.deepcopy.go index 88fbd487..186e0165 100644 --- a/pkg/apis/config/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/config/v1alpha1/zz_generated.deepcopy.go @@ -86,6 +86,11 @@ func (in *AdminQoSConfig) DeepCopyInto(out *AdminQoSConfig) { *out = new(AdvisorConfig) (*in).DeepCopyInto(*out) } + if in.FineGrainedResourceConfig != nil { + in, out := &in.FineGrainedResourceConfig, &out.FineGrainedResourceConfig + *out = new(FineGrainedResourceConfig) + (*in).DeepCopyInto(*out) + } return } @@ -410,6 +415,27 @@ func (in *CPUAdvisorConfig) DeepCopy() *CPUAdvisorConfig { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CPUBurstConfig) DeepCopyInto(out *CPUBurstConfig) { + *out = *in + if in.CPUBurstPercent != nil { + in, out := &in.CPUBurstPercent, &out.CPUBurstPercent + *out = new(int64) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CPUBurstConfig. +func (in *CPUBurstConfig) DeepCopy() *CPUBurstConfig { + if in == nil { + return nil + } + out := new(CPUBurstConfig) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *CPUHeadroomConfig) DeepCopyInto(out *CPUHeadroomConfig) { *out = *in @@ -868,6 +894,27 @@ func (in *EvictionConfig) DeepCopy() *EvictionConfig { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FineGrainedResourceConfig) DeepCopyInto(out *FineGrainedResourceConfig) { + *out = *in + if in.CPUBurstConfig != nil { + in, out := &in.CPUBurstConfig, &out.CPUBurstConfig + *out = new(CPUBurstConfig) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FineGrainedResourceConfig. +func (in *FineGrainedResourceConfig) DeepCopy() *FineGrainedResourceConfig { + if in == nil { + return nil + } + out := new(FineGrainedResourceConfig) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *GenericConfigCondition) DeepCopyInto(out *GenericConfigCondition) { *out = *in diff --git a/pkg/consts/qos.go b/pkg/consts/qos.go index 40297e0d..a8636a97 100644 --- a/pkg/consts/qos.go +++ b/pkg/consts/qos.go @@ -107,6 +107,23 @@ const ( // // - this enhancement is only supported for shared-cores, for now and foreseeable future PodAnnotationCPUEnhancementSuppressionToleranceRate = "suppression_tolerance_rate" + + // PodAnnotationCPUEnhancementCPUBurstPolicy indicates which policy to enable the cpu burst feature. + // Optional values: none/static/dynamic + // Default value: none + PodAnnotationCPUEnhancementCPUBurstPolicy = "cpu_burst_policy" + + // PodAnnotationCPUEnhancementCPUBurstPolicyNone is the value of cpu burst policy none + PodAnnotationCPUEnhancementCPUBurstPolicyNone = "none" + + // PodAnnotationCPUEnhancementCPUBurstPolicyStatic is the value of cpu burst policy static + PodAnnotationCPUEnhancementCPUBurstPolicyStatic = "static" + + // PodAnnotationCPUEnhancementCPUBurstPolicyDynamic is the value of cpu burst policy dynamic + PodAnnotationCPUEnhancementCPUBurstPolicyDynamic = "dynamic" + + // PodAnnotationCPUEnhancementCPUBurstPercent identifies the upper limit of the allowed burst percent + PodAnnotationCPUEnhancementCPUBurstPercent = "cpu_burst_percent" ) // const variables for pod annotations about qos level enhancement in network