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?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…