Windows Power Plans and CPU Performance

Back in February, 2010, I did some preliminary testing on the effects of various BIOS settings and Windows Power Plans on processor performance in Windows Server 2008 R2 using the cross-platform Geekbench benchmark. That round of testing used an 2.8GHz Intel Core i7 860 processor in an ASUS desktop board. Back then, I measured a 22% increase in the Geekbench score when switching from the default “Balanced” power plan to the “High Performance”plan, which seemed pretty significant.

Now, I wanted to do some slightly more detailed testing on some actual server hardware, observing the Geekbench performance and measuring the actual power usage of the entire system with various combinations of BIOS settings and Windows Power Plans. My goal is to observe the performance effects of these settings vs. the effect on the actual power consumption of the entire server in order to be able to give better guidance on which settings you should choose depending on your performance and power objectives. I also wanted to measure the difference in terms of performance and power usage between having one physical CPU and two physical CPUs in an otherwise identical two socket server.

We just got in a couple of nearly identical Dell PowerEdge R410 1U servers that will eventually be used as middle-tier servers, so I took the opportunity to run some benchmark tests on them over the last couple of days as part of the burn-in process. Both of these servers have 16GB of DDR3 RAM, one 15K 146GB 3.5” SAS drive and dual power supplies. The only difference is that one server has two Intel Xeon E5620 processors, while the other server only has one Intel Xeon E5620 processor. The 32nm Intel Xeon E5620 Westmere-EP has a rated speed of 2.4GHz, with the ability to go to 2.66GHz with Turbo Boost. It is a quad-core processor that also supports hyper-threading, so the operating system can see eight logical processors when hyper-threading is enabled.

Below is a screenshot of CPU-Z, showing an Intel Xeon X5670 running with the Windows High Performance Power plan, which allows Intel Turbo Boost to kick in and raise the clock speed of individual cores from 2.93GHz to 3.32GHz.

 

This is the much more humble Intel Xeon E5620, showing the effects of Turbo Boost raising the clock speed from 2.40GHz to 2.66GHz.

In the main BIOS setup screen of the Dell R410, you can go into the Power Management section and change the setting to OS Control, which lets Windows manage the various power settings more completely. In the Processor Settings section, you can change whether Turbo Mode is enabled (the default is enabled) and whether Logical Processor is enabled (the default is enabled). You can also change whether the C1E and C States settings are enabled or disabled. These settings relate to the power saving settings that are built-in to all recent Intel processors. As energy efficiency becomes more of a mainstream concern, each new generation of processors from both Intel and AMD have become more energy efficient and have more power management features included.

In Windows Server 2008 and 2008 R2, you can get to the Power Options screen by typing powercfg.cpl in a Run prompt. There you will see three default power plans, called Balanced, Power saver, and High performance. By default, it is set to Balanced, which is what Microsoft recommends for general use. Unfortunately, the default Balanced power plan is not the best choice for database server performance.

If you run the CPU-Z utility, you can see the core speed and multiplier of Core #0 of any of your physical processors in a nearly real-time basis as you change Windows Power plans and run benchmarks. This is very useful in understanding what is going on with the processor(s) based on the power settings and the processor load.

I also used a Kill-A-Watt meter to measure the actual power usage (in watts) of the entire server during these tests. It is interesting what happens to the power usage of a modern server as you turn it on, watch it go though the POST process and boot into Windows. There are a lot of other things using power in the server besides the processors, so you have a baseline usage that exists despite anything that you do with processor power management.

The single processor Dell PowerEdge R410 peaked at 144 watts during boot and then settled down to an average usage of about 95 watts after Windows finished loading and became idle, regardless of the Windows Power Plan that was being used and regardless of whether hyper-threading or turbo boost were enabled. When the processor usage peaked during the Geekbench test runs, I saw a peak power usage of 147 watts with the Power saver power plan, 169 watts with the Balanced power plan, and 180 watts with the High Performance power plan (with both hyper-threading and Turbo Boost enabled). This means that you are only saving 33 watts of power (which is 18%) when the processor is pegged and none at idle, and taking a 32% decrease in performance when you go from the High Performance power plan to the Power saver power plan.

