ACPI is the Advanced Configuration and Power Interface, which allows Ubuntu (or any OS) to communicate with your hardware in a standard manner. It's main function is power management, along with hardware device configuration.
A GPE in ACPI is a General Purpose Event. Think of it as an interrupt - the hardware is informing the OS (via ACPI) that something happened. The "something" usually includes things like plugging/unplugging your AC adapter, closing/opening the lid of your laptop, etc.
EC is the embedded controller which provides ACPI functions on your motherboard.
A GPE storm occurs when the EC starts sending hundreds or thousands of "events" per second to the OS -- these are either spurious (bogus), or due to some fault in the underlying hardware. e.g. a failure in your battery's charging controller leads the ACPI EC to think that the battery is being removed and reinserted hundreds of times per second.
Transactions will use polling mode means that to handle the storm, the OS will stop using GPEs/interrupts to be informed of ACPI events and will instead -- on its own schedule -- "poll" or proactively ask the ACPI EC if any events it should know of have occurred. This way, the OS can still effectively perform ACPI functions while not being overwhelmed with a "GPE storm".
As for your particular problem, yes, this error can certainly affect system stability and usually means something is wrong with your hardware and not Ubuntu/the kernel. If you experience frequent crashes, try running the Memory Test from the Ubuntu Live CD?
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.
Best Answer
I suggest you start by trying to follow the steps in this guide: DebuggingACPI.
The description at the top of that page says it is part of Debugging Central, "pages with debugging details for a variety of Ubuntu packages" on the Ubuntu Community Wiki.
You should also try looking at the entries in
/var/log/syslog
to see if anything there will help isolate the problem.Make sure the portion of the log you look at is from a failed boot. That is, the log entries should be from a boot where neither
acpi=off
nornolapic
were used. The log timestamps should allow you to determine which boot a log file entry is from.If you find it easier to use a GUI application, Ubuntu has a
Log File Viewer
which you can use. It can be found by searching for it usingDash
.The steps below are (pretty much) copied from the DebuggingACPI page and are what I suggest you do to try to isolate the problem before filing a bug report. (I believe the procedures for reporting a bug are also on the DebuggingACPI page)
If
acpi=off
allows the system to boot, try to isolate the ACPI issue with the following boot parameters. Removeacpi=off
and boot with only one of the options below.If you are lucky, you might find a combination of kernel parameters which allows you to boot and use all the cores of your CPU.
Note: If you need an explanation of to how to do a "one time" change of the kernel boot parameters/options, try this answer to the question "How do I add a kernel boot parameter?".
acpi=ht
This disables all of ACPI except just enough to enable Hyper Threading.
If
acpi=off
works andacpi=ht
fails, then the issue is in the ACPI table parsing code itself, or perhaps the SMP code.pci=noacpi
This disables ACPI for IRQ routing and PCI scanning.
acpi=noirq
This disables ACPI for IRQ routing.
pnpacpi=off
This disables the ACPI component of the Linux Plug and Play code.
noapic
Disables the IO-APIC for IRQ routing or PCI scanning.
nolapic
Disables the local APIC.