This Blog will provide information about running SAP applications on SQL Server and Windows. The Blog is written by folks of Microsoft who are working with SAP and SQL Server for more than a decade.
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.
Windows Server 2008 R2 enabled support of up to 256 CPUs. The architecture introduced to get beyond 64 CPUs can support way more CPUs (http://msdn.microsoft.com/en-us/library/dd405503%28VS.85%29.aspx ). However we are only supporting 256 CPUs today as there are no servers available for us to test anything higher than 256 CPUs.
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: http://www.microsoft.com/whdc/system/pnppwr/powermgmt/Svr_Pwr_ITAdmin.mspx
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%.
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.
On one hand, it's excellent that more information is exposed - but on the other, it's a pain that it's something else that needs to be monitored. My question is - will this help with Windows2008R2 installations on a virtualised platform such as VMWare, when the amount of CPU power may be throttled?