The two processor Dell PowerEdge R410 peaked at 174 watts during boot and then settled down to an average usage of about 110 watts after Windows finished loading and became idle, regardless of the Windows Power Plan that was being used and regardless of whether hyper-threading or turbo boost were enabled. When the processor usage peaked during the Geekbench test runs, I saw a peak power usage of 200 watts with the Power saver power plan, 217 watts with the Balanced power plan, and 244 watts with the High Performance power plan (with both hyper-threading and Turbo Boost enabled). This means that you are only saving 44 watts of power (which is 18%) when the processor is pegged and none at idle, and taking a 32% decrease in performance when you go from the High Performance power plan to the Power saver power plan.

Below are the detailed results from four runs of the Geekbench benchmark on each system, with various combinations of hyper-threading, Turbo Boost, and Windows Power Plans. You can see that both hyper-threading and Turbo Boost are quite effective in this benchmark, and that your choice of which Windows Power Plan to use is also very significant.

Windows Power Plan Effect on Geekbench Performance (Details)

One Physical CPU

Hyper-threading disabled, Turbo Boost disabled (One CPU)

Power Plan Run 1 Run 2 Run 3 Run 4 Average
Power saver 3883 3868 3882 3877 3877.5
Balanced 4871 4831 4816 4841 4839.7
High Performance 5319 5312 5323 5321 5318.7

 

Hyper-threading disabled, Turbo Boost enabled (One CPU)

Power Plan Run 1 Run 2 Run 3 Run 4 Average
Power saver 3878 3878 3876 3879 3877.8
Balanced 4850 4807 4789 4795 4810.3
High Performance 5704 5706 5706 5711 5606.8

 

Hyper-threading enabled, Turbo Boost disabled (One CPU)

Power Plan Run 1 Run 2 Run 3 Run 4 Average
Power saver 4739 4742 4692 4743 4729
Balanced 6038 6034 6002 6040 6028.5
High Performance 6533 6521 6519 6546 6529.8

 

Hyper-threading enabled, Turbo Boost enabled (One CPU)

Power Plan Run 1 Run 2 Run 3 Run 4 Average
Power saver 4742 4743 4751 4750 4746.5
Balanced 6080 6076 6062 6104 6080.5
High Performance 6969 6980 6966 6970 6971.3

 

Two Physical CPUs

Hyper-threading disabled, Turbo Boost disabled (Two CPUs)

Power Plan Run 1 Run 2 Run 3 Run 4 Average
Power saver 5907 5897 5965 5951 5930
Balanced 6521 6711 6758 6513 6625.8
High Performance 8115 8159 8167 7823 8066

 

Hyper-threading disabled, Turbo Boost enabled (Two CPUs)

Power Plan Run 1 Run 2 Run 3 Run 4 Average
Power saver 6007 5889 5965 5997 4729
Balanced 6872 6477 6671 6726 6686.5
High Performance 8676 8882 8871 8898 8831.8

 

Hyper-threading enabled, Turbo Boost disabled (Two CPUs)

Power Plan Run 1 Run 2 Run 3 Run 4 Average
Power saver 7737 7697 7519 7728 7670.5
Balanced 9000 8917 9372 8944 9058.3
High Performance 10562 10541 10578 10552 10558.3

 

Hyper-threading enabled, Turbo Boost enabled (Two CPUs)

Power Plan Run 1 Run 2 Run 3 Run 4 Average
Power saver 7718 7350 7717 7524 7577.3
Balanced 9014 9374 8909 9140 9109.3
High Performance 11147 11161 11146 11175 11157.3

 

The numbers in the tables are the Geekbench scores.

 

Summary of Hyper-threading and Turbo Boost Effects on Geekbench Performance

One Physical CPU
With hyper-threading disabled and turbo boost disabled, enabling just turbo boost increases score by 7.3%
With hyper-threading disabled and turbo boost disabled, enabling just hyper-threading increases score by 22.8%
With hyper-threading disabled, and turbo boost disabled, enabling both hyper-threading and turbo boost increases score by 31.1%

Two Physical CPUs
With hyper-threading disabled and turbo boost disabled, enabling just turbo boost increases score by 9.5%
With hyper-threading disabled and turbo boost disabled, enabling just hyper-threading increases score by 30.9%
With hyper-threading disabled, and turbo boost disabled, enabling both hyper-threading and turbo boost increases score by 38.3%

Summary of Windows Power Plan Effect on Geekbench Performance

