1
0
mirror of https://github.com/openshift/openshift-docs.git synced 2026-02-05 12:46:18 +01:00
Files
openshift-docs/modules/hosted-clusters-openstack-performance-tuning.adoc
2025-06-13 14:17:09 +00:00

146 lines
4.2 KiB
Plaintext

// Module included in the following assemblies:
//
// * hosted_control_planes/hcp-manage/hcp-manage-openstack
:_mod-docs-content-type: PROCEDURE
[id="hosted-clusters-openstack-performance-tuning_{context}"]
= Tuning performance for hosted cluster nodes
Create a performance profile and deploy a tuned `NodePool` resource to run high-performance workloads on {rh-openstack-first} {hcp}.
.Prerequisites
* You have {rh-openstack} flavor that has the necessary resources to run your workload, including dedicated CPU, memory, and host aggregate information.
* You have an {rh-openstack} network that is attached to SR-IOV or DPDK-capable NICs. The network must be available to the project used by hosted clusters.
.Procedure
. Create a performance profile that meets your requirements in a file called `perfprofile.yaml`. For example:
+
.Example performance profile in a config map
[source,yaml]
----
apiVersion: v1
kind: ConfigMap
metadata:
name: perfprof-1
namespace: clusters
data:
tuning: |
apiVersion: v1
kind: ConfigMap
metadata:
name: cnf-performanceprofile
namespace: "${HYPERSHIFT_NAMESPACE}"
data:
tuning: |
apiVersion: performance.openshift.io/v2
kind: PerformanceProfile
metadata:
name: cnf-performanceprofile
spec:
additionalKernelArgs:
- nmi_watchdog=0
- audit=0
- mce=off
- processor.max_cstate=1
- idle=poll
- intel_idle.max_cstate=0
- amd_iommu=on
cpu:
isolated: "${CPU_ISOLATED}"
reserved: "${CPU_RESERVED}"
hugepages:
defaultHugepagesSize: "1G"
pages:
- count: ${HUGEPAGES}
node: 0
size: 1G
nodeSelector:
node-role.kubernetes.io/worker: ''
realTimeKernel:
enabled: false
globallyDisableIrqLoadBalancing: true
----
+
IMPORTANT: If you do not already have environment variables set for the HyperShift Operator namespace, isolated and reserved CPUs, and huge pages count, create them before applying the performance profile.
. Apply the performance profile configuration by running the following command:
+
[source,terminal]
----
$ oc apply -f perfprof.yaml
----
. If you do not already have a `CLUSTER_NAME` environment variable set for the name of your cluster, define it.
. Set a node pool name environment variable by running the following command:
+
[source,terminal]
----
$ export NODEPOOL_NAME=$CLUSTER_NAME-cnf
----
. Set a flavor environment variable by running the following command:
+
[source,terminal]
----
$ export FLAVOR="m1.xlarge.nfv"
----
. Create a node pool that uses the performance profile by running the following command:
+
[source,terminal]
----
$ hcp create nodepool openstack \
--cluster-name $CLUSTER_NAME \
--name $NODEPOOL_NAME \
--node-count 0 \
--openstack-node-flavor $FLAVOR
----
. Patch the node pool to reference the `PerformanceProfile` resource by running the following command:
+
[source,terminal]
----
$ oc patch nodepool -n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \
-p '{"spec":{"tuningConfig":[{"name":"cnf-performanceprofile"}]}}' --type=merge
----
. Scale the node pool by running the following command:
+
[source,terminal]
----
$ oc scale nodepool/$CLUSTER_NAME --namespace ${HYPERSHIFT_NAMESPACE} --replicas=1
----
. Wait for the nodes to be ready:
.. Wait for the nodes to be ready by running the following command:
+
[source,terminal]
----
$ oc wait --for=condition=UpdatingConfig=True nodepool \
-n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \
--timeout=5m
----
.. Wait for the configuration update to finish by running the following command:
+
[source,terminal]
----
$ oc wait --for=condition=UpdatingConfig=False nodepool \
-n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \
--timeout=30m
----
.. Wait until all nodes are healthy by running the following command:
+
[source,terminal]
----
$ oc wait --for=condition=AllNodesHealthy nodepool \
-n ${HYPERSHIFT_NAMESPACE} ${CLUSTER_NAME} \
--timeout=5m
----
NOTE: You can make an SSH connection into the nodes or use the `oc debug` command to verify performance configurations.