This is a problem with Hyper-Threading when you upgrade your cluster from 2016 to 2019. You need to make sure to upgrade your VM's configuration version when the VM's are off from 8.0 to 9.0. You may also need to set the VM Processor settings to HwThreadCountPerCore to 0 from 1.
Read more here: https://kevinholman.com/2019/07/22/windows-server-2019-hyper-v-might-only-use-half-the-available-cpus/
In Windows Server 2019, Hyper-V now defaults to a more secure “core scheduler” where previous versions used “classic scheduler” for CPU scheduling and isolation. What this means, is that when you migrate a VM over to Hyper-V on WS2019, you need to update the VM configuration and change some settings, or it will only use a single hardware thread per core.
Get-VMHostSupportedVersion
Get-VM | FT Name, Version
Get-VM | Update-VMVersion
Get-VM | Get-VMProcessor | FT VMName,HwThreadCountPerCore
Get-VM | Set-VMProcessor -HwThreadCountPerCore 0