Skip to content

Commit 80c70aa

Browse files
authored
Merge pull request #45299 from amolnar-rh/TELCODOCS-425
TELCODOCS-425: Add capability to take CPUs offline via NTO
2 parents 74892cb + 5444bd3 commit 80c70aa

File tree

2 files changed

+60
-17
lines changed

2 files changed

+60
-17
lines changed

modules/cnf-provisioning-real-time-and-low-latency-workloads.adoc

Lines changed: 54 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,20 @@
77
[id="cnf-provisioning-real-time-and-low-latency-workloads_{context}"]
88
= Provisioning real-time and low latency workloads
99

10-
Many industries and organizations need extremely high performance computing and might require low and predictable latency, especially in the financial and telecommunications industries. For these industries, with their unique requirements, {product-title} provides a Performance Addon Operator to implement automatic tuning to achieve low latency performance and consistent response time for {product-title} applications.
10+
Many industries and organizations need extremely high performance computing and might require low and predictable latency, especially in the financial and telecommunications industries. For these industries, with their unique requirements, {product-title} provides the Node Tuning Operator to implement automatic tuning to achieve low latency performance and consistent response time for {product-title} applications.
1111

12-
The cluster administrator can use this performance profile configuration to make these changes in a more reliable way. The administrator can specify whether to update the kernel to kernel-rt (real-time), reserve CPUs for cluster and operating system housekeeping duties, including pod infra containers, and isolate CPUs for application containers to run the workloads.
12+
The cluster administrator can use this performance profile configuration to make these changes in a more reliable way. The administrator can specify whether to update the kernel to kernel-rt (real-time), reserve CPUs for cluster and operating system housekeeping duties, including pod infra containers, isolate CPUs for application containers to run the workloads, and disable unused CPUs to reduce power consumption.
1313

1414
[WARNING]
1515
====
1616
The usage of execution probes in conjunction with applications that require guaranteed CPUs can cause latency spikes. It is recommended to use other probes, such as a properly configured set of network probes, as an alternative.
1717
====
1818

19+
[NOTE]
20+
====
21+
In earlier versions of {product-title}, the Performance Addon Operator was used to implement automatic tuning to achieve low latency performance for OpenShift applications. In {product-title} 4.11 and later, these functions are part of the Node Tuning Operator.
22+
====
23+
1924
[id="performance-addon-operator-known-limitations-for-real-time_{context}"]
2025
== Known limitations for real-time
2126

@@ -39,8 +44,6 @@ Establishing the right performance expectations refers to the fact that the real
3944
[id="performance-addon-operator-provisioning-worker-with-real-time-capabilities_{context}"]
4045
== Provisioning a worker with real-time capabilities
4146

42-
. Install Performance Addon Operator to the cluster.
43-
4447
. Optional: Add a node to the {product-title} cluster.
4548
See link:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux_for_real_time/8/html-single/tuning_guide/index#Setting_BIOS_parameters[Setting BIOS parameters].
4649

@@ -75,7 +78,7 @@ Note that a machine config pool worker-rt is created for group of nodes that hav
7578
+
7679
[NOTE]
7780
====
78-
You must decide which nodes are configured with real-time workloads. You could configure all of the nodes in the cluster, or a subset of the nodes. The Performance Addon Operator that expects all of the nodes are part of a dedicated machine config pool. If you use all of the nodes, you must point the Performance Addon Operator to the worker node role label. If you use a subset, you must group the nodes into a new machine config pool.
81+
You must decide which nodes are configured with real-time workloads. You could configure all of the nodes in the cluster, or a subset of the nodes. The Node Tuning Operator that expects all of the nodes are part of a dedicated machine config pool. If you use all of the nodes, you must point the Node Tuning Operator to the worker node role label. If you use a subset, you must group the nodes into a new machine config pool.
7982
====
8083
. Create the `PerformanceProfile` with the proper set of housekeeping cores and `realTimeKernel: enabled: true`.
8184

@@ -230,7 +233,7 @@ status:
230233

231234
* The pod must have the `cpu-load-balancing.crio.io: true` annotation.
232235

233-
The Performance Addon Operator is responsible for the creation of the high-performance runtime handler config snippet under relevant nodes and for creation of the high-performance runtime class under the cluster. It will have the same content as default runtime handler except it enables the CPU load balancing configuration functionality.
236+
The Node Tuning Operator is responsible for the creation of the high-performance runtime handler config snippet under relevant nodes and for creation of the high-performance runtime class under the cluster. It will have the same content as default runtime handler except it enables the CPU load balancing configuration functionality.
234237

