(corrections 21.07.2020: I have falsely written “Multithreading” instead of “Hyperthreading” in some places)
Because my Windows Server 2019 guest system felt quite sluggish, I first googled (of course! 😉 and then tested myself to improve the performance.
Thanks to a blog entry from Mihai Matei on the topic at hand y had an idea on where to look and I could confirm his findings regarding Hyperthreading.
Here are my test-details, in case you are interested. If not you can jump right to the conclusions at the end of the article.
CPU: Intel 8350U (4 Cores, 8 Threads, 15W TDP)
Host RAM: 32GB
Host OS: Windows 10 Pro (1809) 64 bit
Guest OS: Windows Server 2019
Benchmarking-Tool: CPU-Z
Hyperthreading on (Bios setting on host)
CPU-Z benchmark results on the host
- SC: 406
- MC: 2002
Guest with 4 Cores
- Observation: Opening Windows Explorer slow
- CPU-Z-Bench
- SC: 280 Max
- MC: 1300 Max
Guest with 1 Core
- Observation: Opening Windows Explorer much faster
- CPU-Z Bench
- SC: 360
- MC: 360
- Note: SC is substantially higher, but MC a lot lower. The GUI feels a lot more responsive with only 1 core assigned.
Hyperthreading off (Bios setting on host)
CPU-Z on the host
- SC: 411
- MC: 1540
- Note: SC performance not changed, but about 25% loss on MC performance.
Guest with 4 Cores
- Observation:
1) Task manager on guest: 6% (almost idle), task manager on host: 28% for VirtualBox task
2) CPU-Frecuency drops from 3,6 to 2,5 during MC test and goes only back up to 3Ghz during SC. Explanation: CPU seems to throttle because of temperature (monitored with HW Info Tool). Environment temp is about 32 C
- CPU-Z-Bench
- SC: 295 Max
- MC: 1070 Max
Guest with 1 Core
- Observation: The benchmark does not get 100% CPU, because 18% is eaten up by “System Interrupts” accoring to task manager.
- CPU-Z Bench
- SC: 370
- MC: 360
Guest with 2 Cores
- Observation: System interrupts low (2%, almost all % used by benchmark)
- CPU-Z Bench
- SC: 370
- MC: 730
- Note: Best result so far. SC performance still high and MC doubled compared to 1 Core.
Guest with 3 Cores
- Observation: System interrupts low (2%, almost all % used by benchmark). Looks like 3 cores is not a good idea! 😉
- CPU-Z Bench
- SC: 305
- MC: 660
Conclusion
On my particular system the best setting for my Windows Server 2019 guest are:
- Host: Disable Hyperthreading in BIOS settings
- VirtualBox Guest Settings: Assign 2 cores
Due to the switched off hyperthreading some mulithreading performance is lost. But as I am mostly depending on high single-threading performance for compiling tasks it is not an issue.
Depending on your CPU and number of cores available your optimal settings may vary.