One Physical CPU
With hyper-threading enabled and turbo boost enabled, using the Power saver power plan decreases score by 21.9%
With hyper-threading enabled and turbo boost enabled, using the High Performance power plan increases score by 14.6%

Two Physical CPUs
With hyper-threading enabled and turbo boost enabled, using the Power saver power plan decreases score by 16.8%
With hyper-threading enabled and turbo boost enabled, using the High Performance power plan increases score by 22.4%

The differences in the Geekbench scores due to the different Windows power plans are compared to the default Balanced power plan.

My conclusion based on these tests is that you should always enable hyper-threading and Turbo Boost, and that you should make sure the BIOS is set to use OS power management. You should also make sure to use the High Performance Windows Power Plan instead of the default Balanced Power Plan. The power savings you get from using a more “green” power plan are pretty negligible, especially compared to the performance loss you incur. This would be more significant for an OLTP workload, which is usually more CPU dependent (assuming you have enough I/O capacity to support your workload).

In really pains me to make that recommendation, since I think reducing electrical usage in data centers is a worthy goal, for both economic and environmental reasons. Using power saving settings makes a lot more sense for middle-tier servers than it does for a database server. Upgrading to new hardware, and consolidating multiple older servers into fewer new servers is a good strategey for reducing the power usage of your database servers.

AnandTech did some testing back in July that showed that using one of the special low power usage processors instead of a performance processor did not save very much power and caused a very significant decrease in performance.

About these ads
This entry was posted in Windows Server 2008 R2. Bookmark the permalink.

14 Responses to Windows Power Plans and CPU Performance

  1. Jungsun Kim says:

    You are very helpful. Thank so much! ^^

  2. Pingback: The Importance of Windows Power Plans for Server Performance | Glenn Berry's SQL Server Performance

  3. Pingback: Another Example of CPU Throttling Due to Balanced Power Plan in Windows Server 2008 R2 | Glenn Berry's SQL Server Performance

  4. Jim Curry says:

    We are in the final planning stages to migrate to SQL 2008 R2 on VMware. Has anyone looked into Power Plans impact on virtualized servers or the host servers they run on?

    • Glenn Berry says:

      I have not looked at that myself. I would guess that the host server’s power management settings would override whatever setting the guest OS was using, i.e. the entire host would be using its setting, ignoring what the guest machines asked for (as far as power management).

  5. Greg Anson says:

    Very interesting data regarding the benchmarks. Of course, with ‘green’ initiatives being popular, changing to high performance would also be the question ‘are you seeing performance problems today?’. In our environment, we don’t historically see CPU as a bottleneck at all…or memory…maybe I/O. Any thoughts on why to automatically change to high performance?…I’m sure part of the answer will be ‘try it and find out!’.

    Nice work on the blog!!

    • Glenn Berry says:

      Hi Greg,

      Glad you enjoy the blog! The counter argument regarding overall power usage is that you may be able to do more consolidation onto fewer servers if they are using the High Performance power plan. Another argument is that if the processors are normally running at full speed, they can complete tasks more quickly, and then reduce power consumption more quickly. Even in the High Performance power plan, there is a big difference in overall power consumption for the server when it is idle versus running at 100% CPU. Finally, when you have “excess” CPU capacity, you can use it for things like backup compression, data compression, etc. to reduce your I/O bottlenecks.

  6. Pingback: A SQL Server Hardware Nugget A Day – Day 15 | Glenn Berry's SQL Server Performance

  7. Pingback: Windows 2008 Power Schemes and Performance Impact « Sudrsn's Blog

  8. Pingback: How To Improve Database Performance Without Changing Code | SQLRockstar | Thomas LaRock

  9. Josh C says:

    I’d like to have the i5-2500K or i7-2600K overclocked to 4.4-4.7GHz and LOCKED at that speed like the bloomfields i7-920,950 ect on 1366 motherboards. How can I achieve this on a 1155 MB?

    Thanks a million.

    • Glenn Berry says:

      I am not 100% sure that is possible. It would depend on you motherboard BIOS features. I will say that Sandy Bridge processors seem to react much faster to clock speed changes than Nehalem and Westmere processors do, so that they are not as affected by them as older processors.

  10. Pingback: Windows Server 2008 R2 and Core Parking, how it affects you, the administrator. - The troubleshooters and problem solvers... - Site Home - TechNet Blogs

  11. Pingback: Are your CPUs running slowly? Tool tip and survey | Paul S. Randal

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s