Bug 2031010

Summary: CPU throttling on pods with isolated and pinned CPUs
Product: Red Hat Enterprise Linux 8 Reporter: sreekanth <skudupud>
Component: kernelAssignee: Phil Auld <pauld>
kernel sub component: Scheduler QA Contact: Chunyu Hu <chuhu>
Status: CLOSED NOTABUG Docs Contact:
Severity: medium    
Priority: unspecified CC: ailan, alukiano, bhu, blitton, cgaynor, jlelli, jmario, kcarcia, keyoung, kwalker, lcapitulino, mfiedler, mtosatti, sscheink
Version: 8.4   
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2022-01-07 18:00:21 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:

Comment 1 sreekanth 2021-12-10 10:19:23 UTC
A correction to the Additional info section:
============================================


- The issue is seen with/without HT.
- That is, an issue is seen when allocating 3 CPU cores (Hyperthreaded or not) but not with 4 CPU cores, with or without HT


HT enabled (again, 3 cores issue is visible and 4 cores, no issue is seen)
==========
 - pinned to a single thread from the core, we cannot see the issue.
 - pinned to 2 threads from the same core, we can see the issue.

HT disabled
===========
 - pinned to 3 individual cores = can see the issue
 - pinned to 4 individual cores = no issue.

Comment 7 Artyom 2021-12-20 09:06:36 UTC
We have a similar u/s issue related to the CPU throttling for containers with exclusive CPUs - https://github.com/kubernetes/kubernetes/issues/70585.

Comment 8 Martin Sivák 2021-12-20 11:24:26 UTC
If that is the issue, then the CPU quota can be disabled on OCP with PAO using an annotation on the workload pod and the proper runtime class:

Make sure the pod has the following annotation set: 

annotations:
    cpu-quota.crio.io: "disable"

and that the runtimeClassName is defined in the pod:

spec:
    runtimeClassName: <name of performance class from oc get performanceprofile's status section>