235238
To disable the CPU load balancing for the pod, the `Pod` specification must include the following fields:
236239

@@ -278,4 +281,48 @@ For more information, see link:https://access.redhat.com/documentation/en-us/ope
278281
[id="performance-addon-operator-scheduling-workload-onto-worker-with-real-time-capabilities_{context}"]
279282
== Scheduling a workload onto a worker with real-time capabilities
280283

281-
Use label selectors that match the nodes attached to the machine config pool that was configured for low latency by the Performance Addon Operator. For more information, see link:https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/[Assigning pods to nodes].
284+
Use label selectors that match the nodes attached to the machine config pool that was configured for low latency by the Node Tuning Operator. For more information, see link:https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/[Assigning pods to nodes].
285+
286+
[id="node-tuning-operator-disabling-CPUs-for-power-consumption_{context}"]
287+
== Reducing power consumption by taking CPUs offline
288+
289+
You can generally anticipate telecommunication workloads. When not all of the CPU resources are required, the Node Tuning Operator allows you take unused CPUs offline to reduce power consumption by manually updating the performance profile.
290+
291+
To take unused CPUs offline, you must perform the following tasks:
292+
293+
. Set the offline CPUs in the performance profile and save the contents of the YAML file:
294+
+
295+
.Example performance profile with offlined CPUs
296+
[source,yaml]
297+
----
298+
apiVersion: performance.openshift.io/v2
299+
kind: PerformanceProfile
300+
metadata:
301+
name: performance
302+
spec:
303+
additionalKernelArgs:
304+
- nmi_watchdog=0
305+
- audit=0
306+
- mce=off
307+
- processor.max_cstate=1
308+
- intel_idle.max_cstate=0
309+
- idle=poll
310+
cpu:
311+
isolated: "2-23,26-47"
312+
reserved: "0,1,24,25"
313+
offlined: “48-59” <1>
314+
nodeSelector:
315+
node-role.kubernetes.io/worker-cnf: ""
316+
numa:
317+
topologyPolicy: single-numa-node
318+
realTimeKernel:
319+
enabled: true
320+
----
321+
<1> Optional. You can list CPUs in the `offlined` field to take the specified CPUs offline.
322+
323+
. Apply the updated profile by running the following command:
324+
+
325+
[source,terminal]
326+
----
327+
$ oc apply -f my-performance-profile.yaml
328+
----

modules/cnf-running-the-performance-creator-profile.adoc

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44

55
:_content-type: PROCEDURE
66
[id="running-the-performance-profile-profile-cluster-using-podman_{context}"]
7-
= Running the Performance Profile Creator using `podman`
7+
= Running the Performance Profile Creator using podman
88

99
As a cluster administrator, you can run `podman` and the Performance Profile Creator to create a performance profile.
1010

1111
.Prerequisites
1212

1313
* Access to the cluster as a user with the `cluster-admin` role.
14-
* A cluster installed on bare metal hardware.
14+
* A cluster installed on bare-metal hardware.
1515
* A node with `podman` and OpenShift CLI (`oc`) installed.
1616
* Access to the Node Tuning Operator image.
1717
@@ -131,7 +131,7 @@ $ cat my-performance-profile.yaml
131131
----
132132
.Example output
133133
+
134-
[source,terminal]
134+
[source,yaml]
135135
----
136136
apiVersion: performance.openshift.io/v2
137137
kind: PerformanceProfile
@@ -146,8 +146,9 @@ spec:
146146
- intel_idle.max_cstate=0
147147
- idle=poll
148148
cpu:
149-
isolated: 1,3,5,7,9,11,13,15,17,19-39,41,43,45,47,49,51,53,55,57,59-79
150-
reserved: 0,2,4,6,8,10,12,14,16,18,40,42,44,46,48,50,52,54,56,58
149+
isolated: "1,3,5,7,9,11,13,15,17,19-39,41,43,45,47,49,51,53,55,57"
150+
reserved: "0,2,4,6,8,10,12,14,16,18,40,42,44,46,48,50,52,54,56,58"
151+
offlined: "59-79"
151152
nodeSelector:
152153
node-role.kubernetes.io/worker-cnf: ""
153154
numa:
@@ -158,11 +159,6 @@ spec:
158159

159160
. Apply the generated profile:
160161
+
161-
[NOTE]
162-
====
163-
Install the Performance Addon Operator before applying the profile.
164-
====
165-
+
166162
[source,terminal]
167163
----
168164
$ oc apply -f my-performance-profile.yaml

0 commit comments

Comments
 (0)