Although this guide focuses primarily on how to obtain the best performance from Windows Server 2008 R2, you must also recognize the increasing importance of energy efficiency in enterprise and data center environments. High performance and low energy usage are often conflicting goals, but by carefully selecting server components you can achieve the correct balance between them.
Table 3 contains guidelines for power characteristics and capabilities of server hardware components.
Table 3. Server Hardware Energy Saving Recommendations
Frequency, operating voltage, cache size, and process technology all affect the energy consumption of processors. Processors have a thermal design point (TDP) rating that gives a basic indication of energy consumption relative to other models. In general, opt for the lowest-TDP processor that will meet your performance goals. Also, newer generations of processors are generally more energy efficient and may expose more power states for the Windows power management algorithms, which enables better power management at all levels of performance.
Memory accounts for an increasing fraction of total system power. Many factors affect the energy consumption of a memory DIMM, such as memory technology, error correction code (ECC), bus frequency, capacity, density, and number of ranks. Therefore, it is best to compare expected power ratings before purchasing large quantities of memory. Low-power memory is now available, but you must consider the performance and cost trade-offs. If your server will be paging, then you should also factor in the energy cost of the paging disks.
Higher RPM means increased energy consumption. Also, new 2.5-inch drives require less than half the power of older 3.5-inch drives. For more information about the energy cost for different RAID configurations, see “Performance Tuning for Storage Subsystem” later in this guide.
Network and storage adapters
Some adapters decrease energy consumption during idle periods. This is an important consideration for 10-Gb networking adapters and high-bandwidth (4-8-Gb) storage links. Such devices can consume significant amounts of energy.
Increasing power supply efficiency is a great way to reduce energy consumption without affecting performance. High-efficiency power supplies can save many kilowatt-hours per year, per server.
Fans, like power supplies, are an area where you can reduce energy consumption without affecting system performance. Variable-speed fans can reduce RPM as system load decreases, eliminating otherwise unnecessary energy consumption.
Windows Server 2008 R2 enables selective suspend for USB devices by default. However, a poorly written device driver can still disrupt system energy efficiency by a sizeable margin. To avoid potential issues, disconnect USB devices, disable them in the BIOS, or choose servers that do not require USB devices.
Remotely managed power strips
Power strips are not an integral part of server hardware, but they can make a large difference in the data center. Measurements show that volume servers that are plugged in but have been ostensibly powered off may still require up to 30 watts of power. To avoid wasting electricity, you can deploy a remotely managed power strip for each rack of servers to programmatically disconnect power from specific servers.
Power and Performance Tuning
Energy efficiency is increasingly important in enterprise and data center environments and it adds another set of tradeoffs to the mix of configuration options.
The out-of-the-box experience in Windows Server 2008 R2 is optimized for excellent energy efficiency with minimum performance impact across a wide range of customer workloads. This section describes energy-efficiency tradeoffs, to help you make informed decisions if you need to adjust the default power settings on your server.
Calculating Server Energy Efficiency
When you tune your server for energy savings, you must consider performance as well. Tuning affects both performance and power, sometimes in disproportionate amounts. For each possible adjustment, consider your power budget and performance goals to determine whether the trade-off is acceptable.
You can calculate your server's energy efficiency ratio for a useful metric that incorporates both power and performance information. Energy efficiency is the ratio of work that is done to the average power that is required during a specified amount of time. In equation form:
You can use this metric to set practical goals that respect the tradeoff between power and performance. In contrast, a goal of 10 percent energy savings across the datacenter fails to capture the corresponding effects on performance and vice versa. Similarly, if you tune your server to increase performance by 5 percent and that results in 10 percent higher energy consumption; the total result might or might not be acceptable for your business goals. The energy efficiency metric allows for more informed decision making than power or performance metrics alone.
Measuring System Energy Consumption
You should establish a baseline power measurement before you tune your server for energy efficiency.
If your server has the necessary support, you can use the power metering and budgeting features in Windows Server 2008 R2 to view system-level energy consumption through Performance Monitor (Perfmon). One way to determine whether your server has support for metering and budgeting is to review the Windows Server Catalog. (For a link to the Windows Server Catalog, see “Resources” later in this guide.) If your server model qualifies for the new Enhanced Power Management additional qualification in the Windows Logo Program, it is guaranteed to support the metering and budgeting functionality.
Another way to check for metering support is to manually look for the counters in Performance Monitor. Open Performance Monitor, select Add Counters, and locate the Power Meter counter group. If named instances of power meters appear in the box labeled Instances of Selected Object, your platform supports metering. The Power counter that shows power in watts appears in the selected counter group. The exact derivation of the power data value is not specified. For example, it could be instantaneous power draw or average power draw over some time interval.
If your server platform does not support metering, you can use a physical metering device connected to the power supply input to measure system power draw or energy consumption.
To establish a baseline, you should measure the average power required at various system load points, from idle to 100 percent (maximum throughput). Such a baseline generates what is called a “load line”. Figure shows load lines for three sample configurations.
Figure . Sample load lines
You can use load lines to evaluate and compare the performance and energy consumption of different configurations at all load points.
You should measure system utilization and energy consumption on a regular basis and after changes in workloads, workload levels, or server hardware.
Diagnosing Energy Efficiency Issues
In Windows 7 and Windows Server 2008 R2, the Windows PowerCfg utility supports a new command-line option that you can use to analyze the energy efficiency of your server. When you run the powercfg command with the /energy option, the utility performs a 60-second test to detect potential energy efficiency issues. The utility generates a simple HTML report in the current directory. To ensure an accurate analysis, make sure that all local applications are closed before you run the powercfg command.
Shortened timer tick rates, drivers that lack power management support, and excessive CPU utilization are just a few of the behavioral problems that are detected by the powercfg/energy command. This tool provides a simple way to identify and fix power management problems, potentially resulting in significant cost savings in a large datacenter.
For more information on the powercfg /energy option, see "Resources" later in this guide.
Using Power Plans in Windows Server
Windows Server 2008 R2 has three built-in power plans, each designed to meet a different set of business needs. These plans provide a simple way for an administrator to customize a server to meet power or performance goals. Table 4 describes the plans, lists common scenarios in which to use each plan, and gives some implementation details for each plan.
Default setting. Highest energy efficiency with minimum performance impact.
Matches capacity to demand. Energy-saving features balance power and performance.
Increases performance at the cost of high energy consumption. Should not be used unless absolutely necessary.
Application code sensitive to processor frequency changes.
Processors are always locked at the highest performance state.
Limits performance to save energy and reduce operating cost.
Deployments with limited power budgets.
Caps processor frequency at a percentage of maximum (if supported), and enables other energy-saving features.
These plans exist in Windows for both AC (alternating current) and DC (direct current) powered systems, but in this paper we assume that servers are using AC power.
For more information on power plans, power policies, and power policy configuration, see "Resources" later in this guide.
Tuning Processor Power Management Parameters
Each power plan shown in Table 4 represents a combination of numerous underlying power management parameters. The built-in plans are three collections of recommended settings that cover a wide variety of workloads and scenarios. However, we recognize that these plans will not meet every customer’s needs.
The following sections describe ways to tune some specific processor power management parameters to meet goals not addressed by the three built-in plans. If you need to understand a wider array of power parameters, you can read the document on power policy configuration listed in "Resources" later in this guide. That document provides a more detailed explanation of power plans and parameters, and it includes instructions for adjusting parameter values using the PowerCfg command-line tool.
Processor Performance Boost Policy
Intel Turbo Boost Technology is a feature that allows Intel processors to achieve additional performance when it is most useful (that is, at high system loads). However, this feature increases CPU core energy consumption, so we configure Turbo Boost based on the power policy that is in use and the specific processor implementation. Turbo Boost is enabled for High Performance power plans on all Intel processors and it is disabled for Power Saver power plans on all Intel processors. TurboBoost is disabled on Balanced power plans for some Intel processors. For future processors, this default setting might change depending on the energy efficiency of such features. To enable or disable the Turbo Boost feature, you must configure the Processor Performance Boost Policy parameter.
The Processor Performance Boost Policy is a percentage value from 0 to 100. The default value of this parameter is 49 percent on Balanced plans and 0 percent on Power Saver plans. Any value lower than 50 disables Turbo mode on some current Intel processors. To enable Turbo Mode, set this value to 50 or higher.
The following commands set Processor Performance Boost Policy to 100 on the current power plan. Specify the policy by using a GUID string, as shown below:
Powercfg -setactive scheme_current
Note that you must run the powercfg -setactive command to enable the new settings. You do not need to reboot the server.
To set this value for power plans other than the current selected plan, you can use aliases such as SCHEME_MAX (Power Saver), SCHEME_MIN (High Performance), and SCHEME_BALANCED (Balanced) in place of SCHEME_CURRENT. Replace “scheme current” in the powercfg -setactive commands shown above with the desired alias to enable that power plan. For example, to adjust the Boost Policy in the Power Saver plan and make Power Saver the current plan, run the following commands:
Processors change between performance states (“P-states”) very quickly to match supply to demand, delivering performance where necessary and saving energy when possible. If your server has specific high-performance or minimum-power-consumption requirements, you might consider configuring the Minimum or Maximum Processor Performance State parameter.
The values for both the Minimum and Maximum Processor Performance State parameters are expressed as a percentage of maximum processor frequency, with a value in the range 0 – 100.
If your server requires ultra-low latency, invariant CPU frequency, or the very highest performance levels, you might not want the processors switching to lower-performance states. For such a server, you can cap the minimum processor performance state at 100 percent by using the following commands:
Powercfg -setactive scheme_current
If your server requires lower energy consumption, you might want to cap the processor performance state at a percentage of maximum. For example, you can restrict the processor to 75 percent of its maximum frequency by using the following commands:
Powercfg -setactive scheme_current
Note that capping processor performance at a percentage of maximum requires processor support. Check the processor documentation to determine whether such support exists, or view the Perfmon counter “% of maximum frequency” in the Processor group to see if any frequency caps were applied as desired.
Processor Performance Core Parking Maximum and Minimum Cores
Core parking is a new feature in Windows Server 2008 R2. The processor power management (PPM) engine and the scheduler work together to dynamically adjust the number of cores available to execute threads. The PPM engine chooses a minimum number of cores on which threads will be scheduled. Cores that are chosen to be “parked” will generally not have any threads scheduled on them and they will drop into very low power states when not processing interrupts or DPCs, or other strictly affinitized work. The remaining set of “unparked” cores is responsible for the remainder of the workload. Core parking can increase energy efficiency during lower usage periods on the server because parked cores can drop into deep low-power states.
For most servers, the default core-parking behavior provides the optimum balance of throughput and energy efficiency. If your server has specific core-parking requirements, you can control the number of cores available to park by using either the Processor Performance Core Parking Maximum Cores parameter or the Processor Performance Core Parking Minimum Cores parameter in Windows Server 2008 R2.
The values for these parameters are percentages in the range 0–100. The Maximum Cores parameter controls the maximum percentage of cores that can be unparked (available to run threads) at any time, while the Minimum Cores parameter controls the minimum percentage of cores that can be unparked. To turn off core parking, set the Minimum Cores parameter to 100 percent by using the following commands: