Skip to content

Commit 762c276

Browse files
authored
Merge pull request #53376 from aireilly/telcodocs-1013
2 parents 297c1e0 + ee9248c commit 762c276

10 files changed

+99
-85
lines changed

_topic_maps/_topic_map.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2394,7 +2394,7 @@ Topics:
23942394
- Name: Creating a performance profile
23952395
File: cnf-create-performance-profiles
23962396
Distros: openshift-origin,openshift-enterprise
2397-
- Name: Workload partitioning on single-node OpenShift
2397+
- Name: Workload partitioning in single-node OpenShift
23982398
File: sno-du-enabling-workload-partitioning-on-single-node-openshift
23992399
Distros: openshift-origin,openshift-enterprise
24002400
- Name: Requesting CRI-O and Kubelet profiling data by using the Node Observability Operator

modules/sno-du-enabling-workload-partitioning.adoc

Lines changed: 0 additions & 73 deletions
This file was deleted.

modules/ztp-checking-du-cluster-config.adoc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ You can check that clusters are running the correct configuration. The following
1818
1919
.Procedure
2020

21-
. Check that the default Operator Hub sources are disabled. Run the following command:
21+
. Check that the default OperatorHub sources are disabled. Run the following command:
2222
+
2323
[source,terminal]
2424
----
@@ -74,7 +74,7 @@ openshift-authentication-operator -- management
7474
+
7575
[IMPORTANT]
7676
====
77-
Additional Operators must not be annotated for workload partitioning. In the output from the previous command, additional Operators should be listed without any value on the right-hand side of the `--` separator.
77+
Additional Operators must not be annotated for workload partitioning. In the output from the previous command, additional Operators should be listed without any value on the right side of the `--` separator.
7878
====
7979

8080
. Check that the `ClusterLogging` configuration is correct. Run the following commands:
@@ -564,7 +564,7 @@ $ oc get performanceprofile -o jsonpath="{ .items[0].spec.cpu.reserved }"
564564
.Example output
565565
[source,terminal]
566566
----
567-
0-1,52-53
567+
0-3
568568
----
569569
+
570570
[NOTE]
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// Module included in the following assemblies:
2+
//
3+
// * scalability_and_performance/ztp_far_edge/ztp-reference-cluster-configuration-for-vdu.adoc
4+
5+
:_content-type: CONCEPT
6+
[id="ztp-workload-partitioning-sno_{context}"]
7+
= Workload partitioning in {sno} with GitOps ZTP
8+
9+
Workload partitioning configures {product-title} services, cluster management workloads, and infrastructure pods to run on a reserved number of host CPUs.
10+
11+
To configure workload partitioning with GitOps ZTP, you specify cluster management CPU resources with the `cpuset` field of the `SiteConfig` custom resource (CR) and the `reserved` field of the group `PolicyGenTemplate` CR.
12+
The GitOps ZTP pipeline uses these values to populate the required fields in the workload partitioning `MachineConfig` CR (`cpuset`) and the `PerformanceProfile` CR (`reserved`) that configure the {sno} cluster.
13+
14+
[NOTE]
15+
====
16+
For maximum performance, ensure that the `reserved` and `isolated` CPU sets do not share CPU cores across NUMA zones.
17+
====
18+
19+
* The workload partitioning `MachineConfig` CR pins the {product-title} infrastructure pods to a defined `cpuset` configuration.
20+
* The `PerformanceProfile` CR pins the systemd services to the reserved CPUs.
21+
22+
[IMPORTANT]
23+
====
24+
The value for the `reserved` field specified in the `PerformanceProfile` CR must match the `cpuset` field in the workload partitioning `MachineConfig` CR.
25+
====

modules/ztp-sno-du-enabling-workload-partitioning.adoc

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,49 @@ If Hyper-Threading is enabled, specify both threads for each core. The `CPUs` va
4141
}
4242
----
4343
<1> The `cpuset` must match the `CPUs` value in `/etc/crio/crio.conf.d/01-workload-partitioning`.
44+
45+
.Verification
46+
47+
Check that the applications and cluster system CPU pinning is correct. Run the following commands:
48+
49+
. Open a remote shell connection to the managed cluster:
50+
+
51+
[source,terminal]
52+
----
53+
$ oc debug node/example-sno-1
54+
----
55+
56+
. Check that the user applications CPU pinning is correct:
57+
+
58+
[source,terminal]
59+
----
60+
sh-4.4# pgrep ovn | while read i; do taskset -cp $i; done
61+
----
62+
+
63+
.Example output
64+
[source,terminal]
65+
----
66+
pid 8481's current affinity list: 0-3
67+
pid 8726's current affinity list: 0-3
68+
pid 9088's current affinity list: 0-3
69+
pid 9945's current affinity list: 0-3
70+
pid 10387's current affinity list: 0-3
71+
pid 12123's current affinity list: 0-3
72+
pid 13313's current affinity list: 0-3
73+
----
74+
75+
. Check that the system applications CPU pinning is correct:
76+
+
77+
[source,terminal]
78+
----
79+
sh-4.4# pgrep systemd | while read i; do taskset -cp $i; done
80+
----
81+
+
82+
.Example output
83+
[source,terminal]
84+
----
85+
pid 1's current affinity list: 0-3
86+
pid 938's current affinity list: 0-3
87+
pid 962's current affinity list: 0-3
88+
pid 1197's current affinity list: 0-3
89+
----

scalability_and_performance/sno-du-enabling-workload-partitioning-on-single-node-openshift.adoc

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
:_content-type: ASSEMBLY
22
[id="sno-du-enabling-workload-partitioning-on-single-node-openshift"]
3-
= Workload partitioning on {sno}
3+
= Workload partitioning in {sno}
44
include::_attributes/common-attributes.adoc[]
55
:context: sno-du-enabling-workload-partitioning-on-single-node-openshift
66

