I have an .NET Core application that starts up 512 Tasks that populate an AI network. I'm performing scaling tests and I've run benchmarks on 2, 4, 8, 16, 32 and 64 processor machines in Azure. All of the benchmark tests use 100% of the available vCPUs on the machine.
When I tried running the test on a M128 (128 vCPUs), the test ran at 50% CPU Utilization. I checked the environment variables and Environment.ProcessorCount told me there are only 64 processors (the documentation says this is the virtual processor count). Digging further, I find there's an architectural limit of 64 CPUs per 'Processor Group'. This machine apparently has 2 processor groups with 64 in each.
Is this a bug in .NET Core or is .NET Core limited to only one processor group?