Skip to content

Commit a9029ba

Browse files
committed
Michael's comments
1 parent 68509c6 commit a9029ba

11 files changed

+46
-51
lines changed

modules/cnf-about-hyperthreading-for-low-latency-and-real-time-applications.adoc

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
[id="cnf-about-hyper-threading-for-low-latency-and-real-time-applications_{context}"]
77
= About Hyper-Threading for low latency and real-time applications
88

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.
1010

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.
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.
1212

1313
[NOTE]
1414
====

modules/cnf-configure_for_irq_dynamic_load_balancing.adoc

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ spec:
3434
+
3535
[NOTE]
3636
====
37-
When you configure reserved and isolated CPUs, operating system processes, kernel processes and systemd services run on reserved CPUs.
37+
When you configure reserved and isolated CPUs, operating system processes, kernel processes, and systemd services run on reserved CPUs.
3838
Infrastructure pods run on any CPU except where the low latency workload is running.
39-
low latency workload pods run on exclusive CPUs from the isolated pool.
39+
Low latency workload pods run on exclusive CPUs from the isolated pool.
4040
For more information, see "Restricting CPUs for infra and application containers".
4141
====

modules/cnf-configuring-high-priority-workload-pods.adoc

+6-6
Original file line numberDiff line numberDiff line change
@@ -39,17 +39,17 @@ By disabling P-states and C-states at the pod level, you can configure high prio
3939
apiVersion: v1
4040
kind: Pod
4141
metadata:
42-
...
42+
#...
4343
annotations:
44-
...
44+
#...
4545
cpu-c-states.crio.io: "disable"
4646
cpu-freq-governor.crio.io: "performance"
47-
...
48-
...
47+
#...
48+
#...
4949
spec:
50-
...
50+
#...
5151
runtimeClassName: performance-<profile_name>
52-
...
52+
#...
5353
----
5454

5555
. Restart the pods to apply the annotation.

modules/cnf-configuring-hyperthreading-for-a-cluster.adoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ See link:https://kubernetes.io/docs/tasks/administer-cluster/cpu-management-poli
9292
[id="disabling_hyperthreading_for_low_latency_applications_{context}"]
9393
== Disabling Hyper-Threading for low latency applications
9494
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:
9696
9797
. Create a performance profile that is appropriate for your hardware and topology.
9898
. Set `nosmt` as an additional kernel argument. The following example performance profile illustrates this setting:

modules/cnf-configuring-power-saving-for-nodes.adoc

+4-4
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ The feature is supported on Intel Ice Lake and later generations of Intel CPUs.
1515

1616
.Prerequisites
1717

18-
* You enabled C-states and Operating system controlled P-states in the BIOS
18+
* You enabled C-states and operating system controlled P-states in the BIOS
1919
2020
.Procedure
2121

22-
. Generate a `PerformanceProfile` with `per-pod-power-management` set to `true`:
22+
. Generate a `PerformanceProfile` with the `per-pod-power-management` argument set to `true`:
2323
+
2424
[source,terminal,subs="attributes+"]
2525
----
@@ -30,7 +30,7 @@ $ podman run --entrypoint performance-profile-creator -v \
3030
--must-gather-dir-path /must-gather --power-consumption-mode=low-latency \ <1>
3131
--per-pod-power-management=true > my-performance-profile.yaml
3232
----
33-
<1> The `power-consumption-mode` must be `default` or `low-latency` when the `per-pod-power-management` is set to `true`.
33+
<1> The `power-consumption-mode` argument must be `default` or `low-latency` when the `per-pod-power-management` argument is set to `true`.
3434

3535
+
3636
.Example `PerformanceProfile` with `perPodPowerManagement`
@@ -74,4 +74,4 @@ spec:
7474
[sysfs]
7575
/sys/devices/system/cpu/intel_pstate/max_perf_pct = <x> <1>
7676
----
77-
<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.

