Ich habe festgestellt, dass es in VirtualBox zwar möglich (und wahrscheinlich schneller) ist (meine Erfahrung war mit Version 5.1.0), einer VM auf Basis logischer Prozessoren vCPUs zuzuweisen, bei hoher Last jedoch Probleme im Gastbetriebssystem auftreten können . In meinem Fall würde eine Windows 2012 R2-VM mit 12 vCPUs auf einem 8-Kern-Ubuntu 16.04-Host (der 16 logische Prozessoren meldet) BSOD bei hoher CPU-Auslastung mit der Fehlermeldung DPC_WATCHDOG_VIOLATION ausführen. Eine Minidump-Analyse mit osronline.com ergab, dass e1g6032e.sys (der in Windows native Intel 100/1000-Netzwerktreiber) die Ursache für den Verstoß ist.
Dies lässt mich glauben, dass das Timing innerhalb des Gastbetriebssystems negativ beeinflusst wird, wenn vCPUs basierend auf der logischen Prozessorkapazität zugewiesen werden und die VM über einen längeren Zeitraum unter hoher Last ausgeführt wird. In meinem Fall würde eine 100% ige CPU-Auslastung innerhalb der Windows-VM für einige Minuten zum BSOD führen. Nach dem Reduzieren der vCPU-Anzahl auf 8 (was der physischen Kernanzahl des Hosts entspricht) führt die Windows-VM unter ähnlichen Hochlastsituationen kein BSOD mehr aus. Die Online-Dokumentation von VirtualBox sagt, dass man dies tun sollte, bietet aber keine Gründe.
In meiner Umgebung wurden auch zwei andere Ubuntu-VMs mit jeweils 8 eigenen vCPUs ausgeführt. Die Belastung war jedoch zum Zeitpunkt der BSOD-Probleme der Windows-VM minimal.