You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
= About Hyper-Threading for low latency and real-time applications
8
8
9
-
Hyper-Threading is an Intel processor technology that allows a physical CPU processor core to function as two logical cores, executing two independent threads simultaneously. Hyper-Threading allows for better system throughput for certain workload types where parallel processing is beneficial. The default {product-title} configuration expects Hyper-Threading to be enabled by default.
9
+
Hyper-Threading is an Intel processor technology that allows a physical CPU processor core to function as two logical cores, executing two independent threads simultaneously. Hyper-Threading allows for better system throughput for certain workload types where parallel processing is beneficial. The default {product-title} configuration expects Hyper-Threading to be enabled.
10
10
11
-
For telecommunications applications, it is important to design your application infrastructure to minimize latency as much as possible. Hyper-Threading can slow performance times and negatively affect throughput for computeintensive workloads that require low latency. Disabling Hyper-Threading ensures predictable performance and can decrease processing times for these workloads.
11
+
For telecommunications applications, it is important to design your application infrastructure to minimize latency as much as possible. Hyper-Threading can slow performance times and negatively affect throughput for compute-intensive workloads that require low latency. Disabling Hyper-Threading ensures predictable performance and can decrease processing times for these workloads.
== Disabling Hyper-Threading for low latency applications
94
94
95
-
When configuring clusters for low latency processing, consider whether you want to disable Hyper-Threading before you deploy the cluster. To disable Hyper-Threading, do the following:
95
+
When configuring clusters for low latency processing, consider whether you want to disable Hyper-Threading before you deploy the cluster. To disable Hyper-Threading, perform the following steps:
96
96
97
97
. Create a performance profile that is appropriate for your hardware and topology.
98
98
. Set `nosmt` as an additional kernel argument. The following example performance profile illustrates this setting:
<1> The `max_perf_pct` controls the maximum frequency the `cpufreq` driver is allowed to set as a percentage of the maximum supported cpu frequency. This value applies to all CPUs. You can check the maximum supported frequency in `/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq`. As a starting point, you can use a percentage that caps all CPUs at the `All Cores Turbo` frequency. The `All Cores Turbo` frequency is the frequency that all cores will run at when the cores are all fully occupied.
77
+
<1> The `max_perf_pct` controls the maximum frequency that the `cpufreq` driver is allowed to set as a percentage of the maximum supported cpu frequency. This value applies to all CPUs. You can check the maximum supported frequency in `/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq`. As a starting point, you can use a percentage that caps all CPUs at the `All Cores Turbo` frequency. The `All Cores Turbo` frequency is the frequency that all cores will run at when the cores are all fully occupied.
Copy file name to clipboardExpand all lines: modules/cnf-configuring-workload-hints.adoc
+1-1
Original file line number
Diff line number
Diff line change
@@ -33,7 +33,7 @@
33
33
When the `realTime` workload hint flag is set to `true` in a performance profile, add the `cpu-quota.crio.io: disable` annotation to every guaranteed pod with pinned CPUs. This annotation is necessary to prevent the degradation of the process performance within the pod. If the `realTime` workload hint is not explicitly set then it defaults to `true`.
34
34
====
35
35
36
-
The following table describes how combinations of power consumption and real-time settings impact on latency.
36
+
The following table describes how combinations of power consumption and real-time settings impact latency.
37
37
38
38
.Impact of combinations of power consumption and real-time settings on latency
Copy file name to clipboardExpand all lines: modules/cnf-disabling-cpu-cfs-quota.adoc
+3-2
Original file line number
Diff line number
Diff line change
@@ -5,8 +5,9 @@
5
5
[id="cnf-disabling-cpu-cfs-quota_{context}"]
6
6
= Disabling CPU CFS quota
7
7
8
-
To eliminate CPU throttling for pinned pods, create a pod with the annotation `cpu-quota.crio.io: "disable"`. This annotation disables the CPU completely fair scheduler (CFS) quota when the pod runs. The following pod specification has this annotation:
8
+
To eliminate CPU throttling for pinned pods, create a pod with the `cpu-quota.crio.io: "disable"` annotation. This annotation disables the CPU completely fair scheduler (CFS) quota when the pod runs.
9
9
10
+
.Example pod specification with `cpu-quota.crio.io` disabled
Keep the following in mind when you create a pod that is given a QoS class of `Guaranteed`:
10
10
@@ -67,5 +67,5 @@ status:
67
67
+
68
68
[NOTE]
69
69
====
70
-
If a container specifies its own memory limit, but does not specify a memory request, {product-title} automatically assigns a memory request that matches the limit. Similarly, if a container specifies its own CPU limit, but does not specify a CPU request, {product-title} automatically assigns a CPU request that matches the limit.
70
+
If you specify a memory limit for a container, but do not specify a memory request, {product-title} automatically assigns a memory request that matches the limit. Similarly, if you specify a CPU limit for a container, but do not specify a CPU request, {product-title} automatically assigns a CPU request that matches the limit.
Copy file name to clipboardExpand all lines: modules/cnf-node-tuning-operator-disabling-cpu-load-balancing-for-dpdk.adoc
+7-7
Original file line number
Diff line number
Diff line change
@@ -20,7 +20,7 @@ status:
20
20
runtimeClass: performance-manual
21
21
----
22
22
23
-
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.
23
+
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 the default runtime handler except that it enables the CPU load balancing configuration functionality.
24
24
25
25
To disable the CPU load balancing for the pod, the `Pod` specification must include the following fields:
26
26
@@ -29,16 +29,16 @@ To disable the CPU load balancing for the pod, the `Pod` specification must incl
This command uses the performance profile creator as a new entry point to `podman`. It maps the `must-gather` data for the host into the container image and invokes the required user-supplied profile arguments to produce the `my-performance-profile.yaml` file.
101
102
102
-
The `-v` option can be the path to either:
103
+
The `-v` option can be the path to either of the following components:
103
104
104
105
* The `must-gather` output directory
105
106
* An existing directory containing the `must-gather` decompressed .tar file
<1> Disables the CPU completely fair scheduler (CFS) quota at the pod run time
65
-
<2> Disables CPU load balancing
66
-
<3> Opts the pod out of interrupt handling on the node
64
+
<1> Disables the CPU completely fair scheduler (CFS) quota at the pod run time.
65
+
<2> Disables CPU load balancing.
66
+
<3> Opts the pod out of interrupt handling on the node.
67
67
<4> The `nodeSelector` label must match the label that you specify in the `Node` CR.
68
68
<5> `runtimeClassName` must match the name of the performance profile configured in the cluster.
69
69
70
-
. Enter the pod `runtimeClassName` in the form performance-<profile_name>, where <profile_name> is the `name` from the `PerformanceProfile` YAML, in this example, `performance-dynamic-low-latency-profile`.
70
+
. Enter the pod `runtimeClassName` in the form performance-<profile_name>, where <profile_name> is the `name` from the `PerformanceProfile` YAML.
71
+
In the previous example, the `name` is `performance-dynamic-low-latency-profile`.
71
72
72
73
. Ensure the pod is running correctly. Status should be `running`, and the correct cnf-worker node should be set:
73
74
+
@@ -80,8 +81,8 @@ $ oc get pod -o wide
80
81
+
81
82
[source,terminal]
82
83
----
83
-
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
0 commit comments