modules/cnf-configuring-workload-hints.adoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
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`.
3434
====
3535
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.
3737
3838
.Impact of combinations of power consumption and real-time settings on latency
3939
[cols="1,1,1,1",options="header"]

modules/cnf-disabling-cpu-cfs-quota.adoc

+3-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@
55
[id="cnf-disabling-cpu-cfs-quota_{context}"]
66
= Disabling CPU CFS quota
77

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.
99

10+
.Example pod specification with `cpu-quota.crio.io` disabled
1011
[source,yaml]
1112
----
1213
apiVersion: v1
@@ -16,7 +17,7 @@ metadata:
1617
cpu-quota.crio.io: "disable"
1718
spec:
1819
runtimeClassName: performance-<profile_name>
19-
...
20+
#...
2021
----
2122

2223
[NOTE]

modules/cnf-node-tuning-operator-creating-pod-with-guaranteed-qos-class.adoc

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
:_mod-docs-content-type: PROCEDURE
66
[id="cnf-node-tuning-operator-creating-pod-with-guaranteed-qos-class_{context}"]
7-
= Creating a pod with a QoS class of `Guaranteed`
7+
= Creating a pod with a guaranteed QoS class
88

99
Keep the following in mind when you create a pod that is given a QoS class of `Guaranteed`:
1010

@@ -67,5 +67,5 @@ status:
6767
+
6868
[NOTE]
6969
====
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.
7171
====

modules/cnf-node-tuning-operator-disabling-cpu-load-balancing-for-dpdk.adoc

+7-7
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ status:
2020
runtimeClass: performance-manual
2121
----
2222
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.
2424

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

@@ -29,16 +29,16 @@ To disable the CPU load balancing for the pod, the `Pod` specification must incl
2929
apiVersion: v1
3030
kind: Pod
3131
metadata:
32-
...
32+
#...
3333
annotations:
34-
...
34+
#...
3535
cpu-load-balancing.crio.io: "disable"
36-
...
37-
...
36+
#...
37+
#...
3838
spec:
39-
...
39+
#...
4040
runtimeClassName: performance-<profile_name>
41-
...
41+
#...
4242
----
4343

4444
[NOTE]

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

+3-2
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,8 @@ Flags:
8282
+
8383
[NOTE]
8484
====
85-
Discovery mode inspects your cluster by using the output from `must-gather`. The output produced includes information on:
85+
Discovery mode inspects your cluster by using the output from `must-gather`.
86+
The output produced includes information on the following conditions:
8687

8788
* The NUMA cell partitioning with the allocated CPU ids
8889
* Whether Hyper-Threading is enabled
@@ -99,7 +100,7 @@ $ podman run --entrypoint performance-profile-creator -v <path_to_must-gather>/m
99100
====
100101
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.
101102
102-
The `-v` option can be the path to either:
103+
The `-v` option can be the path to either of the following components:
103104
104105
* The `must-gather` output directory
105106
* An existing directory containing the `must-gather` decompressed .tar file

modules/cnf-scheduling-workload-onto-worker-with-real-time-capabilities.adoc

+15-22
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,14 @@ spec:
6161
runtimeClassName: performance-dynamic-low-latency-profile <5>
6262
# ...
6363
----
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
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.
6767
<4> The `nodeSelector` label must match the label that you specify in the `Node` CR.
6868
<5> `runtimeClassName` must match the name of the performance profile configured in the cluster.
6969

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`.
7172

7273
. Ensure the pod is running correctly. Status should be `running`, and the correct cnf-worker node should be set:
7374
+
@@ -80,8 +81,8 @@ $ oc get pod -o wide
8081
+
8182
[source,terminal]
8283
----
83-
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
84-
dynamic-low-latency-pod 1/1 Running 0 5h33m <ip-address> <node-name> <none> <none>
84+
NAME READY STATUS RESTARTS AGE IP NODE
85+
dynamic-low-latency-pod 1/1 Running 0 5h33m 10.131.0.10 cnf-worker.example.com
8586
----
8687

8788
. Get the CPUs that the pod configured for IRQ dynamic load balancing runs on:
@@ -97,25 +98,17 @@ $ oc exec -it dynamic-low-latency-pod -- /bin/bash -c "grep Cpus_allowed_list /p
9798
----
9899
Cpus_allowed_list: 2-3
99100
----
100-
. Ensure the node configuration is applied correctly. Log in to the node to verify the configuration.
101+
102+
.Verification
103+
104+
Ensure the node configuration is applied correctly.
105+
106+
. Log in to the node to verify the configuration.
101107
+
102108
[source,terminal]
103109
----
104110
$ oc debug node/<node-name>
105111
----
106-
+
107-
.Expected output
108-
+
109-
[source,terminal]
110-
----
111-
Starting pod/<node-name>-debug ...
112-
To use host binaries, run `chroot /host`
113-
114-
Pod IP: <ip-address>
115-
If you do not see a command prompt, try pressing enter.
116-
117-
sh-4.4#
118-
----
119112

120113
. Verify that you can use the node file system:
121114
+
@@ -135,7 +128,7 @@ sh-4.4#
135128
+
136129
[source,terminal]
137130
----
138-
$ cat /proc/irq/default_smp_affinity
131+
sh-4.4# cat /proc/irq/default_smp_affinity
139132
----
140133
+
141134
.Example output
@@ -149,7 +142,7 @@ $ cat /proc/irq/default_smp_affinity
149142
+
150143
[source,terminal]
151144
----
152-
find /proc/irq/ -name smp_affinity_list -exec sh -c 'i="$1"; mask=$(cat $i); file=$(echo $i); echo $file: $mask' _ {} \;
145+
sh-4.4# find /proc/irq/ -name smp_affinity_list -exec sh -c 'i="$1"; mask=$(cat $i); file=$(echo $i); echo $file: $mask' _ {} \;
153146
----
154147
+
155148
.Example output

0 commit comments

Comments
 (0)