14.4. Réduction des files d'attente NIC à l'aide de l'opérateur Node Tuning


L'opérateur de réglage des nœuds vous permet d'ajuster le nombre de files d'attente du contrôleur d'interface réseau (NIC) pour chaque périphérique réseau en configurant le profil de performance. Les files d'attente des périphériques réseau permettent de répartir les paquets entre différentes files d'attente physiques et chaque file d'attente dispose d'un fil d'exécution distinct pour le traitement des paquets.

Dans les systèmes en temps réel ou à faible latence, toutes les lignes de demande d'interruption (IRQ) inutiles reliées aux unités centrales isolées doivent être déplacées vers des unités centrales réservées ou de maintien.

Dans les déploiements avec des applications qui nécessitent un système, une mise en réseau OpenShift Container Platform ou dans les déploiements mixtes avec des charges de travail Data Plane Development Kit (DPDK), plusieurs files d'attente sont nécessaires pour obtenir un bon débit et le nombre de files d'attente NIC devrait être ajusté ou rester inchangé. Par exemple, pour obtenir une faible latence, le nombre de files d'attente NIC pour les charges de travail basées sur le DPDK doit être réduit au nombre de CPU réservés ou de maintenance.

Trop de files d'attente sont créées par défaut pour chaque unité centrale et elles ne s'intègrent pas dans les tables d'interruption des unités centrales de gestion lorsque l'on cherche à réduire la latence. La réduction du nombre de files d'attente permet un réglage correct. Un plus petit nombre de files d'attente signifie un plus petit nombre d'interruptions qui s'intègrent alors dans la table IRQ.

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.

Le profil de performance vous permet d'ajuster le nombre de files d'attente pour chaque périphérique réseau.

Périphériques réseau pris en charge :

  • Dispositifs de réseau non virtuels
  • Dispositifs de réseau prenant en charge plusieurs files d'attente (canaux)

Périphériques réseau non pris en charge :

  • Interfaces réseau purement logicielles
  • Dispositifs de blocage
  • Fonctions virtuelles Intel DPDK

Conditions préalables

  • Accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
  • Installez le CLI OpenShift (oc).

