Considérations relatives à la machine virtuelle Linux
Les machines virtuelles Linux et BSD ont des considérations supplémentaires par rapport aux machines virtuelles Windows dans Hyper-V.
La première considération est de savoir si les services d’intégration sont présents ou si la machine virtuelle s’exécute simplement sur du matériel émulé. Un tableau des versions Linux et BSD qui ont intégré les services d’intégration ou les proposent au téléchargement est disponible dans Machines virtuelles Linux et FreeBSD prises en charge pour Hyper-V sur Windows. Ces pages contiennent des grilles des fonctionnalités Hyper-V disponibles pour les versions de distribution Linux et des notes sur ces fonctionnalités, le cas échéant.
Même lorsque l’invité exécute les services d’intégration, il peut être configuré avec du matériel hérité qui ne présente pas les meilleures performances. Par exemple, configurez et utilisez une carte Ethernet virtuelle pour l’invité au lieu d’utiliser une carte réseau héritée. Avec Windows Server 2016, un réseau avancé comme SR-IOV est également disponible.
Performances réseau Linux
Par défaut, Linux active l’accélération matérielle et les déchargements. Si vRSS est activé dans les propriétés d’une carte réseau sur l’hôte et que l’invité Linux a la possibilité d’utiliser vRSS, la fonctionnalité est activée. Dans PowerShell, ce même paramètre peut être modifié avec la commande EnableNetAdapterRSS
.
De même, la fonctionnalité VMMQ (RSS de commutateur virtuel) peut être activée sur la carte réseau physique utilisée par l’invité dans Propriétés>Configurer...>onglet Avancé>. Définissez RSS de commutateur virtuel sur Activé, ou activez VMMQ dans PowerShell comme suit :
Set-VMNetworkAdapter -VMName **$VMName** -VmmqEnabled $True
Dans l’invité, un réglage TCP supplémentaire peut être effectué en augmentant les limites. Pour obtenir les meilleures performances, la répartition de la charge de travail sur plusieurs processeurs et l’utilisation de charges de travail profondes permettent d’obtenir le meilleur débit, car les charges de travail virtualisées ont un temps de latence plus élevé que les charges de travail « nues ».
Voici quelques exemples de réglages de paramètres qui ont été utiles dans les benchmarks réseau :
net.core.netdev_max_backlog = 30000
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.ipv4.tcp_wmem = 4096 12582912 33554432
net.ipv4.tcp_rmem = 4096 12582912 33554432
net.ipv4.tcp_max_syn_backlog = 80960
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 10240 65535
net.ipv4.tcp_abort_on_overflow = 1
Un outil utile pour les micro-benchmarks réseau est ntttcp, qui est disponible à la fois sur Linux et Windows. La version Linux est open source et disponible à partir de ntttcp-for-linux sur github.com. La version Windows se trouve dans le centre de téléchargement. Lors du paramétrage des charges de travail, il est préférable d’utiliser autant de flux que nécessaire pour obtenir le meilleur débit. À l’aide de ntttcp pour modéliser le trafic, le paramètre -P
définit le nombre de connexions parallèles utilisées.
Performances du stockage Linux
Certaines bonnes pratiques, comme les suivantes, sont répertoriées dans Bonnes pratiques pour l’exécution de Linux sur Hyper-V. Le noyau Linux a différents planificateurs d’E/S pour réorganiser les requêtes avec différents algorithmes. NOOP est une file d’attente FIFO (premier entré/premier sorti) qui passe la décision de planification à prendre par l’hyperviseur. Il est recommandé d’utiliser NOOP comme planificateur lors de l’exécution d’une machine virtuelle Linux sur Hyper-V. Pour modifier le planificateur d’un appareil spécifique, dans la configuration du chargeur de démarrage (/etc/grub.conf, par exemple), ajoutez elevator=noop
aux paramètres du noyau, puis redémarrez.
Comme pour la mise en réseau, les performances des invités Linux avec stockage bénéficient le plus des files d’attente multiples avec suffisamment de profondeur pour occuper l’hôte. Les performances de stockage du micro-benchmarking sont probablement idéales avec l’outil de benchmark fio et le moteur libaio.