Chapitre 18. Création d'un profil de performance
Découvrez le Performance Profile Creator (PPC) et la manière dont vous pouvez l'utiliser pour créer un profil de performance.
Actuellement, la désactivation de l'équilibrage de la charge du CPU n'est pas prise en charge par cgroup v2. Par conséquent, il se peut que vous n'obteniez pas le comportement souhaité des profils de performance si vous avez activé cgroup v2. L'activation de cgroup v2 n'est pas recommandée si vous utilisez des profils de performance.
18.1. À propos du créateur de profil de performance
Le Performance Profile Creator (PPC) est un outil en ligne de commande, fourni avec le Node Tuning Operator, utilisé pour créer le profil de performance. L'outil utilise les données must-gather
de la grappe et plusieurs arguments de profil fournis par l'utilisateur. Le PPC génère un profil de performance adapté à votre matériel et à votre topologie.
L'outil est exécuté selon l'une des méthodes suivantes :
-
Invoquer
podman
- Appel d'un script wrapper
18.1.1. Collecte de données sur votre cluster à l'aide de la commande must-gather
L'outil Performance Profile Creator (PPC) nécessite des données must-gather
. En tant qu'administrateur d'une grappe, exécutez la commande must-gather
pour obtenir des informations sur votre grappe.
Dans les versions antérieures d'OpenShift Container Platform, l'opérateur Performance Addon permettait de régler automatiquement les performances des applications à faible latence. Dans OpenShift Container Platform 4.11 et les versions ultérieures, cette fonctionnalité fait partie de l'opérateur Node Tuning. Cependant, vous devez toujours utiliser l'image performance-addon-operator-must-gather
lors de l'exécution de la commande must-gather
.
Conditions préalables
-
Accès au cluster en tant qu'utilisateur ayant le rôle
cluster-admin
. -
Accès à l'image de l'opérateur Performance Addon
must gather
. -
L'OpenShift CLI (
oc
) est installé.
Procédure
Facultatif : Vérifiez qu'il existe un pool de configuration machine correspondant avec une étiquette :
$ oc describe mcp/worker-rt
Exemple de sortie
Name: worker-rt Namespace: Labels: machineconfiguration.openshift.io/role=worker-rt
S'il n'existe pas d'étiquette correspondante, ajoutez une étiquette pour un pool de configuration de machine (MCP) qui correspond au nom du MCP :
$ oc label mcp <mcp_name> <mcp_name>=""
-
Accédez au répertoire dans lequel vous souhaitez stocker les données
must-gather
. Exécutez
must-gather
sur votre cluster :oc adm must-gather --image=<PAO_must_gather_image> --dest-dir=<dir> $ oc adm must-gather --image=<PAO_must_gather_image>
NoteLa commande
must-gather
doit être exécutée avec l'imageperformance-addon-operator-must-gather
. La sortie peut éventuellement être compressée. La sortie compressée est nécessaire si vous exécutez le script wrapper Performance Profile Creator.Exemple :
oc adm must-gather --image=registry.redhat.io/openshift4/performance-addon-operator-must-gather-rhel8:v4.12 --dest-dir=<path_to_must-gather>/must-gather
Créer un fichier compressé à partir du répertoire
must-gather
:$ tar cvaf must-gather.tar.gz must-gather/
18.1.2. Exécuter le créateur de profil de performance à l'aide de podman
En tant qu'administrateur de cluster, vous pouvez exécuter podman
et le Créateur de profil de performance pour créer un profil de performance.
Conditions préalables
-
Accès au cluster en tant qu'utilisateur ayant le rôle
cluster-admin
. - Un cluster installé sur du matériel bare-metal.
-
Un nœud avec
podman
et OpenShift CLI (oc
) installés. - Accès à l'image de l'opérateur de réglage des nœuds.
Procédure
Vérifiez le pool de configuration de la machine :
$ oc get mcp
Exemple de sortie
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-acd1358917e9f98cbdb599aea622d78b True False False 3 3 3 0 22h worker-cnf rendered-worker-cnf-1d871ac76e1951d32b2fe92369879826 False True False 2 1 1 0 22h
Utilisez Podman pour vous authentifier sur
registry.redhat.io
:$ podman login registry.redhat.io
Username: myrhusername Password: ************
Facultatif : Affiche l'aide pour l'outil PPC :
$ podman run --rm --entrypoint performance-profile-creator registry.redhat.io/openshift4/ose-cluster-node-tuning-operator:v4.12 -h
Exemple de sortie
A tool that automates creation of Performance Profiles Usage: performance-profile-creator [flags] Flags: --disable-ht Disable Hyperthreading -h, --help help for performance-profile-creator --info string Show cluster information; requires --must-gather-dir-path, ignore the other arguments. [Valid values: log, json] (default "log") --mcp-name string MCP name corresponding to the target machines (required) --must-gather-dir-path string Must gather directory path (default "must-gather") --offlined-cpu-count int Number of offlined CPUs --power-consumption-mode string The power consumption mode. [Valid values: default, low-latency, ultra-low-latency] (default "default") --profile-name string Name of the performance profile to be created (default "performance") --reserved-cpu-count int Number of reserved CPUs (required) --rt-kernel Enable Real Time Kernel (required) --split-reserved-cpus-across-numa Split the Reserved CPUs across NUMA nodes --topology-manager-policy string Kubelet Topology Manager Policy of the performance profile to be created. [Valid values: single-numa-node, best-effort, restricted] (default "restricted") --user-level-networking Run with User level Networking(DPDK) enabled
Exécutez l'outil Performance Profile Creator en mode découverte :
NoteLe mode découverte inspecte votre cluster à l'aide de la sortie de
must-gather
. La sortie produite comprend des informations sur :- Le partitionnement de la cellule NUMA avec les identifiants de l'unité centrale alloués
- Si l'hyperthreading est activé
En utilisant ces informations, vous pouvez définir des valeurs appropriées pour certains des arguments fournis à l'outil Performance Profile Creator.
$ podman run --entrypoint performance-profile-creator -v <path_to_must-gather>/must-gather:/must-gather:z registry.redhat.io/openshift4/ose-cluster-node-tuning-operator:v4.12 --info log --must-gather-dir-path /must-gather
NoteCette commande utilise le créateur de profil de performance comme nouveau point d'entrée vers
podman
. Elle mappe les donnéesmust-gather
pour l'hôte dans l'image du conteneur et invoque les arguments de profil fournis par l'utilisateur pour produire le fichiermy-performance-profile.yaml
.L'option
-v
peut être le chemin d'accès à l'un ou l'autre :-
Le répertoire de sortie de
must-gather
-
Un répertoire existant contenant l'archive décompressée
must-gather
L'option
info
requiert une valeur qui spécifie le format de sortie. Les valeurs possibles sont log et JSON. Le format JSON est réservé au débogage.Exécuter
podman
:$ podman run --entrypoint performance-profile-creator -v /must-gather:/must-gather:z registry.redhat.io/openshift4/ose-cluster-node-tuning-operator:v4.12 --mcp-name=worker-cnf --reserved-cpu-count=4 --rt-kernel=true --split-reserved-cpus-across-numa=false --must-gather-dir-path /must-gather --power-consumption-mode=ultra-low-latency --offlined-cpu-count=6 > my-performance-profile.yaml
NoteLes arguments du Créateur de profil de performance sont présentés dans le tableau des arguments du Créateur de profil de performance. Les arguments suivants sont nécessaires :
-
reserved-cpu-count
-
mcp-name
-
rt-kernel
Dans cet exemple, l'argument
mcp-name
est défini surworker-cnf
en fonction de la sortie de la commandeoc get mcp
. Pour OpenShift à nœud unique, utilisez--mcp-name=master
.-
Examinez le fichier YAML créé :
$ cat my-performance-profile.yaml
Exemple de sortie
apiVersion: performance.openshift.io/v2 kind: PerformanceProfile metadata: name: performance spec: cpu: isolated: 2-39,48-79 offlined: 42-47 reserved: 0-1,40-41 machineConfigPoolSelector: machineconfiguration.openshift.io/role: worker-cnf nodeSelector: node-role.kubernetes.io/worker-cnf: "" numa: topologyPolicy: restricted realTimeKernel: enabled: true workloadHints: highPowerConsumption: true realTime: true
Appliquer le profil généré :
$ oc apply -f my-performance-profile.yaml
18.1.2.1. Comment lancer le site podman
pour créer un profil de performance ?
L'exemple suivant montre comment exécuter podman
pour créer un profil de performance avec 20 CPU réservés qui doivent être répartis sur les nœuds NUMA.
Configuration du matériel du nœud :
- 80 CPU
- Hyperthreading activé
- Deux nœuds NUMA
- Les unités centrales paires sont exécutées sur le nœud NUMA 0 et les unités centrales impaires sur le nœud NUMA 1
Lancez podman
pour créer le profil de performance :
$ podman run --entrypoint performance-profile-creator -v /must-gather:/must-gather:z registry.redhat.io/openshift4/ose-cluster-node-tuning-operator:v4.12 --mcp-name=worker-cnf --reserved-cpu-count=20 --rt-kernel=true --split-reserved-cpus-across-numa=true --must-gather-dir-path /must-gather > my-performance-profile.yaml
Le profil créé est décrit dans le fichier YAML suivant :
apiVersion: performance.openshift.io/v2 kind: PerformanceProfile metadata: name: performance spec: cpu: isolated: 10-39,50-79 reserved: 0-9,40-49 nodeSelector: node-role.kubernetes.io/worker-cnf: "" numa: topologyPolicy: restricted realTimeKernel: enabled: true
Dans ce cas, 10 CPU sont réservés sur le nœud NUMA 0 et 10 sur le nœud NUMA 1.
18.1.3. Exécution du script wrapper Performance Profile Creator
Le script d'habillage du profil de performance simplifie l'exécution de l'outil Performance Profile Creator (PPC). Il masque les complexités associées à l'exécution de podman
et à la spécification des répertoires de mappage et permet la création du profil de performance.
Conditions préalables
- Accès à l'image de l'opérateur de réglage des nœuds.
-
Accès à l'archive
must-gather
.
Procédure
Créez un fichier sur votre machine locale nommé, par exemple,
run-perf-profile-creator.sh
:$ vi run-perf-profile-creator.sh
Collez le code suivant dans le fichier :
#!/bin/bash readonly CONTAINER_RUNTIME=${CONTAINER_RUNTIME:-podman} readonly CURRENT_SCRIPT=$(basename "$0") readonly CMD="${CONTAINER_RUNTIME} run --entrypoint performance-profile-creator" readonly IMG_EXISTS_CMD="${CONTAINER_RUNTIME} image exists" readonly IMG_PULL_CMD="${CONTAINER_RUNTIME} image pull" readonly MUST_GATHER_VOL="/must-gather" NTO_IMG="registry.redhat.io/openshift4/ose-cluster-node-tuning-operator:v4.12" MG_TARBALL="" DATA_DIR="" usage() { print "Wrapper usage:" print " ${CURRENT_SCRIPT} [-h] [-p image][-t path] -- [performance-profile-creator flags]" print "" print "Options:" print " -h help for ${CURRENT_SCRIPT}" print " -p Node Tuning Operator image" print " -t path to a must-gather tarball" ${IMG_EXISTS_CMD} "${NTO_IMG}" && ${CMD} "${NTO_IMG}" -h } function cleanup { [ -d "${DATA_DIR}" ] && rm -rf "${DATA_DIR}" } trap cleanup EXIT exit_error() { print "error: $*" usage exit 1 } print() { echo "$*" >&2 } check_requirements() { ${IMG_EXISTS_CMD} "${NTO_IMG}" || ${IMG_PULL_CMD} "${NTO_IMG}" || \ exit_error "Node Tuning Operator image not found" [ -n "${MG_TARBALL}" ] || exit_error "Must-gather tarball file path is mandatory" [ -f "${MG_TARBALL}" ] || exit_error "Must-gather tarball file not found" DATA_DIR=$(mktemp -d -t "${CURRENT_SCRIPT}XXXX") || exit_error "Cannot create the data directory" tar -zxf "${MG_TARBALL}" --directory "${DATA_DIR}" || exit_error "Cannot decompress the must-gather tarball" chmod a+rx "${DATA_DIR}" return 0 } main() { while getopts ':hp:t:' OPT; do case "${OPT}" in h) usage exit 0 ;; p) NTO_IMG="${OPTARG}" ;; t) MG_TARBALL="${OPTARG}" ;; ?) exit_error "invalid argument: ${OPTARG}" ;; esac done shift $((OPTIND - 1)) check_requirements || exit 1 ${CMD} -v "${DATA_DIR}:${MUST_GATHER_VOL}:z" "${NTO_IMG}" "$@" --must-gather-dir-path "${MUST_GATHER_VOL}" echo "" 1>&2 } main "$@"
Ajoutez des permissions d'exécution pour tout le monde sur ce script :
$ chmod a+x run-perf-profile-creator.sh
Facultatif : Affichez l'utilisation de la commande
run-perf-profile-creator.sh
:$ ./run-perf-profile-creator.sh -h
Résultats attendus
Wrapper usage: run-perf-profile-creator.sh [-h] [-p image][-t path] -- [performance-profile-creator flags] Options: -h help for run-perf-profile-creator.sh -p Node Tuning Operator image 1 -t path to a must-gather tarball 2 A tool that automates creation of Performance Profiles Usage: performance-profile-creator [flags] Flags: --disable-ht Disable Hyperthreading -h, --help help for performance-profile-creator --info string Show cluster information; requires --must-gather-dir-path, ignore the other arguments. [Valid values: log, json] (default "log") --mcp-name string MCP name corresponding to the target machines (required) --must-gather-dir-path string Must gather directory path (default "must-gather") --offlined-cpu-count int Number of offlined CPUs --power-consumption-mode string The power consumption mode. [Valid values: default, low-latency, ultra-low-latency] (default "default") --profile-name string Name of the performance profile to be created (default "performance") --reserved-cpu-count int Number of reserved CPUs (required) --rt-kernel Enable Real Time Kernel (required) --split-reserved-cpus-across-numa Split the Reserved CPUs across NUMA nodes --topology-manager-policy string Kubelet Topology Manager Policy of the performance profile to be created. [Valid values: single-numa-node, best-effort, restricted] (default "restricted") --user-level-networking Run with User level Networking(DPDK) enabled
NoteIl existe deux types d'arguments :
-
Les arguments enveloppants, à savoir
-h
,-p
et-t
- Arguments du CPP
- 1
- En option : Spécifiez l'image de l'opérateur Node Tuning. Si elle n'est pas définie, l'image en amont par défaut est utilisée :
registry.redhat.io/openshift4/ose-cluster-node-tuning-operator:v4.12
. - 2
-t
est un argument obligatoire du script wrapper et spécifie le chemin d'accès à l'archivemust-gather
.
-
Les arguments enveloppants, à savoir
Exécutez l'outil de création de profils de performance en mode découverte :
NoteLe mode découverte inspecte votre cluster à l'aide de la sortie de
must-gather
. La sortie produite comprend des informations sur :- Le partitionnement de la cellule NUMA avec les ID d'unité centrale attribués
- Si l'hyperthreading est activé
En utilisant ces informations, vous pouvez définir des valeurs appropriées pour certains des arguments fournis à l'outil Performance Profile Creator.
$ ./run-perf-profile-creator.sh -t /must-gather/must-gather.tar.gz -- --info=log
NoteL'option
info
requiert une valeur qui spécifie le format de sortie. Les valeurs possibles sont log et JSON. Le format JSON est réservé au débogage.Vérifiez le pool de configuration de la machine :
$ oc get mcp
Exemple de sortie
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-acd1358917e9f98cbdb599aea622d78b True False False 3 3 3 0 22h worker-cnf rendered-worker-cnf-1d871ac76e1951d32b2fe92369879826 False True False 2 1 1 0 22h
Créer un profil de performance :
./run-perf-profile-creator.sh -t /must-gather/must-gather.tar.gz -- --mcp-name=worker-cnf --reserved-cpu-count=2 --rt-kernel=true > my-performance-profile.yaml
NoteLes arguments du Créateur de profil de performance sont présentés dans le tableau des arguments du Créateur de profil de performance. Les arguments suivants sont nécessaires :
-
reserved-cpu-count
-
mcp-name
-
rt-kernel
Dans cet exemple, l'argument
mcp-name
est défini surworker-cnf
en fonction de la sortie de la commandeoc get mcp
. Pour OpenShift à nœud unique, utilisez--mcp-name=master
.-
Examinez le fichier YAML créé :
$ cat my-performance-profile.yaml
Exemple de sortie
apiVersion: performance.openshift.io/v2 kind: PerformanceProfile metadata: name: performance spec: cpu: isolated: 1-39,41-79 reserved: 0,40 nodeSelector: node-role.kubernetes.io/worker-cnf: "" numa: topologyPolicy: restricted realTimeKernel: enabled: false
Appliquer le profil généré :
NoteInstallez l'opérateur de réglage des nœuds avant d'appliquer le profil.
$ oc apply -f my-performance-profile.yaml
18.1.4. Arguments du créateur de profil de performance
Argument | Description |
---|---|
| Désactiver l'hyperthreading.
Valeurs possibles :
Valeur par défaut : Avertissement
Si cet argument est défini à |
|
Il capture des informations sur les clusters et n'est utilisé qu'en mode découverte. Le mode découverte nécessite également l'argument Valeurs possibles :
Valeur par défaut : |
|
Nom du MCP par exemple |
| Doit rassembler le chemin d'accès au répertoire. Ce paramètre est obligatoire.
Lorsque l'utilisateur exécute l'outil avec le script wrapper |
| Nombre d'unités centrales hors ligne. Note Il doit s'agir d'un nombre naturel supérieur à 0. Si le nombre de processeurs logiques déconnectés est insuffisant, des messages d'erreur sont enregistrés. Ces messages sont les suivants : Error: failed to compute the reserved and isolated CPUs: please ensure that reserved-cpu-count plus offlined-cpu-count should be in the range [0,1] Error: failed to compute the reserved and isolated CPUs: please specify the offlined CPU count in the range [0,1] |
| Le mode de consommation d'énergie. Valeurs possibles :
Valeur par défaut : |
|
Nom du profil de performance à créer. Valeur par défaut : |
| Nombre d'unités centrales réservées. Ce paramètre est obligatoire. Note Il doit s'agir d'un nombre naturel. La valeur 0 n'est pas autorisée. |
| Activer le noyau en temps réel. Ce paramètre est obligatoire.
Valeurs possibles : |
| Répartir les unités centrales réservées sur les nœuds NUMA.
Valeurs possibles :
Valeur par défaut : |
| Politique du Kubelet Topology Manager du profil de performance à créer. Valeurs possibles :
Valeur par défaut : |
| Exécution avec la mise en réseau au niveau de l'utilisateur (DPDK) activée.
Valeurs possibles :
Valeur par défaut : |