Behavior of CPU manager with realtime and cpu-partitioning tuned profiles
Issue
OpenShift provides the Performance Addon Operator and the Cluster Node Tuning Operator for fine tuning your workers for low-latency applications. Unfortunately both relies on Machine Config Operator to work. This means they won't work if your workers are RHEL based.
Tuned profiles: realtime or cpu-partitioning
If you use RHEL workers, both profiles will provide CPU isolation when configured. The major difference between them is how they achieve isolation:
- realtime profile will use the "isolcpus" kernel parameter.
- cpu-partitioning profile will use the systemd CPU affinity parameter and the "rcu_nocbs" kernel parameter.
CPU manager
Since we cannot use PAO (nor NTO) with RHEL workers, we need to rely directly on CPU Manager to constraints workload to specific CPUs.
The results are different depending on the type of pod and the tuned profile used:
Tuned Profile | Guaranteed Pod | Burstable Pod |
---|---|---|
realtime | isolated CPUs assigned, but workload running only on the first CPU [1] | non-isolated CPUs assigned |
cpu-partitioning | isolated CPUs assigned | isolated and non-isolated CPUs assigned [2] |
Environment
- Red Hat OpenShift 4.x
- Red Hat Enterprise Linux 7 or 8 (workers)
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.