Cet article a été rédigé à l’origine par Abhijit Khande et Vineeth V Acharya de l’équipe d’ingénierie DELL Windows.
Les commentaires sont les bienvenus ! Pour suggérer un sujet ou faire d’autres commentaires, contactez WinServerBlogs@dell.com.
Avec le système d’exploitation Microsoft® Windows Server® 2012 Beta, Microsoft a introduit la prise en charge d’un certain nombre de fonctionnalités dans l’espace réseau. L’une de ces caractéristiques importantes et intéressantes est
Virtualisation d’E/S racine unique (SR-IOV), qui permet aux machines virtuelles de partager un seul périphérique PCI-e. Cet article fournit une vue d’ensemble de base de SR-IOV dans Windows Server 2012 Beta et la façon dont il réduit considérablement l’utilisation du processeur dans un environnement virtualisé lors des E/S réseau.
L’interface SR-IOV est une extension de la spécification PCI Express (PCIe). SR-IOV permet à un seul périphérique PCIe, tel qu’une carte réseau, de fournir plusieurs surfaces matérielles légères sur le bus PCI et de séparer l’accès à ses ressources entre les différentes instances. Il est réalisé par l’utilisation de plusieurs fonctions virtuelles (VF) en plus de la fonction physique (PF) (habituelle). Étant donné qu’elle dépend du matériel, le périphérique PCIe et la plate-forme doivent tous deux prendre en charge cette fonctionnalité.
Généralement, un paquet destiné à la machine virtuelle est reçu par l’adaptateur réseau physique (à l’aide de la fonction physique) présent dans le système d’exploitation hôte. Ce paquet est géré par le module de pilote NDIS (Network Driver Interface Specification for NICs). Le paquet est ensuite transmis au commutateur Hyper-V, qui traite le paquet (par exemple, le routage, le filtrage VLAN) et le transfère à la machine virtuelle destinée via VMBus, comme illustré sur la Figure 1. Le chemin inverse est suivi lorsque la machine virtuelle doit envoyer un paquet.
Avec SR-IOV, la machine virtuelle peut utiliser une fonction virtuelle (VF) pour envoyer et recevoir des paquets directement à l’adaptateur réseau physique en contournant complètement le chemin traditionnel, comme illustré sur la Figure 1. Cela permet non seulement d’optimiser les E/S réseau, mais aussi de réduire la surcharge du processeur de la machine hôte.
Graphique 1 : Chemin d’accès des données avec et sans SR-IOV
Live Migration et SR-IOV
Dans Windows Server 2012 Beta, Live Migration peut être effectué avec SR-IOV utilisé par une machine virtuelle. Si les systèmes source et cible prennent en charge SR-IOV et que la cible dispose d’une VF disponible, la machine virtuelle utilisera la fonction virtuelle. Si ce n’est pas le cas, la machine virtuelle reviendra au chemin traditionnel (VM-Bus).
Chaque carte réseau compatible SR-IOV expose un nombre fixe de fonctions virtuelles, qui peuvent être obtenues en exécutant la commande PowerShell « Get-NetAdapterSriov ».
Analyse des performances
Nous avons effectué quelques tests dans notre laboratoire pour comparer les performances avec et sans SR-IOV. L’environnement de test se compose d’un serveur de test (sur lequel les tests sont exécutés) et d’un serveur de fichiers. Le serveur de test est un serveur Dell PowerEdge™ R710 II équipé d’un adaptateur Ethernet® Intel X520 10 Go et du système d’exploitation Windows Server 2012 Beta. Le serveur de fichiers héberge plusieurs partages SMB et est connecté au serveur de test à l’aide d’un réseau de 10 Go via un commutateur Dell PowerConnect™ 8024.
Nous avons capturé les données de performance en termes de CPU utilisés par les DPC (Deferred Procedure Call) programmés par les différents modules de pilote participant au transfert de données réseau. Ces données ont été capturées dans les systèmes d’exploitation invité et hôte, comme décrit dans les scénarios suivants. Le serveur de test dispose de 4 machines virtuelles identiques avec Windows Server 2012 Beta en tant que système d’exploitation invité. Les 4 machines virtuelles sont connectées au réseau 10 Go via un commutateur virtuel. Cette configuration de test est illustrée dans la Figure 2.
Graphique 2 : Tester la configuration
Avant de présenter les données de performances, il est important d’introduire un paramètre très critique utilisé pour ce test. Dans l'
Microsoft Windows Il existe un mécanisme système appelé DPC (Deferred Procedure Call), qui permet d’effectuer des tâches prioritaires (par exemple, un
Gestionnaire d’interruptions) pour différer les tâches requises, mais de priorité inférieure, pour une exécution ultérieure. Cela permet aux pilotes de périphériques et autres consommateurs d’événements de bas niveau d’exécuter rapidement la partie hautement prioritaire de leur traitement, et de planifier un traitement supplémentaire non critique pour une exécution à une priorité inférieure.
Scénario 1 : Résultats des performances dans la machine virtuelle (système d’exploitation invité) :
Nous avons utilisé quatre machines virtuelles (VM) pour ce scénario (VM 1 à VM 4). Nous avons activé SR-IOV sur les VM 1 et VM 2 (en cochant l’option « Enable SR-IOV » dans les paramètres de VM) et désactivé SR-IOV sur les VM 3 et VM 4 (en décochant la même option). Par conséquent, les machines virtuelles 1 et 2 utiliseront la fonction virtuelle (exposée par l’adaptateur Intel), tandis que les machines virtuelles 3 et 4 utiliseront le chemin synthétique (VMBus) pour toute communication réseau, comme illustré sur la Figure 2.
Nous avons commencé à copier des données (d’une taille de 20 Go) à partir d’un seul partage SMB vers les machines virtuelles et capturé les journaux d’utilisation du processeur du système dans le système d’exploitation invité.
Graphique 3 : Utilisation du processeur DPC dans la machine
virtuelle Dans la Figure 3, SR-IOV fait référence à l’utilisation moyenne du processeur DPC dans VM-1 et VM-2 et non-SR-IOV fait référence à l’utilisation moyenne du processeur DPC dans VM-3 et VM-4. Si nous regardons le graphique, nous voyons qu’il n’y a pas beaucoup de différence dans l’utilisation du processeur entre les deux cas, mais nous n’avons pas encore pris en compte l’utilisation du processeur dans la machine hôte.
Scénario 2 : Résultat des performances sur la machine hôte (système d’exploitation hôte) :
Nous avons utilisé une machine virtuelle pour ce scénario. Nous avons commencé à copier les données (d’une taille de 20 Go) du partage SMB vers la machine virtuelle et avons capturé l’utilisation du processeur DPC de 2 modules, NDIS et VMBUS, qui sont utilisés dans les E/S réseau.
Graphique 4 : Utilisation du processeur DPC sur la machine
hôte Les résultats sont illustrés à la Figure 4. Comme on pouvait s’y attendre, il existe une grande différence dans l’utilisation du processeur entre les deux cas (SR-IOV et non-SR-IOV). L’utilisation du processeur est de l’ordre de 102 dans le cas d’une SR-IOV et de l’ordre de 103-104 dans le cas d’une non-SR-IOV. Cela est principalement dû au fait que, dans le cas de SR-IOV, la machine virtuelle communique directement avec la carte NIC physique via la fonction virtuelle. Par conséquent, les cycles du processeur de l’hôte ne sont pas utilisés pour traiter les paquets réseau. Dans le cas d’un non-SR-IOV (comme illustré sur la Figure 1), le système d’exploitation invité communique avec le système d’exploitation hôte via le bus de machine virtuelle, qui à son tour traite les paquets et les envoie via la carte NIC physique. Par conséquent, des modules tels que VM Bus et NDIS sont largement utilisés.
Lors du calcul de l’utilisation totale du processeur, nous observons que l’utilisation du processeur lors des E/S réseau est nettement inférieure lors de l’utilisation de SR-IOV. Par conséquent, Windows Server 2012 Beta avec SR-IOV activé aidera les clients à réduire la surcharge du processeur lors des E/S réseau et à améliorer ainsi les performances globales du système.
Configuration de SR-IOV à l’aide de PowerShell
Vous pouvez utiliser les commandes PowerShell suivantes pour créer un nouveau commutateur virtuel avec SR-IOV activé et connecter le commutateur virtuel à l’adaptateur réseau virtuel d’une machine virtuelle existante.
NOTE: Avant d’exécuter les commandes suivantes, les options suivantes doivent être activées dans le BIOS
- Technologie de virtualisation
- Activation globale de SR-IOV
(En supposant qu’un seul adaptateur réseau (Intel X520) soit connecté)
$NetAdap = Get-NetAdapter | Where-Object { $_. Status -eq « Up"}(Le commutateur -EnableIov est utilisé pour activer SR-IOV dans le commutateur virtuel)
New-VMSwitch -Name « SRIOV Switch » -NetAdapterName $NetAdap.Name -AllowManagementOS $True -Notes « SRIOV Switch on X520 » -EnableIov $True
$VMSw = Get-VMSwitch
Ajout d’un nouvel adaptateur réseau à VM-1 et connexion au commutateur virtuel.
Add-VMNetworkAdapter -SwitchName $VMSw.Name -VMName VM-1 -Name « SRIOV Adapter"
REMARQUE :Pour que cette commande fonctionne, la machine virtuelle doit être désactivée)
Vous pouvez également utiliser un adaptateur réseau de machine virtuelle déjà existant à l’aide des commandes suivantes)
$VMNet = Get-VMNetworkAdapter -VMName VM-1
Connect-VMNetworkAdapter -VMName VM-1 -SwitchName $VMSw.Name -Name $VMNet.Name
Chaque adaptateur réseau de machine virtuelle possède deux propriétés, IovWeight et VmqWeight, qui correspondent respectivement à SR-IOV et VMQ. Le réglage de ces pondérations active ou désactive les fonctionnalités.