web-dev-qa-db-fra.com

Y a-t-il un paramètre optimal pour le nombre de cœurs de processeur exposés à une machine virtuelle?

VirtualBox, et éventuellement d'autres logiciels VM, permet à l'utilisateur de spécifier le nombre de processeurs exposés au VM. Dans mon cas particulier, j'ai une CPU à double noyau, avec Windows 7 64 bits fonctionnant de manière native Nativement et Ubuntu 9.04 64 bits en tant que VM.

Le fichier d'aide suggère de ne pas définir ceci ci-dessus le nombre de cœurs physiques disponibles. C'est logique. Alors, est-ce que c'est mieux allouer 1 ou 2 cœurs CPU? Cela dépend-il entièrement de la charge du processeur indigène?

23
sblair

Cela dépend entièrement de ce que fait le système d'exploitation. Dans mon expérience personnelle A VM exécute un seul programme (Server de construction, TRAC Server, SVN, etc.) Il n'y a donc aucune raison de la définir au-dessus d'une.

Un cas possible peut être si c'est un utilisateur final sur une université qui utilise le système d'exploitation invité comme jetable (I.e. TAS), peut-être peut-être la définir à plus d'un.

6
Nate

Les informations de cette réponse ne sont plus correctes. Il était correct dans les jours de la co-planification stricte, mais n'est plus le cas.

Je garde la réponse ci-dessous pour l'amour de la prospérité, mais s'il vous plaît ne vous fiez pas à ce qu'il soit précis pour les hyperviseurs modernes.


Vous devriez jamais Attribuez tous vos noyaux en tant que VCPUS dans une machine virtuelle.

Si A VM demande tout Time CPU, VMware a Pour allouer soit Tout le vcpus, ou Aucun du VCPUS.

Ce que cela signifie, sur un système à 4 cœurs si vous allouez tous les 4 cœurs, alors seul l'hôte ou l'invité, peut être attribué le temps du processeur, pas à la fois en même temps.

Cela ruine absolument performance dans les deux environnements.

N'hésitez pas à allouer un nombre impair de cœurs (disons, 3). Il se sent étrange, mais c'est une option totalement légitime.

Généralement, je n'allocie jamais plus que (N/2) VCPUS (dans votre cas, 2) - mais je vais normalement allouer des noyaux sur des serveurs entre 12 et 32 ​​cœurs où vous pourrez attribuer un énorme nombre de VCPUS sans impact majeur.

18
Mark Henderson

Le nombre de cœurs exposés aux processeurs invités n'affecte pas la performance autant que vous le souhaitez. Il ajuste simplement la quantité de cœurs que la CPU invité "voit".

Selon la manière dont l'émulateur est configuré, il pourrait littéralement la moitié des performances de la machine virtuelle, ne fais rien ou n'a d'impact que sur la manière dont les systèmes d'exploitation invité/les applications divisent leur planification de fil.

Il est préférable de le laisser à la valeur par défaut. Si vous rencontrez des problèmes de performance sur le PC hôte, vous pouvez simplement ajuster la priorité de processus avec le gestionnaire de tâches Windows.

3
Breakthrough

Cela dépend de ce que vous voulez faire sur la machine virtuelle ainsi que sur la machine physique. Si vous devez utiliser la machine virtuelle lorsque le système d'exploitation hôte est utilisé pour une autre activité, il peut être préférable d'utiliser deux noyaux de processeur pour la VM de sorte que l'hôte ait deux restants si le VM est sous pleine charge. D'autre part, si vous travaillez principalement sur la machine virtuelle, vous pouvez utiliser tous les cœurs de processeur.

Toutefois, à moins que l'invité ne puisse s'attendre à utiliser les quatre noyaux à la fois, vous pouvez les utiliser en toute sécurité tout en continuant de travailler sur l'hôte OS. N'oubliez pas que vous pouvez toujours ajuster la priorité du processus VM lorsqu'il est en cours d'exécution sur le système d'exploitation hôte, et le système équilibrera les charges en conséquence.

1
bwDraco

Je ferrais confiance au planificateur du système d'exploitation et je viens de définir le VM au nombre de cœurs physiques, à moins que vous sachiez que vous voulez toujours que l'hôte ait un noyau potentiellement inactif pendant que vous êtes occupé dans la Vm.

1
Andrew Coleson

oui, je dirais aussi que cela dépend. Mais je vais dire ce que je préfère faire. Au travail, j'ai un processeur quad core. Donc, pour mon image virtuelle (Win7), j'ai alloué deux processeurs. De cette façon, je peux utiliser à la fois la machine hôte et la machine virtuelle en même temps, et chacune dispose de ressources égales du processeur.

0
Joel Martinez