CPU Usage statistic in Windows Server 2008 R2 Resource Monitor

cpu-usagewindows-server-2008

I'm trying to analyze the performance of HPC R scripts via Resource Monitor in Windows Server 2008 R2.

I have referred to this guide to get more information on the CPU tab of Resource Monitor, but I still have a question.

This server (allegedly) has 24 CPU cores, according to a software function in R that detects cores and word of mouth. In System Information it shows 2 entries for Processor:

enter image description here

In the R script I tell the function to utilize 2 fewer than whatever the maximum number of available cores is. I'm not exactly sure what the difference is between Core(s) and Logical Processor(s) in System Information, but apparently the sense of the word "core" that R is using relates to these 24 Logical Processors.

There's a long-running algorithm which should be utilizing 100% of 22 (i.e. 24 -2) of the CPU "cores" (or logical processors) at the moment, which would be about 92% of maximum CPU Usage.

However, in Resource Monitor there we are only at 43 – 45% of CPU Usage, though each of the 22 nodes in use have a value of 4 listed under CPU (and 4 * 22 = 88%). What gives?

Best Answer

I'm not exactly sure what the difference is between Core(s) and Logical Processor(s) in System Information

You have two Intel processors. On each of those chips, there are 6 physical cores. A physical core is essentially a self-contained CPU package, and you can cram multiple cores onto a single die. Furthermore, Hyperthreading is enabled, which is a technology from Intel that allows one physical core to execute two threads concurrently. So:

2 CPUs,

6 cores per CPU,

= 12 total physical cores.

Hyperthreading doubles the number of logical processors the operating system sees,

= 24 logical processors total.

It's worth noting that a Hyperthread core is not quite as powerful as a physical core. It depends on the exact workload, but the Hyperthreads are a certain percentage less powerful than a full physical core.

Nevertheless, the operating system sees them and treats them equally.

As for why your scripts are unable to fully utilize your processing power, that's code debugging and we'd have to be able to see the script. Or, it might be Rscript.exe set with a certain affinity that allows it to be scheduled on certain CPUs?

Can't tell without additional information.

What do the scripts do? Maybe they are bottlenecked waiting on some other resource, like network packets for instance, or disk I/O, and that is why they are unable to saturate the CPU. The thing is, CPUs are fast. The CPU will be waiting on pretty much any other part of the computer. And if the other subsystems involved can't keep up, you won't be able to max out your CPU.