Mauvaise performance réseau avec KVM (pilotes virtio) – Mise à jour: avec vhost_net

J'ai déjà mis en place plusieurs réseaux basés sur KVM et je n'ai jamais rencontré ce problème. Je ne peux pas penser à ce que j'aurais configuré autrement auparavant.

Installer

Fondamentalement, j'ai reçu et entièrement Dell Stack:

  • 2x Dell N2024 (commutateurs Gigabit empilés)
  • Plusieurs Dell R720 pour les hyperviseurs KVM
  • 2x Dell R320 pour passerelle / pare-feu

Toutes les machines exécutent CentOS6.5, les hyperviseurs, essentiellement l'installation standard avec quelques réglages sysctl.

À l'heure actuelle, j'ai configuré quelques tests de VM, avec une configuration similaire à leurs maîtres (CentOS 6.X, installation de base avec une configuration basée sur les marionnettes). Toutes les machines virtuelles sont:

  • Passé à l'un des deux réseaux physiquement séparés (c'est-à-dire que chaque hyperviseur a deux connections Ethernet, un pour un réseau public / DMZ ponté, l'autre, un privé)
  • Toutes les VM utilisent la virtio pour le réseau, les périphériques de blocs (essentiellement le résultat standard de l'exécution de la command virt-install) – par exemple (exemple libvirt config)

    <interface type='bridge'> <mac address='52:54:00:11:a7:f0'/> <source bridge='dmzbr0'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> 
  • et toutes les machines virtuelles ont access entre 2 et 8 VCPU et 8 et 64 Go de RAM, et leurs lecteurs sont des volumes LVM sur la machine hôte

Certaines copys de files simples dans la VM et les tests dd donnent des résultats parfaitement acceptables (300 Mo / s – 800 Mo / s dans ces tests de synthèse à petite échelle)

Performance du réseau entre les machines physiques

J'ai quitté les configurations Jumbo Frame / MTU pour l'instant, et le transfert du server vers le server sera très heureux de maximiser la connection Gigabit (ou là-bas) ( 100 Mo / s -> 118 Mo / s sur plusieurs tests de files volumineux à / de chaque machine )

Performance réseau entre une machine physique et VM (et VM vers VM)

Le transfert Rsync / SSH change constamment (instable) mais toujours entre 24 Mo / s et un maximum d'environ 38 Mo / s

J'ai effectué plusieurs autres tests: – Entre une machine matérielle IP sur un pont vers la VM (sur un autre pont) – Entre une IP de machines physiques sur un pont vers la VM (sur le même pont) – Essayé de démarrer la VM en utilisant e1000 drivers de périphériques au lieu de virtio

Rien ne semble avoir fonctionné, est-ce que quelqu'un a déjà rencontré cette dégradation de la performance avant? Je viens de vérifier mon ancien réseau (hébergé dans un autre DC), et en dehors du fait qu'il utilise un commutateur différent (un PowerConnect 2824 beaucoup less cher), la performance du réseau VM semble être plus proche de 80 à 90% du réseau brut performance (pas less de la moitié)

Si je peux fournir des configurations / configurations ou des informations supplémentaires, je suis plus qu'heureux!

Mise à jour (14/08/2014)

Essayé quelques points:

  • Encadrements Jumbo / MTU 9000 sur pont hôte et adaptateur et VM (amélioration de la performance marginale (moyenne supérieure à 30 Mo / s)
  • Testé GSO, LRO, TSO désactivé / activé sur l'hôte (aucun effet notable)
  • Testé d'autres optimizations sysctl (modification de rmem / wmem, avec augmentation de performance soutenue de 1-2%)
  • Pilote vhost_net testé (petite augmentation de performance)
  • Le pilote vhost_net est activé (comme ci-dessus) avec les mêmes optimizations sysctl (au less un saut de performance de 10-20% précédemment)
  • Selon le guide d'optimization des performances de Redhat, ils ont mentionné que la multiqueue pourrait aider, bien que je ne remarque aucune différence.

L'hôte semble s'asseoir à 125% de processeur (pour le process hôte), pourrait-il avoir quelque chose à voir avec l'atsortingbution de trop de VCPU à l'affinité de l'invité ou de la CPU / Numa?

Cependant, après tout cela, j'ai semblé avoir augmenté le taux moyen soutenu entre 25-30MB / s à 40-45MB / s. C'est une amélioration décente, mais je suis sûr que je peux me rapprocher des performances en métal nu (c'est toujours une façon juste inférieure à la moitié du moment).

D'autres idées?

One Solution collect form web for “Mauvaise performance réseau avec KVM (pilotes virtio) – Mise à jour: avec vhost_net”

Vos instances KVM devraient pouvoir saturer la connection réseau de votre hôte sans problème.

Ma première recommandation ici est de mettre à niveau l'hôte et le kernel de l'invité. Le kernel stock CentOS 6.5 n'a pas d'excellente performance pour KVM. Je suggérerais kernel-lt de ELRepo (ou kernel-ml si vous vous sentez courageux). Cela devrait vous donner une impulsion décente dans la performance tout de suite.

Ensuite, essai avec iperf3 (ou même l'iperf plus ancien). Cela vous donnera le plus près possible d'une connection réseau pure. Vos tests rsync / ssh ne sont pas vraiment valides, car ils frappent définitivement le disque. RSync, en particulier, ne fait peut-être pas d'IO séquentielle comme votre test dd (essayez d'utiliser le fil à la place).

La chose intéressante ici est que le trafic VM vers VM n'atteindra pas le controller réseau. Cela se fera uniquement sur l'hôte, de sorte que le rest de votre réseau (et les différents parameters de déchargement) n'ont pas vraiment de sens ici.

Une autre chose à vérifier: votre server a-t-il réduit les CPU? Nous avons eu un certain nombre de machines Dell pensent qu'elles étaient inactives et commencent à utiliser la CPU de façon beaucoup plus lente alors qu'ils auraient dû l'être. L'économie d'énergie ne reconnaît pas toujours les charges de travail du server.

Vous désirez sans aucun doute venir ici, ne perdez même pas votre time à tester les options émulées.

Vous ne l'avez pas mentionné, mais si votre server possède les NIC basées sur i350, vous pouvez consulter SR-IOV (en supposant que vous voulez seulement <= 7 machines virtuelles par machine). Cela donne à VM l'access direct à la NIC physique (au prix de la perte de fonctionnalité, par exemple sans support de filter) et sera plus efficace. Vous n'avez pas besoin de cela pour get des vitesses gigabit complètes.

  • Installez Windows 2012 R2 sur KVM-virtualizaton
  • La performance du disque kvm virtio évalue mal avec la charge de travail iozone
  • Windows Server 2012 R2 ne trouve pas de pilotes Virtio lors de l'installation sur KVM
  • FreeBSD, VirtIO et Virtualbox
  • La search de nouveaux disques est-elle jointe en utilisant virtio?
  • Pourquoi posix.lstat prend-il si longtime? (sauvegarde par duplicité du système de files virtio 9p)
  • Installation des pilotes VirtIO sur Win7
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.