Nous utilisons Ubuntu 12.04 avec les paramètres suivants:
- Dell R910
- Noyau 3.2.0-25-générique # 40-Ubuntu SMP x86_64 x86_64 x86_64 GNU / Linux
- kvm 1:84 + dfsg-0ubuntu16 + 1.0 + noroms + 0ubuntu13
- qemu-kvm 1.0 + noroms-0ubuntu13
- qemu-common 1.0 + noroms-0ubuntu13
- qemu-kvm 1.0 + noroms-0ubuntu13
- 4 x CPU Intel (R) Xeon (R) E7- 4870 à 2,40 GHz (chacun avec 10 cœurs physiques, HT et Intel VT activés)
- Les invités Windows n'ont actuellement pas de VirtIO, mais cela va bientôt changer
Nous exécutons plusieurs invités Windows sur cette machine, l'un d'eux est Windows 2003 32 bits, un autre Windows 2008 (64 bits). Nous sommes actuellement aux prises avec des problèmes de performances et avons joué avec les modèles de CPU.
Nous utilisons généralement "qemu-system-x86_64 pour notre invité Windows 32 bits, par exemple:
/usr/bin/qemu-system-x86_64 -S -M pc-1.0 -cpu qemu32 -enable-kvm -m 4096 -smp 4,sockets=4,cores=1,threads=1 [...]
La performance de cet invité s'est avérée un peu faible. Nous n'avons pas encore exécuté de référence, mais disons que la copie d'une grande quantité de données (fichiers) à l'intérieur de la machine virtuelle d'un répertoire à l'autre va beaucoup plus vite lorsque nous basculons le modèle de processeur de "-cpu qemu32" vers "-cpu Nehalem ". Les fichiers qui ont pris environ 2: 40h à copier copient maintenant dans les 40 minutes. Bien sûr, ce n'est pas un test de haute qualité et il y a beaucoup de place pour une tentative plus professionnelle. Mais c'est un indicateur clair que le choix du modèle de processeur correct pourrait affecter considérablement les performances de l'invité.
Maintenant, je suis devenu curieux et j'ai couru:
qemu-x86_64 -cpu ?
x86 [n270]
x86 [athlon]
x86 [pentium3]
x86 [pentium2]
x86 [pentium]
x86 [486]
x86 [coreduo]
x86 [kvm32]
x86 [qemu32]
x86 [kvm64]
x86 [core2duo]
x86 [phenom]
x86 [qemu64]
Et:
kvm -cpu ?model
x86 Opteron_G3 AMD Opteron 23xx (Gen 3 Class Opteron)
x86 Opteron_G2 AMD Opteron 22xx (Gen 2 Class Opteron)
x86 Opteron_G1 AMD Opteron 240 (Gen 1 Class Opteron)
x86 Nehalem Intel Core i7 9xx (Nehalem Class Core i7)
x86 Penryn Intel Core 2 Duo P9xxx (Penryn Class Core 2)
x86 Conroe Intel Celeron_4x0 (Conroe/Merom Class Core 2)
x86 [n270] Intel(R) Atom(TM) CPU N270 @ 1.60GHz
x86 [athlon] QEMU Virtual CPU version 1.0
x86 [pentium3]
x86 [pentium2]
x86 [pentium]
x86 [486]
x86 [coreduo] Genuine Intel(R) CPU T2600 @ 2.16GHz
x86 [kvm32] Common 32-bit KVM processor
x86 [qemu32] QEMU Virtual CPU version 1.0
x86 [kvm64] Common KVM processor
x86 [core2duo] Intel(R) Core(TM)2 Duo CPU T7700 @ 2.40GHz
x86 [phenom] AMD Phenom(tm) 9550 Quad-Core Processor
x86 [qemu64] QEMU Virtual CPU version 1.0
Avec toutes ces différentes versions, c'est un peu difficile à deviner. "Nehalem" semble être le plus performant de cette liste. Maintenant, je me demande comment savoir quel modèle de processeur est le meilleur pour mon invité? En naviguant sur Internet, j'ai trouvé les ressources suivantes:
- http://rwmj.wordpress.com/2010/10/08/32-or-64-bit-virtual-cpu-in-kvm/
- http://www.linux-kvm.org/page/Tuning_KVM
Quand j'ai lu ces sites correctement, ils prétendent que "-cpu host" pourrait apporter les meilleures performances. Je n'ai pas encore de soucis concernant la migration, car les deux hôtes KVM sont équipés de la même manière (exactement le même matériel).
Alors, que recommandent les administrateurs KVM expérimentés? Existe-t-il une règle d'or ou même une matrice, comme "ce modèle est le meilleur pour cet OS invité"?
Mes excuses si je pouvais trouver ces informations par moi-même - j'ai effectué diverses recherches sur Google et parcouru de nombreux sites Web. Je n'ai pas pu trouver quelque chose qui réponde à ma question.
Réponses:
C'est assez simple vraiment. Pour les clusters homogènes et les configurations à hôte unique, utilisez le
host
option. Pour les clusters mixtes, utilisez la version de processeur la plus basse disponible, donc si un hôte est Penryn et l'autre Nehalem, utilisez Penryn sur les deux.Si vous utilisez RHEV ou oVirt, cela est déjà intégré. VMWare l'a appelé "EVC" et le positionne comme une fonctionnalité énorme.
Pour en revenir aux performances, vous avez certainement besoin de virtio partout où vous pouvez le mettre. Et si vous rencontrez toujours des goulots d'étranglement en matière de performances, ceux-ci peuvent généralement être résolus au cas par cas, selon l'endroit où ils se produisent.
[offtop] Sur votre choix de distribution j'ai déjà commenté dans un autre fil [/ offtop]
la source
Ne perdez plus de temps à peaufiner quoi que ce soit.
Installez les pilotes virtIO et revenez. La différence est si énorme que toute amélioration que vous pouvez trouver maintenant n'aura aucun sens avec virtIO.
Juste un exemple avec l'un de nos serveurs:
- sans virtIO, un W2k3 peut gérer environ 10 utilisateurs de Terminal Server
- avec virtIO, la même machine avec le même système d'exploitation gère actuellement 120 à 125 utilisateurs avec peu de ralentissement. Et nous avons ajouté une autre machine virtuelle pour exécuter SQL Server sur le même ordinateur physique
la source
Qemu ne fonctionne pas de la même manière que de nombreux autres hyperviseurs. Pour commencer, il peut fournir une émulation complète. Cela signifie que vous pouvez exécuter du code x86 sur un processeur ARM, par exemple. En mode KVM, lorsque vous l'utilisez, cela ne fait pas vraiment cela ... le processeur est exposé quoi qu'il arrive, mais ce qui est signalé au système d'exploitation sera modifié par l'
-cpu
indicateur.Si vous voulez des vitesses plus rapides, c'est un point de départ pour essayer d'adapter au mieux les capacités du processeur virtuel à votre processeur réel. Cela réduira les cas où des opcodes sous-optimaux sont appelés pour exécuter des tâches, et réduira également les opcodes qui ne sont pas possibles sur votre matériel en cours de conversion en autre chose en premier. Étant donné que votre modèle de processeur Xeon est sorti début 2011, il prend probablement en charge la plupart du temps en ligne avec la série Core i7. Pour cela, je dirais que l'architecture Nehalem est votre meilleure émulation.
Citant l'un de vos liens ( Tuning KVM ):
Ainsi, si vous pensez que vous risquez de déplacer suffisamment de choses pour créer un problème, vous pouvez trouver tous les ensembles d'instructions pris en charge que vous pensez que tout processeur que vous avez actuellement ou que vous pourriez avoir à l'avenir prend en charge et les énumère.
La plupart du temps, cependant, vous voulez vous en tenir
-cpu host
. La spécification d'un processeur avec moins d'indicateurs disponibles signifie que les applications éviteront d'utiliser des fonctionnalités qui pourraient les rendre plus rapides.la source
Vous obtenez l'option «-cpu host» confuse. Cette option n'active PAS uniquement toutes les fonctionnalités du processeur spécifiques à votre système hôte, elle active TOUTES les fonctionnalités prises en charge par votre processeur et toutes celles qui peuvent être émulées même si votre processeur ne les prend pas en charge.
-cpu host
est une bonne option mais pas la plus efficace, car elle peut activer des options pouvant être émulées que votre processeur ne prend pas en charge, le système invité peut être légèrement ralenti à chaque fois qu'il essaie d'utiliser l'une de ces fonctionnalités qui doit être émulée .
Source: http://wiki.qemu.org/Features/CPUModels
la source
CentOS 6.7 me donne des performances KVM + Spice correctes sur Dell R910. Je pense qu'une fois que vous aurez essayé, vous ne reviendrez à rien d'autre (sérieusement)!
la source