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.

Note

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.

Note

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

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

  2. 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>=""
  3. Accédez au répertoire dans lequel vous souhaitez stocker les données must-gather.
  4. 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>
    Note

    La commande must-gather doit être exécutée avec l'image performance-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

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

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

  2. Utilisez Podman pour vous authentifier sur registry.redhat.io:

    $ podman login registry.redhat.io
    Username: myrhusername
    Password: ************
  3. 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

  4. Exécutez l'outil Performance Profile Creator en mode découverte :

    Note

    Le 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
    Note

    Cette commande utilise le créateur de profil de performance comme nouveau point d'entrée vers podman. Elle mappe les données must-gather pour l'hôte dans l'image du conteneur et invoque les arguments de profil fournis par l'utilisateur pour produire le fichier my-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.

  5. 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
    Note

    Les 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 sur worker-cnf en fonction de la sortie de la commande oc get mcp. Pour OpenShift à nœud unique, utilisez --mcp-name=master.

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

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

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

  1. Créez un fichier sur votre machine locale nommé, par exemple, run-perf-profile-creator.sh:

    $ vi run-perf-profile-creator.sh
  2. 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 "$@"
  3. Ajoutez des permissions d'exécution pour tout le monde sur ce script :

    $ chmod a+x run-perf-profile-creator.sh
  4. 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

    Note

    Il 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'archive must-gather.
  5. Exécutez l'outil de création de profils de performance en mode découverte :

    Note

    Le 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
    Note

    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.

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

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

    Les 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 sur worker-cnf en fonction de la sortie de la commande oc get mcp. Pour OpenShift à nœud unique, utilisez --mcp-name=master.

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

  9. Appliquer le profil généré :

    Note

    Installez 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

Tableau 18.1. Arguments du créateur de profil de performance
ArgumentDescription

disable-ht

Désactiver l'hyperthreading.

Valeurs possibles : true ou false.

Valeur par défaut : false.

Avertissement

Si cet argument est défini à true, vous ne devez pas désactiver l'hyperthreading dans le BIOS. La désactivation de l'hyperthreading se fait à l'aide d'un argument de la ligne de commande du noyau.

info

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 must-gather-dir-path. Si d'autres arguments sont définis, ils sont ignorés.

Valeurs possibles :

  • log
  • JSON

    Note

    Ces options définissent le format de sortie, le format JSON étant réservé au débogage.

Valeur par défaut : log.

mcp-name

Nom du MCP par exemple worker-cnf correspondant aux machines cibles. Ce paramètre est obligatoire.

must-gather-dir-path

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 must-gather est fourni par le script lui-même et l'utilisateur ne doit pas le spécifier.

offlined-cpu-count

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]

power-consumption-mode

Le mode de consommation d'énergie.

Valeurs possibles :

  • default: Partitionnement de l'unité centrale avec gestion de l'énergie activée et faible latence de base.
  • low-latency: Mesures renforcées pour améliorer les chiffres de latence.
  • ultra-low-latency: Priorité donnée à une latence optimale, au détriment de la gestion de l'énergie.

Valeur par défaut : default.

profile-name

Nom du profil de performance à créer. Valeur par défaut : performance.

reserved-cpu-count

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.

rt-kernel

Activer le noyau en temps réel. Ce paramètre est obligatoire.

Valeurs possibles : true ou false.

split-reserved-cpus-across-numa

Répartir les unités centrales réservées sur les nœuds NUMA.

Valeurs possibles : true ou false.

Valeur par défaut : false.

topology-manager-policy

Politique du Kubelet Topology Manager du profil de performance à créer.

Valeurs possibles :

  • single-numa-node
  • best-effort
  • restricted

Valeur par défaut : restricted.

user-level-networking

Exécution avec la mise en réseau au niveau de l'utilisateur (DPDK) activée.

Valeurs possibles : true ou false.

Valeur par défaut : false.

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.