@@ -23,4 +23,7 @@ When applying workload partitioning, use the Node Tuning Operator to implement t
2323
Workload partitioning introduces a new extended resource of `<workload-type>.workload.openshift.io/cores`
2424
for each defined CPU pool, or workload-type. Kubelet advertises these new resources and CPU requests by pods allocated to the pool are accounted for within the corresponding resource rather than the typical `cpu` resource. When workload partitioning is enabled, the `<workload-type>.workload.openshift.io/cores` resource allows access to the CPU capacity of the host, not just the default CPU pool.
2525

26-
include::modules/sno-du-enabling-workload-partitioning.adoc[leveloffset=+1]
26+
[role="_additional-resources"]
27+
.Additional resources
28+
29+
* For the recommended workload partitioning configuration for {sno} clusters, see xref:../scalability_and_performance/ztp_far_edge/ztp-reference-cluster-configuration-for-vdu.adoc#ztp-sno-du-enabling-workload-partitioning_sno-configure-for-vdu[Workload partitioning].

scalability_and_performance/ztp_far_edge/ztp-manual-install.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ include::modules/ztp-generating-install-and-config-crs-manually.adoc[leveloffset
2323
[role="_additional-resources"]
2424
.Additional resources
2525

26-
* xref:../../scalability_and_performance/ztp_far_edge/ztp-manual-install.adoc#ztp-manually-install-a-single-managed-cluster_ztp-manual-install[Installing a single managed cluster]
26+
* xref:../../scalability_and_performance/ztp_far_edge/ztp-reference-cluster-configuration-for-vdu.adoc#ztp-sno-du-enabling-workload-partitioning_sno-configure-for-vdu[Workload partitioning]
2727
2828
* xref:../../installing/installing_bare_metal_ipi/ipi-install-installation-workflow.adoc#bmc-addressing_ipi-install-installation-workflow[BMC addressing]
2929

scalability_and_performance/ztp_far_edge/ztp-reference-cluster-configuration-for-vdu.adoc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,13 @@ include::modules/ztp-du-host-firmware-requirements.adoc[leveloffset=+1]
2323

2424
include::modules/ztp-managed-cluster-network-prereqs.adoc[leveloffset=+1]
2525

26+
include::modules/ztp-enabling-workload-partitioning-sno.adoc[leveloffset=+1]
27+
28+
[role="_additional-resources"]
29+
.Additional resources
30+
31+
* For the recommended {sno} workload partitioning configuration, see xref:../../scalability_and_performance/ztp_far_edge/ztp-reference-cluster-configuration-for-vdu.adoc#ztp-sno-du-enabling-workload-partitioning_sno-configure-for-vdu[Workload partitioning].
32+
2633
[id="ztp-sno-install-time-cluster-config"]
2734
== Recommended installation-time cluster configurations
2835

snippets/ztp-example-siteconfig.adoc

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ spec:
4343
bootMode: "UEFI" <10>
4444
rootDeviceHints:
4545
wwn: "0x11111000000asd123"
46-
cpuset: "0-1,52-53"
47-
nodeNetwork: <11>
46+
cpuset: "0-1,52-53" <11>
47+
nodeNetwork: <12>
4848
interfaces:
4949
- name: eno1
5050
macAddress: "AA:BB:CC:DD:EE:11"
@@ -56,7 +56,7 @@ spec:
5656
macAddress: "AA:BB:CC:DD:EE:11"
5757
ipv4:
5858
enabled: false
59-
ipv6: <12>
59+
ipv6: <13>
6060
enabled: true
6161
address:
6262
- ip: 1111:2222:3333:4444::aaaa:1
@@ -84,5 +84,6 @@ spec:
8484
<8> Applies to all cluster types. Specifies the BMC address. ZTP supports iPXE and virtual media booting by using Redfish or IPMI protocols.
8585
<9> Create the `bmh-secret` CR that specifies the BMC credentials. Use the same namespace as the `SiteConfig` CR.
8686
<10> Use `UEFISecureBoot` to enable secure boot on the host.
87-
<11> Specifies the network settings for the node.
88-
<12> Configures the IPv6 address for the host. For {sno} clusters with static IP addresses, the node-specific API and Ingress IPs should be the same.
87+
<11> `cpuset` should match the value set in the cluster `PerformanceProfile` CR `.spec.cpu.reserved` field for workload partitioning.
88+
<12> Specifies the network settings for the node.
89+
<13> Configures the IPv6 address for the host. For {sno} clusters with static IP addresses, the node-specific API and Ingress IPs should be the same.

snippets/ztp-performance-profile.adoc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ spec:
3030
<1> Ensure that the value for `name` matches that specified in the `spec.profile.data` field of `TunedPerformancePatch.yaml` and the `status.configuration.source.name` field of `validatorCRs/informDuValidator.yaml`.
3131
<2> Configures UEFI secure boot for the cluster host.
3232
<3> Set the isolated CPUs. Ensure all of the Hyper-Threading pairs match.
33+
+
34+
[IMPORTANT]
35+
====
36+
The reserved and isolated CPU pools must not overlap and together must span all available cores. CPU cores that are not accounted for cause an undefined behaviour in the system.
37+
====
3338
<4> Set the reserved CPUs. When workload partitioning is enabled, system processes, kernel threads, and system container threads are restricted to these CPUs. All CPUs that are not isolated should be reserved.
3439
<5> Set the number of huge pages.
3540
<6> Set the huge page size.

0 commit comments

Comments
 (0)