Accéder au contenuNavigation Accéder à la page : page précédente [raccourci clavier p] / page suivante [raccourci clavier n]
documentation.suse.com / Configuration de périphériques de bande de base à fonctions physiques à l'aide de pf_bb_config

Configuration de périphériques de bande de base à fonctions physiques à l'aide de pf_bb_config

Date de publication : 20 mar 2025
CONTENU

L'outil pf_bb_config utilise des fichiers de configuration donnés pour personnaliser et contrôler les fonctions physiques de divers périphériques de bande de base.

MOTIF

Cet article se concentre sur l'installation et l'utilisation de l'outil pf_bb_config.

EFFORT

La lecture de l'article prend environ 10 minutes.

OBJECTIF

Vous saurez comment configurer des périphériques à large bande et comment activer l'accès direct au matériel pour les machines virtuelles.

CONDITIONS REQUISES

Une instance de SUSE Linux Micro enregistrée en cours d'exécution.

1 Qu'est-ce que pf_bb_config ?

pf_bb_config est un outil qui vous permet de configurer des périphériques à large bande sur votre système hôte. L'outil accède à l'espace de configuration et définit les paramètres à l'aide d'opérations de lecture et d'écriture des E/S mappées en mémoire (MMIO).

Les paramètres de configuration d'un périphérique à large bande particulier sont analysés à partir d'un fichier de configuration transmis spécifique à ce périphérique.

2 Installation de l'outil pf_bb_config

L'outil de configuration des périphériques à large bande à fonctions physiques n'est pas fourni avec les images prédéfinies. Pour l'utiliser, vous devez d'abord l'installer :

  1. Rafraîchissez les dépôts :

              > 
              sudo
              zypper ref
  2. Installez le paquet pf-bb-config :

              > 
              sudo
              transactional-update pkg install pf-bb-config
  3. Dans certains cas, vous devrez peut-être utiliser le kit de développement de plan de données DPDK. Pour l'installer, exécutez :

              > 
              sudo
              transactional-update --continue pkg install dpdk
  4. Redémarrez le système :

              > 
              sudo
              reboot

3 Utilisation de pf_bb_config

Pour exécuter l'outil pf_bb_config, utilisez la commande suivante :

      # 
      pf_bb_config DEVICE_NAME [-h] [-c PATH_TO_CONFIG_FILE] [-p PCI_ID] [-v VFIO_TOKEN] [-f FFT_LUT_FILE]

Les arguments et options de cette commande ont la signification suivante :

DEVICE_NAME

Le nom du périphérique est obligatoire.

-h

Permet d'imprimer l'aide.

-c PATH_TO_CONFIG_FILE

Transmet le fichier de configuration à utiliser pour le périphérique à large bande concerné. Des exemples de configuration sont installés dans /opt/pf-bb-config/. Pour plus de détails sur ces exemples, reportez-vous à la Section 3.2, « Description des exemples de configuration ».

-p PCI_ID

Spécifiez l'ID PCI du périphérique à configurer.

-v VFIO_TOKEN

Fournissez un jeton VFIO qui peut être obtenu à l'aide de la commande uuid :

            # 
            uuid=$(cat /proc/sys/kernel/random/uuid)

Exécutez ensuite la commande suivante pour l'afficher :

            # 
            echo $uuid
-f FFT_LUT_FILE

À l'aide de cette option, vous pouvez fournir un autre fichier FFT LUT. Si elle n'est pas spécifiée, le fichier par défaut est utilisé.

3.1 Utilisation du module vfio-pci

Pour activer l'accès direct de votre périphérique aux ressources matérielles, vous devez utiliser le pilote vfio-pci. Avant de poursuivre, assurez-vous que les conditions suivantes sont remplies :

  • Le module vfio-pci est intégré.

  • Intel™ VT-d est activé dans le kernel et UEFI, et implémenté dans IOMMU.

  • IOMMU est activé lors de l'exécution. Pour vérifier cela, exécutez la commande suivante :

                > 
                sudo
                dmesg | grep "DMAR: IOMMU"
  • DPDK est installé.

Si les conditions ci-dessus sont remplies, vous pouvez activer le pilote vfio-pci comme décrit ci-dessous.

  1. Le module vfio-pci est chargé automatiquement lors du démarrage. Il vous suffit de transmettre des paramètres au module. Pour ce faire, vous avez trois possibilités :

    • Transmettez les paramètres suivants à l'interface de ligne de commande du kernel :

      vfio_pci.enable_sriov=1 vfio_pci.disable_idle_d3=1
    • Définissez les paramètres requis après le démarrage complet du système :

                      # 
                      echo 1 | sudo tee /sys/module/vfio_pci/parameters/enable_sriov
                      # 
                      echo 1 | sudo tee /sys/module/vfio_pci/parameters/disable_idle_d3
    • Ou vous pouvez utiliser modprobe pour charger le module avec ces paramètres :

                      # 
                      modprobe vfio-pci enable_sriov=1 disable_idle_d3=1
  2. Liez la fonction physique au module vfio-pci :

    > sudoPATH_TO_DPDK/usertools/dpdk-devbind.py --bind=vfio-pci $PCI_DRIVER_ADDRESS
  3. Configurez le périphérique à l'aide de l'outil pf_bb_config :

                > 
                sudo
                ./pf_bb_config ACC100 -v 00112233-4455-6677-8899-aabbccddeeff -c acc100/acc100_config_2vf_4g5g.cfg
    
  4. Par exemple, créez deux fonctions virtuelles sur le périphérique :

                > 
                sudo
                echo 2 | sudo tee /sys/bus/pci/devices/0000:$PF_PCI_DEVICE_ADDRESS/sriov_numvfs

3.2 Description des exemples de configuration

Vous trouverez des exemples de configuration de périphériques à large bande dans /opt/pf-bb-config. Chaque périphérique possède un ensemble spécifique de fichiers de configuration, mais tous les fichiers de configuration suivent le même format.

[section name]
key = value
; This is a comment.

La section suivante fournit des détails sur l'accélérateur ACC100/ACC200.

3.2.1 La configuration ACC100/ACC200

Dans les exemples /opt/pf-bb-config/acc*, vous pouvez ajuster les attributs suivants :

pf_mode_en

Si cet attribut est défini sur 1, toutes les files d'attente du périphérique sont assignées à des fonctions physiques (PF) et aucune n'est assignée à des fonctions virtuelles (VF). PF et VF s'excluent mutuellement.

num_qgroups

Il existe huit groupes de files d'attente que vous pouvez allouer à toutes les opérations.

num_vf_bundles

Choisissez une valeur comprise entre 1 et 16. La mémoire DDR disponible est ensuite divisée.

num_aqs_per_groups

Définit le nombre maximal de files d'attente atomiques dans un groupe de files d'attente unique.