As a consultant you often receive the question why ‘it’ doesn’t perform as it should.
When driving a number of activities to improve performance in the server environment, Power Management Settings is one of those settings that can greatly improve or degrade performance on Windows Server.
My experience is that good powermanagement settings regulary are overlooked, most likely beacause the settings need to be checked on different levels, and especially in virtual environments.
That said, let’s start with what’s most Obvious; the Windows settings
Some background info on Power Settings
Windows Server 2008 introduced a new ACPI (Advanced Configuration and Power Interface) setting called Processor Power Management (PPM) that allows the CPU to change its performance state to one that lowers power consumption. When looking at the big picture this is a good thing: Microsoft is doing its part by setting a default that helps the world consume less energy and limit pollution.
Problems with balanced Power Settings
The problem is that the default setting for PPM of ‘Balanced’ makes the performance state of the CPU ‘Adaptive’. A CPU in this adaptive state will throttle core frequency back to save power. This comes at the cost of lower performance. When higher demands are placed on the CPU it is supposed to react quickly and increase its core frequency to address the increased load. This makes sense – when performance is not needed the CPU essentially rests and saves power, when high performance is needed the CPU switches to a higher core frequency and performs optimally but uses more electricity. Unfortunately, the CPU cannot react quickly enough under the loads we typically see in servers (especially Database, Application and Web) to suitably increase performance.
Adjust settings manually:
Open Control Panel | Hardware | Power Options. You see the following:
Notice that the options are greyed out.
Select ‘Change settings that are currently unavailable’ to enable the radio buttons.
Select ‘High performance’ and close Control Panel.
If you have a domain with many Window Servers in it, you should concider creating a GPO for this:
Group Policy Management Console
Group Policy Objects
Administrative Templates System
Power Management Active Power Plan: enable this setting with the value “High Performance”
To check whether your changes have taken effect is as simple as downloading the CPU-Z tool and checking the measured core speed against the known specs of your CPU. What you are looking for is a measured core speed equal or greater than the CPU’s potential speed.
Here’s a system that has the High Performance setting properly enabled:
You can see that the core speed is greater than the OS-reported CPU speed. This is what we want.
Here is a system that does not have the Processor Power Management set to High Performance:
This is a system not properly configured for High Performance PPM.
You’ll notice that not only is the core speed lower than reported by the OS, CPU-Z also reports a much lower multiplier than expected.
The multiplier for the tested CPU should be 23 but CPU-Z shows it to be only 12. You can find your processor’s proper multiplier here: http://en.wikipedia.org/wiki/List_of_Intel_Xeon_microprocessors. http://en.wikipedia.org/wiki/List_of_AMD_microprocessors
If the multiplier is less than it should be, throttling is taking place via PPM and either the OS setting is incorrect or the whole system (BIOS, VMware, OS) is not set properly to allow the OS to control power management (and thus CPU speed).
Slightly off-topic, but as it also concern powermanagement and Windows: