Why is my .Net app only using single NUMA node?
I have a server with 2 NUMA node with 16 CPUs each. I can see all the 32 CPUs in task manager, first 16 (NUMA node 1) in the first 2 rows and the next 16 (NUMA node 2) in the last 2 rows. In my app I am starting 64 threads, using Thread.Start() . When I run the app, it's CPU intensive, only the first 16 CPUs are busy, the other 16 CPUs are idle. Why? I am using Interlocked.Increment() a lot. Could this be a reason? Is there a way I can start threads on a specific NUMA node? In addition to gcserver we should enable GCCpuGroup and Thread_UseAllCpuGroups so the config should be more like: