Why does my HP Proliant DL380 G6 only use 6 out of 12 physical cores when my HyperV VM is under load?
When my HyperV VM (running Ubuntu 20.04) is under load on my HP Proliant DL380 G6 (running Windows Server 2016), only 6 of the 12 physical cores are only being used i.e. only 1 out of the 2 CPUs are being used. Below is a screenshot of my Task Mananger.
This is confirmed by ILO (below) as only Processor 2 enters a power state of P1.
My HyperV VM is the only VM on my machine and I have provisioned it with 24 virtual processes (1 for each logical core since my server has 12 physical cores and 24 logical cores). Below is a screenshot of the processor settings for my HyperV VM.
I want my HyperV VM to take advantage of all 12 physical cores. How can I achieve this and why isn't the VM taking advantage of all the cores available to it?
Note that when I run a multi-threaded workload on the host, all 12 physical cores are being utilised as expected (as shown below).
I remembered that my VM had "Dynamic Memory" enabled so I tried running the VM with "Dynamic Memory" turned off. After stress-testing the VM, all 12 physical cores lit up. Happy for anyone out there to extend this answer by explaining why this solved my issue.