Ubuntu – Does Ubuntu support Core Parking

acpicpumulti-core

Core parking is a new feature that introduced in Windows 7 to get better Battery performance .

Depending on the resource use of the operating system it may park one or multiple cores of a multi-core cpu to reduce the computer’s power consumption and thermal emissions. Once operations require more processing power, the parked cores are activated again to assist in the tasks

So my question is that is there any way i can do it on Ubuntu 12.04 " Core Parking " ?

Best Answer

For the time being, I do not have a clear answer for this, however it is obvious that the linux Kernel is using some energy saving mechanisms.

However, doing some quick research around, I quickly realised that the most recent Linux kernels make use of a feature called ACPI which is an acronym for Advanced Configuration and Power Interface.

What the ACPI is doing:

the Advanced Configuration and Power Interface (ACPI) specification provides an open standard for device configuration and power management by the operating system.

via Wikipedia.

Basically the ACPI allows for control of different CPU states, to allow for better power management.

Different ACPI CPU-states:

CPU C-States (power management)

Basically, there is probably nothing that you have to worry about concerning the CPU "C states". These are automatically controlled by the kernel+ACPI system taking into consideration current system load. (CAVEAT: check out the note about AMD Athlon and Duron processors below). The ACPI code in the newer (2.6+) kernels automatically puts your CPU to sleep when there is idle time (note: this does not change the CPU frequency. That is controlled by "P states" - see below).

The only thing to realize is that your system is completely "conscious" when the CPU is momentarily halted - you won't notice much of a difference. However, the power savings can be considerable. Just think of it as having your CPU taking thousands of "micro-naps" whenever it is idle.

CPU-T States (throttling)

These are very much like "C states" (the same HLT instruction is used), however the difference is that throttling is "forced by you" (like every 4th cycle is forced to be a sleep cycle, as opposed to the "C states" above which are automatically determined by the system load). Note that the frequency has NOT been changed... see the "P states" below.

CPU-P States (performance)

Many processors these days (especially laptops) can have the clock frequency actually slowed "on the fly". This adds up to huge power savings. Intel calls this "SpeedStep" and AMD calls it "Cool'n'Quiet" or "PowerNow". More generically these states are called "P states". You will almost certainly have to go into the BIOS and enable this feature for your CPU FIRST!

** Some consumption benchmarks:**

What are the power savings from the above CPU states? The following data is extracted from the AMD website. Consider an AMD 64 3400+/2200MHz with 1 MB of L2 cache. By the way, while I'm here, let me complain about the AMD naming convention. The number 3400+ doesn't mean jack squat. This is just AMD's way of saying that this processor "looks like" an Intel Pentium-4 running at 3400MHz. I guess this is their way of not losing marketshare. Here are the P and T state power consumption values (the C state is the same HLT instruction as the T state):

  • Performance State 0 (Fully Active) (2200MHz): 89 Watts
  • Performance State 1 (2000MHz): 70 Watts
  • Performance State 2 (800MHz): 35 Watts
  • Throttled (HLT instruction): 2.2 Watts

Some references for further reading

EDITS

[EDIT #1]: Googling around, I found some other posts in some forums too (OpenSuse forum seems to be relevant to what you seek) and found out that this is not that much of an issue for Linux as it is for windows and especially in gaming. I also dug up some information in two mails (first one and second one [follow-up]) in the RedHat mailing lists that seems to be related. I am currently researching the information in it.

[EDIT #2]: I have researched the issue a bit, and I am getting more and more certain that there is not a core parking mechanism in Linux, unless there is one the ACPI that I am unaware of. Some interesting findings are some pieces of software that allow for direct manipulation of the cpu and the processes run on it, like cpuset, numactl and last but not least, CPUfreq. Will continue with my research.