Bug 2002313

Summary: Kubevirt doesn't respect cpuAllocationRatio
Product: Container Native Virtualization (CNV) Reporter: Erkan Erol <eerol>
Component: VirtualizationAssignee: Vladik Romanovsky <vromanso>
Status: CLOSED ERRATA QA Contact: Kedar Bidarkar <kbidarka>
Severity: high Docs Contact:
Priority: high    
Version: 4.8.1CC: cnv-qe-bugs, kbidarka, sgott, vromanso
Target Milestone: ---   
Target Release: 4.9.1   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: virt-operator-container-v4.9.1-4 hco-bundle-registry-container-v4.9.1-15 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 2004950 (view as bug list) Environment:
Last Closed: 2021-12-13 19:59:01 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:    
Bug Blocks: 2004950    

Description Erkan Erol 2021-09-08 14:17:40 UTC
Description of problem:


I installed OpenShift Virtualization 4.8.1 and created different VMs with different specs. I used different numbers for cpu core field. However, Kubevirt doesn't change the requested cpu amount in virt-launcher spec. It was always 100m. 

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


Actual results:
All virt-launcher pods contains the same amount of cpu. 100m


Expected results: It should be proportional to VM spec as explained here: http://kubevirt.io/user-guide/operations/node_overcommit/#node-cpu-allocation-ratio


Additional info: HCO is not setting cpuAllocationRatio in Kubevirt and it is empty by default.

Comment 1 Kedar Bidarkar 2021-09-08 18:45:46 UTC
Tried to reproduce this:

a) Explicitly set the "cpuAllocationRatio" value via the JSON Annotation Patch.

]$ oc annotate --overwrite -n openshift-cnv hyperconverged kubevirt-hyperconverged kubevirt.kubevirt.io/jsonpatch='[{
      "op": "add",
      "path": "/spec/configuration/developerConfiguration/cpuAllocationRatio",
      "value": 20
  }]'

b) Value appears set correctly

]$ oc get kubevirt kubevirt-kubevirt-hyperconverged -n openshift-cnv -o yaml | grep -A 5 "configuration:"
  configuration:
    developerConfiguration:
      cpuAllocationRatio: 20
      diskVerification:
        memoryLimit: 2G
      featureGates:

c) I had set the "cores" count under "cpu" as 6
]$ oc get vmi vm22-rhel84-ocs -o yaml | grep -A 5 "cpu:"
    cpu:
      cores: 6
      sockets: 1
      threads: 1
---

d) virt-launcher pod shows "cpu: 100m" 

]$ oc get pod virt-launcher-vm22-rhel84-ocs-sv46l -o yaml | grep "cpu:"
        cpu: 100m

POD CPU request = number of vCPUs * 1/cpuAllocationRatio

Probably the expected value should have been  6/20 = 330m or 300m , IIUC

---
e) 
Logged into the VM and checked for the nproc value. It is indeed 6.

[cloud-user@vm22-rhel84-ocs ~]$ nproc
6

Comment 2 Kedar Bidarkar 2021-09-08 18:47:41 UTC
comment1 stuff was reproduced on CNV-4.9.0.

Comment 3 Vladik Romanovsky 2021-09-13 15:30:09 UTC
I've posted https://github.com/kubevirt/kubevirt/pull/6374 to fix this.

Comment 4 Kedar Bidarkar 2021-11-09 12:54:46 UTC
With the following:
[kbidarka@localhost ocs]$ oc get vmi vm-rhel84-ocs -o yaml | grep -A 5 "cpu:"
--
    cpu:
      cores: 6
      sockets: 1
      threads: 1

---


[kbidarka@localhost ocs]$ oc get pod virt-launcher-vm-rhel84-ocs-xkphg -o yaml | grep "cpu:"
                f:cpu: {}
        cpu: 300m
[kbidarka@localhost ocs]$ oc get kubevirt kubevirt-kubevirt-hyperconverged -n openshift-cnv -o yaml | grep -A 5 "configuration:"
--
  configuration:
    developerConfiguration:
      cpuAllocationRatio: 20
      diskVerification:
        memoryLimit: 2G
      featureGates:


---

With default value of "cpuAllocationRatio" as 10

[kbidarka@localhost ocs]$ oc get pod virt-launcher-vm-rhel84-ocs-g9kx7 -o yaml | grep "cpu:"
                f:cpu: {}
        cpu: 600m

---

VERIFIED with virt-operator-container-v4.9.1-4

Comment 10 errata-xmlrpc 2021-12-13 19:59:01 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 Virtualization 4.9.1 Images), 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-2021:5091