Uploaded image for project: 'OpenShift Bugs'
  1. OpenShift Bugs
  2. OCPBUGS-41857

perfomance profile overrides systemReserved memory set by autosizing

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Undefined Undefined
    • None
    • 4.16.z
    • Node Tuning Operator
    • None
    • Important
    • None
    • False
    • Hide

      None

      Show
      None
    • Hide
      10/01/25: YELLOW The issue is understood and the NTO part of the fix is easy, but it requires invasive changes to MCO auto sizing scripts too
      19/09/24: A conflict between two OCP features that is making the product less pleasant to use. A manual workaround exists, but as usual.. humans can forget, make errors, etc. We have known about this for few releases and maybe we should prioritize it now.
      Show
      10/01/25: YELLOW The issue is understood and the NTO part of the fix is easy, but it requires invasive changes to MCO auto sizing scripts too 19/09/24: A conflict between two OCP features that is making the product less pleasant to use. A manual workaround exists, but as usual.. humans can forget, make errors, etc. We have known about this for few releases and maybe we should prioritize it now.

      Description of problem:

      When applying a performance profile in a cluster, the resultant kubeletconfig gets unwanted systemReserved memory value of 500Mi.

      Version-Release number of selected component (if applicable):

      v4.16 
      

      Steps to reproduce:

      • create performanceprofile
      apiVersion: performance.openshift.io/v2
      kind: PerformanceProfile
      metadata:
        annotations:
          kubeletconfig.experimental: |
            { "shutdownGracePeriod":"30s",
              "shutdownGracePeriodCriticalPods":"10s",
              "allowedUnsafeSysctls":[
                "net.ipv6.conf.default.autoconf",
                "net.ipv6.conf.default.accept_ra",
                "net.ipv6.conf.all.forwarding",
                "net.ipv4.conf.all.forwarding"
              ]
            }
        name: perf-sno
      spec:
        cpu:
          balanceIsolated: true
          isolated: 2-3
          reserved: 0-1
        hugepages:
          defaultHugepagesSize: 1G
          pages:
          - count: 1
            node: 0
            size: 1G
        machineConfigPoolSelector:
          pools.operator.machineconfiguration.openshift.io/worker: ""
        nodeSelector:
          node-role.kubernetes.io/worker: ""
      
      • check the resultant kubeletconfig
      [quickcluster@upi-0 ~]$ oc get kubeletconfig performance-perf-sno -o yaml
      apiVersion: machineconfiguration.openshift.io/v1
      kind: KubeletConfig
      metadata:
        annotations:
          machineconfiguration.openshift.io/mc-name-suffix: ""
        creationTimestamp: "2024-09-11T09:55:38Z"
        finalizers:
        - 99-worker-generated-kubelet
        generation: 1
        name: performance-perf-sno
        ownerReferences:
        - apiVersion: performance.openshift.io/v2
          blockOwnerDeletion: true
          controller: true
          kind: PerformanceProfile
          name: perf-sno
          uid: f04d20c0-2a9c-4e21-b353-fe6ab9568a3f
        resourceVersion: "369603"
        uid: 6ffdf5ac-0a4c-4f32-b9cd-8e3bf6758e09
      spec:
        kubeletConfig:
          allowedUnsafeSysctls:
          - net.ipv6.conf.default.autoconf
          - net.ipv6.conf.default.accept_ra
          - net.ipv6.conf.all.forwarding
          - net.ipv4.conf.all.forwarding
          apiVersion: kubelet.config.k8s.io/v1beta1
          authentication:
            anonymous: {}
            webhook:
              cacheTTL: 0s
            x509: {}
          authorization:
            webhook:
              cacheAuthorizedTTL: 0s
              cacheUnauthorizedTTL: 0s
          containerRuntimeEndpoint: ""
          cpuManagerPolicy: static
          cpuManagerReconcilePeriod: 5s
          evictionHard:
            imagefs.available: 15%
            memory.available: 100Mi
            nodefs.available: 10%
            nodefs.inodesFree: 5%
          evictionPressureTransitionPeriod: 0s
          fileCheckFrequency: 0s
          httpCheckFrequency: 0s
          imageMaximumGCAge: 0s
          imageMinimumGCAge: 0s
          kind: KubeletConfiguration
          kubeReserved:
            memory: 500Mi 
          logging:
            flushFrequency: 0
            options:
              json:
                infoBufferSize: "0"
            verbosity: 0
          memorySwap: {}
          nodeStatusReportFrequency: 0s
          nodeStatusUpdateFrequency: 0s
          reservedSystemCPUs: 0-1
          runtimeRequestTimeout: 0s
          shutdownGracePeriod: 30s
          shutdownGracePeriodCriticalPods: 10s
          streamingConnectionIdleTimeout: 0s
          syncFrequency: 0s
          systemReserved:
            memory: 500Mi 
          topologyManagerPolicy: best-effort
          volumeStatsAggPeriod: 0s
        machineConfigPoolSelector:
          matchLabels:
            pools.operator.machineconfiguration.openshift.io/worker: ""
      status:
        conditions:
        - lastTransitionTime: "2024-09-11T09:55:38Z"
          message: Success
          status: "True"
          type: Success
      

      How reproducible:

      • always reproducible

      Actual results:

      Resultant kubeletconfig after applying a performanceprofile has unwanted systemReserved memory value of 500Mi

      Expected results:

      Applying a performance profile doesn't change systemReserved memory 

      Additional info:

       

              msivak@redhat.com Martin Sivak
              rhn-support-ldavidde Luca Davidde
              Mallapadi Niranjan Mallapadi Niranjan
              Votes:
              3 Vote for this issue
              Watchers:
              16 Start watching this issue

                Created:
                Updated: