J'essaie de trouver de la documentation ou des guides de bonnes pratiques pour la virtualisation en ce qui concerne le provisionnement de processeurs virtuels par cœur physique (d'un processeur). Si cela importe, je regarde vmWare pour l'implémentation de la virtualisation. Par exemple, un processeur Intel Xeon peut avoir 4, 8, etc. cœurs. Je souhaite en savoir plus sur l'approvisionnement au-delà d'un seul vCPU par cœur physique. Le fournisseur avec qui je parle pense définitivement qu'un seul cœur peut être provisionné en plusieurs processeurs virtuels.
Ce que je vois couramment dans mes recherches jusqu'à présent, c'est: "Eh bien, cela dépend de votre application." Et dans ce cas, mon application édite du code, compile / lie, teste et gère la configuration. Bien sûr, toutes les machines virtuelles n'ont pas besoin d'être configurées avec plusieurs vCPU par cœur, mais dans le cas général.
la source
Pour développer l'écriture d'ewwhite, à moins que vous n'ayez des applications qui peuvent explicitement tirer parti de plusieurs vCPU ou de plusieurs cœurs par vCPU, il n'y a absolument aucun avantage à allouer plusieurs vCPU / cœurs à une machine virtuelle. En fait, le plus souvent, vous vous retrouverez avec des performances inférieures au lieu de s'exécuter sur un seul vCPU auquel un cœur est affecté, en partie en raison de la surcharge de planification requise pour exécuter plusieurs vCPU.
FWIW, dans un environnement VDI, le nombre souvent cité est de 5 processeurs virtuels par cœur physique. Bien sûr, cela tient compte des ordinateurs de bureau. Si vos machines virtuelles sont très occupées à compiler du code tout le temps, vous ne pourrez peut-être pas installer 5 vCPU par cœur physique.
La raison pour laquelle tant de gens disent que "cela dépend" est parce que c'est vraiment le cas. Examinez vos valeurs CPU Ready et décidez ensuite si vous pouvez augmenter la charge CPU sur un système particulier. CPU Ready est une mesure du vCPU prêt à exécuter une commande, mais il doit attendre que le temps CPU physique soit disponible.
Dans votre cas, si vous compilez de gros programmes, il est tout à fait possible que vos machines virtuelles aient réellement besoin de beaucoup de temps processeur. Comme l'a noté ewwhite, normalement la virtualisation a tendance à être contrainte sur les E / S disque et RAM plutôt que sur le processeur.
la source
absolutely zero benefit in allocating multiple vCPUs/cores to a VM
- pas tout à fait correct. Nous avons une application à un seul thread qui se bloquait sur une base hebdomadaire. Lorsqu'un seul processeur virtuel était à 100%, il était impossible d'accéder à ce système et nous avons dû effectuer une réinitialisation du niveau d'hyperviseur de la machine virtuelle. Nous avons ajouté un 2e vCPU et lorsque l'application s'est bloquée, nous avons pu facilement entrer et tuer le fil incriminé. C'est un peu un cas de bord vrai, mais vous ne pouvez jamais traiter en absolu.Le problème sous-jacent est fondamentalement le même que pour la planification de processus sur un système physique. Tant que la charge du système est inférieure au nombre de cœurs (ou même de processeurs logiques, en cas d'HyperThreading), tout va bien et les processeurs peuvent gérer la charge.
Donc, tant que la charge simultanée sur tous les processeurs virtuels utilisés ne dépasse pas la charge qui peut être gérée par vos cœurs physiques, tout va bien.
Pour vos demandes, seule la compilation est un travail gourmand en ressources processeur, qui n'est nécessaire que de temps en temps. Pour les VM de compilateur, nous allouons autant de CPU que possible. Donc, s'il est nécessaire de compiler, cela se fera aussi rapidement que possible (si votre compilateur prend en charge la compilation parallèle).
Cela peut ne pas être vrai pour une machine virtuelle de compilation qui est sous une charge constante (par exemple, si vous fournissez un service Internet pour effectuer des compilations et qui est constamment utilisé).
la source
Une règle générale que j'ai vue (peut-être dans la documentation de VMware) est de ne pas allouer plus de cœurs à une machine virtuelle qu'il n'en existe physiquement sur l'hôte, car cela entraînerait l'émulation de plusieurs vCores sur un seul cœur, ajoutant une surcharge inutile.
la source