VirtualBox, et éventuellement d'autres logiciels de VM, permettent à l'utilisateur de spécifier le nombre de CPU exposés à la VM. Dans mon cas particulier, j'ai un processeur dual core, avec Windows 7 64 bits fonctionnant en natif et Ubuntu 9.04 64 bits en tant que VM.
Le fichier d'aide suggère de ne pas définir ce paramètre au-dessus du nombre de cœurs physiques disponibles. C'est logique. Alors, est-il préférable d'allouer 1 ou 2 cœurs de processeur? Cela dépend-il entièrement de la charge CPU native?
Les informations contenues dans cette réponse ne sont plus correctes . C'était correct à l'époque de la co-programmation stricte, mais ce n'est plus le cas.
Je garde la réponse ci-dessous pour la prospérité, mais ne vous fiez pas à elle pour être exacte pour les hyperviseurs modernes.
Vous ne devez jamais affecter tous vos cœurs en tant que vCPU dans une machine virtuelle.
Si une machine virtuelle demande tout temps CPU, VMWare a allouer soit tout le vCPU, ou aucun des vCPU.
Cela signifie que, sur un système à 4 cœurs si vous allouez les 4 cœurs, seul l'hôte ou l'invité peut se voir allouer du temps processeur, pas les deux en même temps.
Cela ruinera absolument les performances dans les deux environnements.
N'hésitez pas à allouer un nombre impair de cœurs (disons 3). Cela semble étrange, mais c'est une option totalement légitime.
En général, je n'alloue jamais plus de (n / 2) vCPU (dans votre cas, 2) - mais j'alloue normalement des cœurs sur des serveurs avec entre 12 et 32 cœurs où vous pouvez allouer un grand nombre de vCPU sans impact majeur.
la source
Le nombre de cœurs exposés aux processeurs invités n'affecte pas les performances autant que vous le souhaitez. Il ajuste simplement la quantité de cœurs que le CPU invité "voit".
Selon la configuration de l'émulateur, il pourrait littéralement réduire de moitié les performances de la machine virtuelle, ne rien faire ou avoir un impact uniquement sur la façon dont le système d'exploitation invité / les applications répartissent leur planification de threads.
Il est préférable de le laisser par défaut. Si vous rencontrez des problèmes de performances sur le PC hôte, vous pouvez simplement ajuster la priorité du processus avec le Gestionnaire des tâches de Windows.
la source
Comme Nate l'a mentionné, tant que votre machine virtuelle servira principalement à exécuter un processus à thread unique, il n'y a pas de raison d'allouer plus d'un cœur.
Cependant, si vous prévoyez de l'utiliser d'une manière qui peut bénéficier de plus de cœurs (programme multi-thread, de nombreux programmes parallèles, ..), l'histoire est plus compliquée. J'avais précédemment supposé que l'utilisation de la moitié de votre CPU pour votre VM était une bonne idée. Il s'avère que ce n'est pas toujours optimal.
La seule façon de s'en assurer est d'exécuter des tests de performances .. Je ne sais pas pourquoi, mais dans mon système Core2 Quad (qui prend en charge VT-x, la pagination imbriquée, ..), l'utilisation de 1 des 4 cœurs fonctionne mieux que d'utiliser 2 cœurs ou plus! Je vois cela simplement dans les temps de démarrage de la VM, mais aussi lors des benchmarks de compilation.
Avec d'autres matériels, les résultats sont différents. J'ai également un i7 avec 8 cœurs, et les performances semblent évoluer beaucoup mieux avec le nombre de cœurs (en utilisant 4 heureusement).
Mon conseil: testez d'abord un nouveau matériel.
la source
Je ferais confiance au planificateur du système d'exploitation et je définirais simplement la machine virtuelle sur le nombre de cœurs physiques, sauf si vous savez que vous voulez toujours que l'hôte ait un cœur potentiellement inactif pendant que vous êtes occupé dans la machine virtuelle.
la source
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 pendant que le système d'exploitation hôte est utilisé pour une autre activité, il peut être préférable d'utiliser deux cœurs de processeur pour la machine virtuelle afin que l'hôte en ait deux restants si la machine virtuelle est en pleine charge. En revanche, si vous travaillez principalement sur la machine virtuelle, vous pouvez utiliser tous les cœurs de processeur.
Cependant, à moins que l'on ne s'attende à ce que l'invité utilise les quatre cœurs à la fois, vous pouvez tous les utiliser en toute sécurité tout en continuant à travailler sur le système d'exploitation hôte. N'oubliez pas que vous pouvez toujours ajuster la priorité du processus de la machine virtuelle pendant qu'il s'exécute sur le système d'exploitation hôte, et le système équilibrera les charges en conséquence.
la source
oui, je dirais aussi que ça dépend. Mais je dirai 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 CPU. De cette façon, je peux utiliser à la fois la machine hôte et la machine virtuelle, et elles ont chacune des ressources CPU égales.
la source