I'm seeing that the environment variable NUMBER_OF_PROCESSORS is incorrect on my newly installed Dell PowerEdge 740xd Gen 14 running Windows Server 2012 R2 Standard.
The machine contains 2 CPUs - Intel Platinum Xeon 8173M. Each CPU contains 28 cores, so 56 total cores but each core is hyperthreaded so there are 112 threads total. I expect to see NUMBER_OF_PROCESSORS=112 but I see NUMBER_OF_PROCESSORS=56 . I can go into Control Panel, System and manually change the value of NUMBER_OF_PROCESSORS, but when the machine is restarted, it goes back to 56.
It's important to note that the various system tools such as msinfo32 and Task Manager report the correct number of processors, cores and threads.
I found a related thread here: How is NUMBER_OF_PROCESSORS env variable generated? and at the bottom, it suggests to turn off Node Interleaving in the BIOS Settings. I found that Node Interleaving was already off on my machine, but I decided to turn it on and the effect was that NUMBER_OF_PROCESSORS changed to 64.
On my older Dell Gen 13 machines running the same os, I do correctly see the NUMBER_OF_PROCESSORS env var set to number_of_cpus x cores_per_cpu x 2 . So this appears to be an issue related to Dell Gen 14.