Als OS-Designer stimme ich dem Ergebnis der Messungen voll und ganz zu. Die Menge an Blödsinn, die an anderer Stelle über das Thema produziert wird, ist unglaublich.
Sehen Sie die Anzahl der logischen Kerne als die Anzahl der parallelen Threads / Prozesse, die von der HW ausgeführt werden können. Dies wird erreicht, indem zB die Register und Befehlszeiger eines CPU-Kerns dupliziert werden. Der CPU-Kern entscheidet nun selbst, welcher Thread (Anweisungszeiger) verwendet werden soll. Es wird entschieden, den anderen Thread zu verwenden, da der Befehl des aktuellen Threads nicht im Cache verfügbar ist und beispielsweise aus dem Speicher oder dem L3-Cache abgerufen werden muss. Dieser Mechanismus führt zu einer potenziellen Verbesserung der Anweisungen / Sekunde oder der CPU-Leistung um 10 bis 30%.
Wenn Sie eine einzelne Anwendung mit einem Thread ausführen, können Sie diesen Vorteil nicht nutzen. Wenn Sie jedoch zwei Anwendungen mit hoher Auslastung ausführen, z. B. auf einem alten HT-Pentium, können Sie die Vorteile nutzen. Gleiches gilt natürlich auch für Anwendungen, die mehr als einen Thread haben. Mein Linux-System hat 200 Threads, daher sind einige Vorteile, die von der tatsächlichen Last abhängen, immer vorhanden. Alle diese Bemerkungen gelten ohne Virtualisierung.
Virtualbox begrenzt nur die Anzahl der Threads, die für jede virtuelle Maschine (VM) parallel ausgeführt werden können. Der Host-Prozess-Scheduler ändert jedoch die logischen Prozessoren und damit die physischen Prozessoren, auf denen die VM-Prozesse dynamisch ausgeführt werden. Wenn Sie Anwendungen mit hoher Auslastung auf einer VM ausführen, bieten die zusätzlichen logischen Kerne den gleichen Vorteil von 10% -30%. Die Last kann eine einzelne Multithread-Anwendung oder eine Reihe verschiedener Anwendungen sein.
Auf modernen Systemen mit VT-x oder AMD-V gibt es keine Leistungseinbußen bei der Maximierung der Anzahl der logischen Kerne, da auch keine spürbaren Leistungseinbußen bei der gleichzeitigen Ausführung mehrerer virtueller Maschinen auftreten. Ihre Grenze ist die Leistung Ihres CPU-Chips. Sie können also nicht Videos auf 3 VMs gleichzeitig rendern, ohne jede VM zu verlangsamen, da diese dieselbe physische CPU teilen müssen.
Ihr Host-System reagiert möglicherweise nicht mehr, wenn Sie ein Video auf einer VM mit allen vorhandenen logischen Kernen rendern. Wenn Sie diese Rendering-App jedoch auf Ihrem Host ausführen, tritt fast dasselbe Problem auf. Zumindest in VM haben Sie die Wahl und können es lösen, indem Sie die maximale CPU-Auslastung auf 80% -90% begrenzen oder die Anzahl der Kerne aus diesem Grund reduzieren.