web-dev-qa-db-fra.com

Hôte de noyau quadrial avec hyper-threading, combien de processeurs à configurer dans VirtualBox?

J'ai un processeur I7 quad-core avec hyperthreading (8 cœurs logiques), lorsque j'ai configuré une machine virtuelle pour utiliser 8 processeurs, Virtualbox m'a donné un avertissement indiquant que je n'ai que quatre noyaux (ce qui est vrai) et que cela peut causer une problème de performance. Mais l'hyper-threading est une fonction matérielle, de sorte que l'OS voit 8 cœurs et envoie des instructions à tous 8. Et si vous le réglez sur 4 causé le VM utiliser 2 cœurs (4 threads). de 4 threads simultanés (sur les 4 cœurs)? L'avertissement que j'ai pris en compte-t-il pour que ma machine a hyper-threading?

10
Anthony

Basé sur la référence faite par Kristian Wedberg Je dirais que vous devriez utiliser tous les noyaux logiques que vous avez.
[.____] aussi j'ai fait ma propre référence en utilisant le même CPU (I7, 4 CPU avec HT) qui a confirmé la performance Boost pour des applications multi-threadées. Si Guest PC (Gagnez. 8.1 X64) Utilisé tous les 8 noyaux, puis l'hôte PC (Ubuntu X64) a également utilisé les 8 noyaux.

enter image description here

J'ai également comparé la performance dans les applications à une seule fois. Dans les deux cas, j'ai mesuré les mêmes valeurs, donc il n'y a pas de pénalité en utilisant plus que le nombre de processeurs physique (mais logique).
Ici, vous pouvez voir que 1 CPU Full Charge in Guest PC entraînera une charge de la CPU dans l'hôte PC.

enter image description here

9
icl7126

J'ai constaté que même s'il est possible (et sans doute plus vite) dans VirtualBox (mon expérience était avec la version 5.1.0) pour allouer VCPUS à A VM sur la base de processeurs logiques, on peut subir des problèmes. à l'intérieur du système d'exploitation invité lorsqu'il fonctionne à une charge élevée. Dans mon cas, Windows 2012 R2 VM avec 12 VCPUS sur un hôte Ubuntu 16.04 de 8 nœuds (qui rapporte 16 processeurs logiques) BSOD pendant une charge élevée de la CPU Avec le message d'erreur DPC_WatchDog_Violation. Une analyse MiniDump utilisant osronline.com a montré E1G6032E.SYS (le pilote réseau Intel 100/1000 natif de Windows) est la cause de la violation.

Cela me conduit à croire que la synchronisation à l'intérieur du système d'exploitation invité est affectée négativement lors de l'allocation de VCPUS sur la base de la capacité du processeur logique et de l'exécution du VM à une charge élevée pendant des périodes prolongées. Dans mon cas, 100% de charge de la CPU à l'intérieur du Windows VM pendant quelques minutes entraînerait le BSOD. Après avoir réduit le nombre de VCPU à 8 (ce qui correspond au nombre de noyau physiques de l'hôte), le Windows VM N'EST PAS BSOD dans des situations de charge élevées similaires. La Documentation en ligne de VirtualBox dit que l'on devrait le faire, mais n'offre aucune raison.

Dans mon environnement, il y avait aussi deux autres entreprises VMS Ubuntu, chacune avec 8 VCPUS de leur propre. La charge sur eux était toutefois minimale au moment des problèmes BSOD de Windows VM.

8
Albert Gazendam

Est-ce que l'avertissement est pris en compte pour que ma machine a hyper-threading?

Oui. Si vous définissez le nombre de cœurs dans un VM sur plus du nombre que vous avez physiquement, le processus de planification de la tâche dans la zone virtuelle en validait les ressources de la CPU, entraînant des problèmes de performance majeurs.

En ce qui concerne la distribution de la charge à travers les noyaux, c'est-à-dire le travail d'OS hôte et devrait se comporter dans le bon manoir.

2
user195560

Était-ce A VM = d'original à votre machine? Parfois, vous obtiendrez des erreurs particulières si vous clonez A VM et déplacez-le sur une autre machine et/ou modifiez les paramètres.
[.____] Je vous recommande de télécharger et d'installer la dernière version de la boîte virtuelle avec les dernières extensions.

J'ai commis les huit cœurs et je ne reçois pas cette erreur avec mon i7 exécutant A VM avec Ubuntu 13.10.

0
ClaireW