Servers can be energy-inefficient and often aren't utilized to their fullest, but making use of "core parking" can help.
Most workloads experience peaks and fall-offs in their computing demand, even in highly virtualized environments, and it is possible that some processing cores may experience times when there is simply nothing to do. Considering that CPUs are the principal sources of
The "core" of core parking
The operating system is responsible for allocating processing threads to the available processor cores in a system -- essentially handing out the work of various applications to the available CPUs. The problem is that processors that aren't asked to take on a full plate of work are still using almost full power (and generating full heat), and this can waste considerable energy. The idea behind core parking is to fill the available cores with threads, and any cores that have no threads or interrupts to handle will be allowed to drop into a deep, power-saving state.
For example, if there are two cores on the server, but the OS only has enough work to keep one busy, the system can basically shut down (or park) one core and leave the remaining core to do the system's work. Parked cores require almost no power and produce almost no heat.
Core parking is a dynamic activity. As the system's workload increases, parked cores can be activated to provide additional computing resources, then parked again as the computing demand falls off.
Monitoring and controlling core parking
IT administrators can use the Windows Resource Monitor utility to determine the status of each core. In the usage graphs displayed for each CPU, parked cores will be shown directly as "Parked." As an alternative, the parking status counter in Windows Performance Monitor (perfmon.exe) will reveal which processors are parked or not. The Parking Status counter is located under the Processor Information performance counter group.
Core parking is part of Windows Server 2008 R2 and Windows 7, so no additional tools or utilities are needed, and the feature is enabled by default, based on the system's selected power scheme. Computers using a balanced power scheme will typically use core parking by default. Computers set to use a high performance power scheme will not park processor cores.
As a rule, systems with performance-sensitive workloads should use a high performance power scheme and will prefer to disable core parking. This will prevent unexpected disruptions or performance variations as cores are parked or restarted. However, noncritical systems with workloads that normally experience great variations in computing demands may benefit from core parking behavior with little -- if any -- noticeable disruption.
Core parking can be controlled directly with the command line powercfg.exe utility. A simple way to disable core parking through the powercfg.exe utility is to set the minimum percentage of cores that can be unparked to 100% using a command line such as the following:
powercfg -setacvalueindex scheme_current sub_processor bc5038f7-23e0-4960-96da-33abaf5935ec 100
The arguments in this command line set a value for AC, or utility-powered, operation, selecting the current power scheme and setting the minimum cores parameter to 100%. This means that for the current power scheme, 100% of the processor cores must be active, essentially disabling core parking. You can get a listing of all the power schemes and hexadecimal strings using the following commands:
Windows documentation will provide more details about core parking and the powercfg.exe utility.
Using core parking can amount to serious energy savings when there are hundreds, or even thousands, of servers in the data center. A server with Windows Server 2008 R2 and later can idle any unused cores and realize some power savings, then easily restart those cores later to handle increased computing needs.
This was first published in February 2013