Bug 2033011

Summary: [release-4.9] spec.cpu.reserved is not set correctly by default if only spec.cpu.isolated is defined in PerformanceProfile
Product: OpenShift Container Platform Reporter: Mario Fernández <mariofer>
Component: Performance Addon OperatorAssignee: Mario Fernández <mariofer>
Status: CLOSED ERRATA QA Contact: Gowrishankar Rajaiyan <grajaiya>
Severity: medium Docs Contact:
Priority: medium    
Version: 4.9CC: aos-bugs, shajmakh, yquinn
Target Milestone: ---   
Target Release: 4.9.z   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Cause: CPU reserved field its not required in CRD. Consequence: CPU reserved can be ommited Fix: Fix documentation and add CPU reserved required Result: Correct Documentation
Story Points: ---
Clone Of:
: 2033292 (view as bug list) Environment:
Last Closed: 2022-01-10 14:42:55 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1986681    
Bug Blocks: 2033292    

Comment 4 Shereen Haj Makhoul 2022-01-05 07:08:46 UTC
Verification:

Versions:
OCP: 4.9.12
PAO: performance-addon-operator-container-v4.9.4-6

# cat performance_profile.yaml 
apiVersion: performance.openshift.io/v2
kind: PerformanceProfile
metadata:
  name: performance
spec:
  cpu:
    isolated: "3-5"
  realTimeKernel:
    enabled: true
  nodeSelector:
    node-role.kubernetes.io/worker-cnf: ""

# oc apply -f  performance_profile.yaml 
The PerformanceProfile "performance" is invalid: spec.cpu.reserved: Required value

# oc get performanceprofile 
No resources found

According to the output above, a PP cannot be created without specifying spec.cpu.reserved value.

Comment 5 Shereen Haj Makhoul 2022-01-06 09:31:20 UTC
A complement to the verification above:

Verify that PAO CRD displays the correct required fields:

oc describe crd performanceprofiles.performance.openshift.io
..
 Description:  CPU defines a set of CPU related parameters.
                Properties:
                  Balance Isolated:
                    Description:  BalanceIsolated toggles whether or not the Isolated CPU set is eligible for load balancing work loads. When this option is set to "false", the Isolated CPU set will be static, meaning workloads have to explicitly assign each thread to a specific cpu in order to work across multiple CPUs. Setting this to "true" allows workloads to be balanced across CPUs. Setting this to "false" offers the most predictable performance for guaranteed workloads, but it offloads the complexity of cpu load balancing to the application. Defaults to "true"
                    Type:         boolean
                  Isolated:
                    Description:  Isolated defines a set of CPUs that will be used to give to application threads the most execution time possible, which means removing as many extraneous tasks off a CPU as possible. It is important to notice the CPU manager can choose any CPU to run the workload except the reserved CPUs. In order to guarantee that your workload will run on the isolated CPU:   1. The union of reserved CPUs and isolated CPUs should include all online CPUs   2. The isolated CPUs field should be the complementary to reserved CPUs field
                    Type:         string
                  Reserved:
                    Description:  Reserved defines a set of CPUs that will not be used for any container workloads initiated by kubelet.
                    Type:         string
                Required:
                  isolated
                  reserved    <========================= 
                Type:  object

according to the CRD description, "reserved" field is now stated as required.

Comment 7 errata-xmlrpc 2022-01-10 14:42:55 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (OpenShift Container Platform 4.9.13 low-latency extras update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2022:0046