I'm trying to use a Dell Poweredge R900 I got secondhand as a compute pool (4x quadcores gives me 16 cores to run simulations with). It's running windows server 2008 R2 enterprise at the moment.
I'm running custom .net code, and can specify the number of threads to be anything I want. Typically (e.g. on my windows 10 quadcore machine), a thread rails a cpu core for 10 minutes or so. If I launch 7 threads on my server though (as an example), I see 7 of my 16 cores light up at 20% utilization. If I launch 16 threads, I see all 16 cores at ~20%. So I tried to fire off 48 threads expecting my 16 cores now should have 3 threads each and thus hit 60% utilization, but no dice. I get 20% again (and each thread is visibly 3x slower, so all 3 threads per core get processed). No matter how many threads I fire off, my utilization never goes beyond 20% per core. Now, If I launch 2 instances of my code at 16+ threads each, all cores go to 40%. A third instance, 60%. So it's not a FSB limit or anything. Something has to be choking each instance down to 20% per core.
I can't for the life of me figure out where the bottleneck is here. is this a windows server thing? A dell BIOS thing? I've flipped the OS from being optimized for background processes to being optimized for programs... Didn't seem to have an impact. I'm totally new to windows server, so any ideas would be greatly appreciated!
It seems that Server 2008 R2 has a way of limiting CPU utilization. I found info on it here and would recommend you read it and perhaps try to set your own limits:
https://technet.microsoft.com/en-us/library/ff384148(v=ws.10).aspx
Also, pls note that in the comment section of the above link, there are 2 links to further explanations on the subject...