J'ai un processeur quad-core i7 avec hyperthreading (8 cœurs logiques), lorsque j'ai configuré une machine virtuelle pour utiliser 8 processeurs, VirtualBox m'a donné un avertissement disant que je n'ai que quatre cœurs (ce qui est vrai) et que cela peut provoquer un problème de performance. Mais l'hyper-threading est une fonctionnalité matérielle, donc le système d'exploitation voit 8 cœurs et il envoie des instructions à tous les 8. Que se passe-t-il si la définition de 4 oblige la machine virtuelle à utiliser 2 cœurs (4 threads) au lieu de 4 threads simultanés (sur les 4 cœurs) )? L'avertissement que j'ai reçu prend-il en compte le fait que ma machine a un hyper-threading?
10
J'ai trouvé que même s'il est possible (et sans doute plus rapide) dans VirtualBox (mon expérience était avec la version 5.1.0) d'allouer des vCPU à une machine virtuelle basée sur des processeurs logiques, on peut rencontrer des problèmes à l'intérieur du système d'exploitation invité lors de l'exécution à charge élevée . Dans mon cas, une machine virtuelle Windows 2012 R2 avec 12 vCPU sur un hôte Ubuntu 16.04 à 8 cœurs (qui signale 16 processeurs logiques) ferait du BSOD pendant une charge CPU élevée avec le message d'erreur DPC_WATCHDOG_VIOLATION. Une analyse de minidump utilisant osronline.com a montré que e1g6032e.sys (le pilote réseau Intel 100/1000 natif de Windows) était à l'origine de la violation.
Cela m'amène à croire que la synchronisation à l'intérieur du système d'exploitation invité est affectée négativement lors de l'allocation de processeurs virtuels en fonction de la capacité du processeur logique et de l'exécution de la machine virtuelle à haute charge pendant des périodes prolongées. Dans mon cas, une charge de 100% du processeur à l'intérieur de la machine virtuelle Windows pendant quelques minutes entraînerait le BSOD. Après avoir réduit le nombre de vCPU à 8 (ce qui correspond au nombre de cœurs physiques de l'hôte), la machine virtuelle Windows ne fait plus de BSOD dans des situations de charge élevée similaires. La documentation en ligne de VirtualBox dit qu'il faut le faire, mais n'offre aucune raison.
Dans mon environnement, il y avait également deux autres machines virtuelles Ubuntu en cours d'exécution, chacune avec 8 vCPU propres. La charge sur eux était cependant minime au moment des problèmes BSOD de la machine virtuelle Windows.
la source
L'avertissement que j'ai reçu prend-il en compte le fait que ma machine a un hyper-threading?
Oui. Si vous définissez un nombre de cœurs dans une machine virtuelle supérieur au nombre dont vous disposez physiquement, le processus de planification des tâches dans Virtual Box sur valide les ressources du processeur, ce qui entraîne des problèmes de performances majeurs.
Quant à la répartition de la charge entre les cœurs, c'est le travail du système d'exploitation hôte et doit se comporter dans le bon manoir.
la source
S'agissait-il d'une machine virtuelle d'origine sur votre machine? Parfois, vous obtiendrez des erreurs particulières si vous clonez une machine virtuelle et la déplacez vers une autre machine et / ou modifiez les paramètres.
Je recommande de télécharger et d'installer la dernière version de Virtual Box avec les dernières extensions.
J'ai validé les huit cœurs et je ne reçois pas cette erreur avec mon i7 exécutant une machine virtuelle avec Ubuntu 13.10.
la source