VMware Integrated OpenStack prend en charge le placement d'accès mémoire non uniforme (NUMA, Non-Uniform Memory Access) des instances d'OpenStack dans l'environnement vSphere sous-jacent.

Important : Cette fonctionnalité est proposée dans VMware Integrated OpenStack Carrier Edition uniquement. Pour plus d'informations, reportez-vous à la section Gestion des licences VMware Integrated OpenStack.

NUMA permet de lier des nœuds petits et économiques à l'aide d'une connexion hautes performances pour garantir une faible latence et un débit élevé. Les environnements de télécommunications exigent souvent cette efficacité pour les fonctions de réseau virtuel (VNF, Virtual Network Functions). Pour plus d'informations à propos de NUMA dans vSphere, reportez-vous à la section Utilisation des instances NUMA avec ESXi dans Gestion des ressources vSphere.

Pour obtenir des informations sur la configuration NUMA actuelle, exécutez la commande suivante sur les hôtes ESXi :

vsish -e get /net/pNics/vmnic<id>/properties | grep 'Device NUMA Node'

Conditions préalables

  • Assurez-vous que les vCPU, la mémoire et les cartes réseau physiques qui doivent servir au trafic de machine virtuelle se trouvent sur le même nœud.
  • Dans vSphere, créez une stratégie d'association qui inclut toutes les cartes réseau physiques qui se trouvent sur le nœud NUMA. Reportez-vous à Stratégie d'association et de basculement dans Mise en réseau vSphere.

Procédure

  1. Connectez-vous à Integrated OpenStack Manager en tant qu'utilisateur root.
    ssh root@mgmt-server-ip
  2. Ouvrez la boîte à outils et définissez le mot de passe du compte admin.
    toolbox
    export OS_PASSWORD=admin-account-password
  3. Créez un réseau Neutron dans lequel toutes les cartes réseau physiques sont placées sur le même nœud NUMA.
  4. Créez un type OpenStack qui inclut la propriété numa.nodeAffinity.
    nova flavor-key flavor-id set vmware:extra_config='{"numa.nodeAffinity": "numa-node-id"}'
  5. Lancez une instance d'OpenStack en utilisant le type et le réseau créés dans cette procédure.

    Instance disposant de plusieurs SRIOV

    Vous pouvez configurer une vNIC de machine virtuelle avec plusieurs SRIOV pour équilibrer la charge de travail sur plusieurs adaptateurs de réseau physique (pnic) afin d'éviter la congestion du trafic réseau sur un pnic sans trafic sur un autre pnic. Cette application peut être alignée sur NUMA avec le pnic pour éviter toute perte de performances. Deux pnic fonctionnent comme des paires pour la redondance de la connectivité physique et des paires différentes pour le trafic ou le VLAN différent.
    Note : Dans VMware Integrated OpenStack 7.2, si vous souhaitez spécifier nodeAffinity, vous devez le définir dans le type. Vous ne pouvez pas effectuer la configuration après la création de l'instance. De plus, si numa.nodeAffinity est déjà spécifié dans le type, il remplace le paramètre NUMA de pnic.
    Les étapes suivantes décrivent la procédure de création d'une instance avec plusieurs SRIOV :
    • Configurez nova-compute.conf.
      Pour la définition du PCI dans la CR de calcul Nova, vous pouvez utiliser le format suivant pour entrer le contenu dans la section values :
      '{"address": "<PCI address of vmnicX>", "product_id": "*", "vendor_id": "*", "physical_network":"<uuid of vlan transport zone of provider-networkA>"}'
      viocli update novacompute <nova-compute-cr-name>
      conf:
        nova_compute:
          DEFAULT:
           ......
          pci:
            passthrough_whitelist:
              type: multistring
              values:
              - '{"address": "0000:1a:00.0", "product_id": "*", "vendor_id": "*", "physical_network":"bf86b52f-a629-4c07-a8bd-14b4b46ba384"}'
              - '{"address": "0000:5e:00.1", "product_id": "*", "vendor_id": "*", "physical_network":"c12a7025-22bc-403c-8ff9-9a25a236704a"}'
              - '{"address": "0000:d8:00.0", "product_id": "*", "vendor_id": "*", "physical_network":"801cd687-b65b-449c-9892-c22647851bf3"}'
              - '{"address": "0000:d8:00.1", "product_id": "*", "vendor_id": "*", "physical_network":"7ab64053-9e48-416d-8b1e-80e1fccd3dcd"}'
    • Créez un réseau et un sous-réseau de fournisseurs.
      neutron --insecure net-create 3158-net --provider:network_type vlan --provider:physical_network c12a7025-22bc-403c-8ff9-9a25a236704a --provider:segmentation_id 3158
      openstack --insecure subnet create --network 3158-net --allocation-pool start=172.17.2.1,end=172.17.2.254 --gateway 172.17.0.1 --subnet-range 172.17.0.0/22 3158-subnet
      
    • Créez des ports SRIOV.
      neutron --insecure port-create 3158-net --name 3158-p1 --vnic_type direct
      neutron --insecure port-create 3158-net --name 3158-p2 --vnic_type direct
      neutron --insecure port-create 3158-net --name 3158-p3 --vnic_type direct
    • Lancer une instance avec le port spécifié. Vous pouvez voir l'adaptateur réseau ajouté à la machine virtuelle, et il est connecté à vmnic2
      nova boot --flavor m1.tiny --image a133ffd7-1601-42e5-a66f-1eb6130db093 --nic port-id=031e14e3-cf06-40e1-addf-3f13f5b5da66 --nic port-id=25c6ce90-2cff-4189-ae21-abc27a131ae7  <vm-name>