SAP will soon support Windows Server 2008 R2. There were massive changes in this Windows release in the area of Virtualization. However besides these changes, there were some more which have implications in how we need to look at the CPU consumption on a server running Windows Server 2008 R2.
Another very small change made by the development team was to install Windows 2008 R2 with the ‘Balanced Power mode’ as the default power mode. In some cases it may be recommended to
change this default setting
. So far the default always was the ‘High-Performance’ power mode. This change will allow the Windows OS to take down the frequency of the CPUs in case the CPUs are not loaded. Behind this simple change there is a lot of coding and optimization hidden to act fast enough to get the CPU frequency up again when load is applied or optimizing the times a CPU can remain on lower frequency. A very good paper around this whole area got published here:
In order to maintain compatibility for software accessing the performance counters as those were introduced more than a decade ago, the Windows development team decided to leave the old performance counters untouched and have those available with the old restriction of 64 processors and instead introduce a new collection of performance counters which will support more than 64 processors. The new collection shows up in Performance Monitor under ‘Processor Information’. This new collection of counters just shows up underneath the old ‘Processor’ collection as seen in this screen shot.
The counters of this new collection will support the new architecture which enables >64 CPU. A change was introduced as well in the granularity one could monitor those counters. The counters under the ‘Processor’ collection only allowed to see results on a per CPU granularity, the new collection will allow to monitor counters on a per NUMA node level as well. More recent SAPOSCOL implementations of SAP are using the ‘Processor Information’ counters to be able to represent the values correctly on servers with more than 64 CPUs.
In order to give a better idea about the Windows Power Management functionality working, the new counter collection also introduced a counter called ‘% of maximum frequency’. This counter shows the percentage of maximum frequency a CPU currently is running on. The frequency of a CPU can change extremely fast within the range of a few milliseconds when load is applied to the CPU. Therefore this counter only is a snapshot of the current state. All other counter like ‘% Processor Time’, % User Time’, etc are based on the current ‘% of maximum frequency’ and not on the theoretical maximum available cycles with running the full frequency. Therefore jumps of those values can be observed as soon as the CPU is switched to higher or lower frequency.
Interpreting this new counter
Let’s assume the balanced power mode of Windows Server 2008 R2 is used and a CPU is monitored. The CPU’s maximum frequency is 2GHz. Performance Monitor shows that the CPU is only running with 50% of its frequency and the CPU consumption on this CPU is 40%.
With 50% frequency, 1 CPU billion cycles would be available. Using 40% of those as shown in Performance Monitor would mean that 400 million cycles are consumed.
With 100% frequency, 2 CPU billion cycles would be available. This represents the maximum value for the CPU
If the CPU would run on its full frequency with the same workload, the 400 million consumed CPU cycles would represent only 20% of CPU resources being used and 80% of CPU resources unused. This is the way how the Performance monitor counters need to be interpreted.
Just interpreting the values of ‘% Processor Time’, ‘% User Time, etc, without setting those values in relation to the ‘% of maximum frequency’ will not give the correct impression about the system load.
Another new counter collection
A second new counter collection introduced is named ‘Processor Performance’. Besides the counter ‘% of maximum performance’, you can find another counter which gives the current frequency of the processors in MHz. So you can’t only get the % of the maximum frequency, but also the frequency the CPU is running right now.