I got my hands on a Dell Poweredge R900, with 64 GB of RAM and 5x 73 GB drives set up as a RAID5. It has 4x guadcore Xeons and is running Windows Server 2008 R2. The machine is pretty snappy... boots up lightning fast and is incredibly responsive.
I do predictive modeling for a living, and I'm trying to use it as a compute pool to play with some models of my own at home (pet-projects). 16 cores should rip through my simulations pretty quickly. I'm running custom .net code (compiled, not run in Debug mode in the Visual Studio GUI). I can launch an arbitrary number of simulation thread with each thread computing for 10 minutes or so. But that is where things got interesting.
Running 16 threads on my 16 cores I expected the CPUs to rail, the fans to spool up and some serious numbers to be crunched... Instead I saw an average CPU utilization of 20%. Each core was at the 20% level, and the speed per thread was way slower than my desktop PC (yup, about 5x slower). I tried 7 threads as a test... 7 cores jumped to 20%, and each of the 7 threads ran about the same speed as each thread did in the 16 thread case. So I figured why not try 48 threads? 3 threads per core should put each core at 60% right? Nope... 20% on all cores again. Each thread now visibly ran 3x slower than the 16 thread case too. It seems the Performance monitor isn't lying to me.
So Curious if this was a hardware limit, I fired off 2 instances of my code, with both running 16 threads, my utilization jumped to 40% on all cores. A third instance? Yep, 60%. The hardware can do it.
It seems that either BIOS, or windows server is artificially capping applications to no more than 20% utilization per core. The 20% thing I cannot find anything on. My web searches for "low cpu utilization" turn up suggestions to look for malware and faulty hardware. This is a fresh re-build never connected to the web, so malware is out of the picture, and we already learned from the multi-instance test that faulty hardware isn't crippling the system.
I'm a windows guy, and I've built every PC I have, but I don't know a thing about server hardware, and I don't know a thing about windows server.
Any help would be greatly appreciated!