Core parking requirements

Core Parking has no hardware or processor dependencies

In general no – there are no specific requirements. As long as the processor has more than one core, core parking will opportunistically park cores. Core parking is simply a mechanism to express to the scheduler a preference on which processors to use.  By virtue of the scheduler adhering to that preference, we are able to consolidate work on to fewer processors.  The “parked” processors which should have less work to do will likely transition to “Idle” sooner and for longer, thereby providing greater power savings.  Hence, there are no hardware requirements for the actual “parking/unparking” selection process.

“Parked” is not the same as “Idle”

Parking is a hint to the scheduler; parking promotes the chances of the core to enter idle. It does not imply idle; nor is it a pre-requisite for idle.

Power saved during “Idle” is highly dependent on HW/processor characteristics.

For example features such as C1E, C6 and others all potentially increase power savings- some processors have these some don’t.  Again, core parking does not directly influence how much power is saved during idle. It only promotes the chances of being idle.

The Core Parking engine does not park sockets/packages

All parking is done on a logical processor basis. If all cores that constitute a package get parked during the operation of the engine; it is coincidental. In fact, this is rare because the engine always leaves at least one logical processor per NUMA node unparked and so if a package/socket is a NUMA node, there will never be a case in which all cores in the socket are parked. Hence the only way all logical processors in a package get parked is if there are multiple sockets per NUMA node.

Resource Monitor shows the current parking status of each core.

There isn’t a way to know which cores/sockets are idle at a particular time instant. This information may not be very interesting because a processor is typically transitioning in and out of idle 100s of times a second. %idle time is in many cases the metric of interest.

In performance Monitor – Processor Information -> %Idle Time. You can select the logical processors of interest and the counter says what fraction of time the processor has been Idle. This performance counter gives information about the % of time each logical processor in the system has been idle. Unfortunately, there is no similar counter for sockets.