Procédure

  1. Connectez-vous au cluster OpenShift Container Platform exécutant Node Tuning Operator en tant qu'utilisateur disposant des privilèges cluster-admin.
  2. Créez et appliquez un profil de performance adapté à votre matériel et à votre topologie. Pour obtenir des conseils sur la création d'un profil, reportez-vous à la section "Création d'un profil de performances".
  3. Modifier le profil de performance créé :

    oc edit -f <votre_nom_de_profil>.yaml
  4. Remplir le champ spec avec l'objet net. La liste d'objets peut contenir deux champs :

    • userLevelNetworking est un champ obligatoire spécifié sous la forme d'un indicateur booléen. Si userLevelNetworking est true, le nombre de files d'attente correspond au nombre d'unités centrales réservées pour tous les périphériques pris en charge. La valeur par défaut est false.
    • devices est un champ facultatif spécifiant une liste de périphériques dont les files d'attente seront réglées sur le nombre de CPU réservé. Si la liste des périphériques est vide, la configuration s'applique à tous les périphériques du réseau. La configuration est la suivante :

      • interfaceName: Ce champ indique le nom de l'interface et prend en charge les caractères génériques de type shell, qui peuvent être positifs ou négatifs.

        • Les exemples de syntaxe des caractères génériques sont les suivants : <string> .*
        • Les règles négatives sont précédées d'un point d'exclamation. Pour appliquer les modifications apportées à la file d'attente du réseau à tous les périphériques autres que ceux de la liste d'exclusion, utilisez !<device>, par exemple, !eno1.
      • vendorID: L'ID du fournisseur de l'appareil réseau représenté par un nombre hexadécimal de 16 bits avec un préfixe 0x.
      • deviceID: L'ID de l'appareil réseau (modèle) représenté par un nombre hexadécimal de 16 bits avec un préfixe 0x.

        Note

        Lorsqu'un deviceID est spécifié, le vendorID doit également être défini. Un dispositif qui correspond à tous les identificateurs de dispositif spécifiés dans une entrée de dispositif interfaceName, vendorID, ou une paire de vendorID plus deviceID est qualifié de dispositif de réseau. Le nombre de files d'attente nettes de ce périphérique réseau est alors fixé au nombre d'unités centrales réservées.

        Lorsque deux dispositifs ou plus sont spécifiés, le nombre de files d'attente nettes est fixé à tout dispositif net correspondant à l'un d'entre eux.

  5. Définissez le nombre de files d'attente sur le nombre de CPU réservées pour tous les périphériques en utilisant cet exemple de profil de performance :

    apiVersion: performance.openshift.io/v2
    kind: PerformanceProfile
    metadata:
      name: manual
    spec:
      cpu:
        isolated: 3-51,54-103
        reserved: 0-2,52-54
      net:
        userLevelNetworking: true
      nodeSelector:
        node-role.kubernetes.io/worker-cnf: ""
  6. Définissez le nombre de files d'attente sur le nombre d'unités centrales réservées pour tous les périphériques correspondant à l'un des identifiants de périphérique définis en utilisant cet exemple de profil de performance :

    apiVersion: performance.openshift.io/v2
    kind: PerformanceProfile
    metadata:
      name: manual
    spec:
      cpu:
        isolated: 3-51,54-103
        reserved: 0-2,52-54
      net:
        userLevelNetworking: true
        devices:
        - interfaceName: “eth0”
        - interfaceName: “eth1”
        - vendorID: “0x1af4”
        - deviceID: “0x1000”
      nodeSelector:
        node-role.kubernetes.io/worker-cnf: ""
  7. Définissez le nombre de files d'attente sur le nombre de CPU réservées pour tous les périphériques commençant par le nom d'interface eth en utilisant cet exemple de profil de performance :

    apiVersion: performance.openshift.io/v2
    kind: PerformanceProfile
    metadata:
      name: manual
    spec:
      cpu:
        isolated: 3-51,54-103
        reserved: 0-2,52-54
      net:
        userLevelNetworking: true
        devices:
        - interfaceName: “eth*”
      nodeSelector:
        node-role.kubernetes.io/worker-cnf: ""
  8. Définissez le nombre de files d'attente sur le nombre d'unités centrales réservées pour tous les périphériques dont l'interface porte un nom autre que eno1 à l'aide de cet exemple de profil de performances :

    apiVersion: performance.openshift.io/v2
    kind: PerformanceProfile
    metadata:
      name: manual
    spec:
      cpu:
        isolated: 3-51,54-103
        reserved: 0-2,52-54
      net:
        userLevelNetworking: true
        devices:
        - interfaceName:!eno1nodeSelector:
        node-role.kubernetes.io/worker-cnf: ""
  9. Définissez le nombre de files d'attente sur le nombre de CPU réservées pour tous les périphériques ayant un nom d'interface eth0, vendorID de 0x1af4, et deviceID de 0x1000 en utilisant cet exemple de profil de performance :

    apiVersion: performance.openshift.io/v2
    kind: PerformanceProfile
    metadata:
      name: manual
    spec:
      cpu:
        isolated: 3-51,54-103
        reserved: 0-2,52-54
      net:
        userLevelNetworking: true
        devices:
        - interfaceName: “eth0”
        - vendorID: “0x1af4”
        - deviceID: “0x1000”
      nodeSelector:
        node-role.kubernetes.io/worker-cnf: ""
  10. Appliquer le profil de performance mis à jour :

    oc apply -f <votre_nom_de_profil>.yaml

14.4.2. Vérification de l'état de la file d'attente

Dans cette section, un certain nombre d'exemples illustrent différents profils de performance et la manière de vérifier que les changements sont appliqués.

Exemple 1

Dans cet exemple, le nombre de files d'attente nettes est défini sur le nombre de CPU réservé (2) pour les périphériques pris en charge par all.

La section correspondante du profil de performance est la suivante :

apiVersion: performance.openshift.io/v2
metadata:
  name: performance
spec:
  kind: PerformanceProfile
  spec:
    cpu:
      reserved: 0-1  #total = 2
      isolated: 2-8
    net:
      userLevelNetworking: true
# ...
  • Affichez l'état des files d'attente associées à un périphérique à l'aide de la commande suivante :

    Note

    Exécutez cette commande sur le nœud où le profil de performance a été appliqué.

    $ ethtool -l <device>
  • Vérifier l'état de la file d'attente avant l'application du profil :

    $ ethtool -l ens4

    Exemple de sortie

    Channel parameters for ens4:
    Pre-set maximums:
    RX:         0
    TX:         0
    Other:      0
    Combined:   4
    Current hardware settings:
    RX:         0
    TX:         0
    Other:      0
    Combined:   4

  • Vérifiez l'état de la file d'attente après l'application du profil :

    $ ethtool -l ens4

    Exemple de sortie

    Channel parameters for ens4:
    Pre-set maximums:
    RX:         0
    TX:         0
    Other:      0
    Combined:   4
    Current hardware settings:
    RX:         0
    TX:         0
    Other:      0
    Combined:   2 
    1

