Quad Core Host mit Hyper-Threading, wie viele Prozessoren müssen in VirtualBox konfiguriert werden?

10

Ich habe einen Quad-Core-i7-Prozessor mit Hyperthreading (8 logische Kerne). Als ich eine virtuelle Maschine für die Verwendung von 8 Prozessoren konfigurierte, gab VirtualBox eine Warnung aus, dass ich nur vier Kerne habe (was wahr ist) und dass dies a verursachen kann Leistungsproblem. Hyper-Threading ist jedoch eine Hardwarefunktion, sodass das Betriebssystem 8 Kerne sieht und Anweisungen an alle 8 sendet. Wenn die VM auf 4 eingestellt wird, werden 2 Kerne (4 Threads) anstelle von 4 gleichzeitigen Threads (auf allen 4 Kernen) verwendet )? Berücksichtigt die Warnung, die ich erhalten habe, dass mein Computer über Hyper-Threading verfügt?

Anthony
quelle

Antworten:

9

Basierend auf dem Benchmark von Kristian Wedberg würde ich sagen, dass Sie alle logischen Kerne verwenden sollten, die Sie haben.
Außerdem habe ich meinen eigenen Benchmark mit derselben CPU (i7, 4-CPU mit HT) durchgeführt, der die Leistungssteigerung für Multithread-Anwendungen bestätigte. Wenn der Gast-PC (Win. 8.1 x64) alle 8 Kerne verwendet hat, hat der Host-PC (Ubuntu x64) auch alle 8 Kerne verwendet.

Geben Sie hier die Bildbeschreibung ein

Ich habe auch die Leistung in Single-Threaded-Anwendungen verglichen. In beiden Fällen habe ich dieselben Werte gemessen, sodass bei Verwendung von mehr als einer physischen (aber bis zu logischen) Anzahl von CPUs keine Strafe entsteht.
Hier sehen Sie, dass 1 CPU-Volllast im Gast-PC zu 1 CPU-Last im Host-PC führt.

Geben Sie hier die Bildbeschreibung ein

icl7126
quelle
Einverstanden. Ich habe 4 Kerne verwendet und festgestellt, dass beim Erstellen meines Projekts nur etwa 50% der CPU-Zeit benötigt werden. Dann habe ich trotz der Warnung auf 8 geändert, was der Anzahl der logischen Kerne entspricht. Der Build hat 100% CPU-Zeit in Anspruch genommen und ich glaube, er lief schneller als zuvor.
Deqing
Das ist ziemlich interessant. Ich erinnere mich, dass Linux speziell versucht, die Last auf einen logischen Kern von jedem physischen HT-Kern zu konzentrieren, um die Effizienz zu steigern. Ich frage mich, ob der Gast-Linux-Kernel erkennt, dass die CPU über einen Hyper-Thread verfügt, und optimiere die Planung für diese Art von Konfiguration.
Anthony
8

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.

Albert Gazendam
quelle
Tolle Antwort (mit Quellen), danke! Ein paar Jahre zu spät, aber jetzt weiß ich :)
Anthony
2

Berücksichtigt die Warnung, die ich erhalten habe, dass mein Computer über Hyper-Threading verfügt?

Ja. Wenn Sie die Anzahl der Kerne in einer VM auf mehr als die physische Anzahl festlegen, werden die CPU-Ressourcen durch den Taskplanungsprozess in Virtual Box überlastet, was zu erheblichen Leistungsproblemen führt.

Die Verteilung der Last auf die Kerne ist die Aufgabe des Host-Betriebssystems und sollte sich korrekt verhalten.

user195560
quelle
4
Haben Sie Daten, die Ihre Aussagen stützen? Jemand hat eine Untersuchung durchgeführt. Envobi.com/post/virtualbox-hyper-threading-benchmark-surprise und er empfiehlt, die Anzahl der Virtual Box-CPUs auf die Anzahl der logischen CPUs festzulegen .
Maxim Egorushkin
0

War dies ein VM-Original für Ihren Computer? Manchmal treten besondere Fehler auf, wenn Sie eine VM klonen und auf einen anderen Computer verschieben und / oder Einstellungen ändern.
Ich empfehle, die neueste Version von Virtual Box mit den neuesten Erweiterungen herunterzuladen und zu installieren.

Ich habe alle acht Kerne festgeschrieben und erhalte diesen Fehler nicht, wenn mein i7 eine VM mit Ubuntu 13.10 ausführt.

ClaireW
quelle