1
Le canal combiné montre que le nombre total de CPU réservés pour les périphériques pris en charge par all est de 2. Cela correspond à ce qui est configuré dans le profil de performance.

Exemple 2

Dans cet exemple, le nombre de files d'attente nettes est défini sur le nombre de CPU réservé (2) pour les périphériques réseau pris en charge par all avec une adresse spécifique vendorID.

La section correspondante du profil de performance est la suivante :

apiVersion: performance.openshift.io/v2
metadata:
  name: performance
spec:
  kind: PerformanceProfile
  spec:
    cpu:
      reserved: 0-1  #total = 2
      isolated: 2-8
    net:
      userLevelNetworking: true
      devices:
      - vendorID = 0x1af4
# ...
  • Affichez l'état des files d'attente associées à un périphérique à l'aide de la commande suivante :

    Note

    Exécutez cette commande sur le nœud où le profil de performance a été appliqué.

    $ ethtool -l <device>
  • Vérifiez l'état de la file d'attente après l'application du profil :

    $ ethtool -l ens4

    Exemple de sortie

    Channel parameters for ens4:
    Pre-set maximums:
    RX:         0
    TX:         0
    Other:      0
    Combined:   4
    Current hardware settings:
    RX:         0
    TX:         0
    Other:      0
    Combined:   2 
    1

1
Le nombre total d'unités centrales réservées pour tous les périphériques pris en charge avec vendorID=0x1af4 est de 2. Par exemple, s'il y a un autre périphérique réseau ens2 avec vendorID=0x1af4, il aura également un total de files d'attente nettes de 2. Cela correspond à ce qui est configuré dans le profil de performance.

Exemple 3

Dans cet exemple, le nombre de files d'attente nettes est défini sur le nombre d'unités centrales réservées (2) pour les périphériques réseau pris en charge par all qui correspondent à l'un des identifiants de périphérique définis.

La commande udevadm info permet d'obtenir un rapport détaillé sur un appareil. Dans cet exemple, les appareils sont les suivants

# udevadm info -p /sys/class/net/ens4
...
E: ID_MODEL_ID=0x1000
E: ID_VENDOR_ID=0x1af4
E: INTERFACE=ens4
...
# udevadm info -p /sys/class/net/eth0
...
E: ID_MODEL_ID=0x1002
E: ID_VENDOR_ID=0x1001
E: INTERFACE=eth0
...
  • Définissez les files d'attente nettes à 2 pour un appareil dont la valeur interfaceName est égale à eth0 et pour tous les appareils dont la valeur vendorID=0x1af4 présente le profil de performance suivant :

    apiVersion: performance.openshift.io/v2
    metadata:
      name: performance
    spec:
      kind: PerformanceProfile
        spec:
          cpu:
            reserved: 0-1  #total = 2
            isolated: 2-8
          net:
            userLevelNetworking: true
            devices:
            - interfaceName = eth0
            - vendorID = 0x1af4
    ...
  • Vérifiez l'état de la file d'attente après l'application du profil :

    $ ethtool -l ens4

    Exemple de sortie

    Channel parameters for ens4:
    Pre-set maximums:
    RX:         0
    TX:         0
    Other:      0
    Combined:   4
    Current hardware settings:
    RX:         0
    TX:         0
    Other:      0
    Combined:   2 
    1

    1
    Le nombre total d'unités centrales réservées pour tous les périphériques pris en charge avec vendorID=0x1af4 est fixé à 2. Par exemple, s'il existe un autre périphérique réseau ens2 avec vendorID=0x1af4, le nombre total de files d'attente nettes sera également fixé à 2. De même, un périphérique avec interfaceName égal à eth0 aura le nombre total de files d'attente nettes fixé à 2.

Les messages de logs détaillant les appareils assignés sont enregistrés dans les logs respectifs du démon Tuned. Les messages suivants peuvent être enregistrés dans le fichier /var/log/tuned/tuned.log:

  • Un message INFO est enregistré, détaillant les dispositifs attribués avec succès :

    INFO tuned.plugins.base: instance net_test (net): assigning devices ens1, ens2, ens3
  • Un message WARNING est enregistré si aucun des dispositifs ne peut être attribué :

    WARNING  tuned.plugins.base: instance net_test: no matching devices available
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. Découvrez nos récentes mises à jour.

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 le Blog 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.

Theme

© 2026 Red Hat
Retour au début