Poorer battery life after kernel upgrade: 4.5.2 (16.04 LTS)

When I first installed 16.04 LTS, at kernel 4.4.0, I had a decent battery life of about 3 hours average, but I upgraded to 4.5.2 to solve the suspend problem and some other issues, and now it's less than 1.40 hours, even at low brightness.

What could have caused a drop between the kernels? 4.5.2 is stable, and the same thing happened when upgrading to 4.4.8 (lts).

I'm attaching TLP outputs. I'm desperate to make this a better battery life.

uname -a:

Linux gaj-Lenovo-Z51-70 4.5.2-040502-generic #201604200335 SMP Wed Apr 20 07:37:26 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

I did a tlp -stat output of both kernels in use (4.4.0 and 4.5.2), and the only difference I can notice is that the latest kernel 4.5.2, outputs this, compared to the 4.4.0 which saves battery:

/sys/devices/system/cpu/intel_pstate/min_perf_pct      = 18
/sys/devices/system/cpu/intel_pstate/max_perf_pct      = 100
/sys/devices/system/cpu/intel_pstate/no_turbo          = 0

x86_energy_perf_policy: program for your kernel not installed.

When I try to install linux-tools, as explained at TLP's troubleshooting website, which says

tlp-stat -p shows "x86_energy_perf_policy: program [for your kernel] not installed."

Depending on the distro your mileage may vary:

Ubuntu: install the meta-package linux-tools (or linux-tools-lts-* for HWE stack kernels), no package available for mainline kernels.

I get:

 Package linux-tools is a virtual package provided by:
      linux-tools-virtual 4.4.0.21.22
      linux-tools-lowlatency 4.4.0.21.22
      linux-tools-generic 4.4.0.21.22
    You should explicitly select one to install.

So no tools for 4.5.2 kernel. Or should I install HWE stack tools? What does HWE mean in relation to the stable 4.5.2 kernel?

Many thanks.

EDIT: At 4.5.2 I can also hear the fan more frequently and intensely, even at opening Chrome, Skype, etc.

EDIT 2: It might be worth noting that I use a hybrid graphics system INtel and ATI, but I haven't installed any propriertary drivers, or manually upgraded any.

EDIT 3: sudo tail -f -n 1000 /var/log/syslog when starting TLP:

^[[B^[[AMay  5 21:52:57 gaj-Lenovo-Z51-70 kernel: [ 7945.966502] acpi_call: Cannot get handle: Error: AE_NOT_FOUND
May  5 21:52:57 gaj-Lenovo-Z51-70 kernel: [ 7945.976707] acpi_call: Cannot get handle: Error: AE_NOT_FOUND
May  5 21:53:12 gaj-Lenovo-Z51-70 kernel: [ 7961.360242] acpi_call: Cannot get handle: Error: AE_NOT_FOUND

You have installed TLP to extend the battery life on your laptop, but are still getting poor battery life. When you look at the output of tlp -stat output you found the error message x86_energy_perf_policy: program for your kernel not installed.

When you attempt to install the energy performance policy by sudo apt-get install linux-tools-generic the install appears to work but does not have any effect.

I have looked at the code for x86_energy_perf_policy and I could see no issues with it. It does not appear to be kernel specific so it looks like x86_energy_perf_policy which is part of linux-tools-common is not linked into the kernel properly.

This will have a big effect on battery life for laptops with Intel CPUs since the default policy is to maximise performance at the expense of energy expenditure (and hence battery life).

I may be wrong and x86_energy_perf_policy could be depreciated and TLP has yet to catch up but this looks like a serious kernel bug. I could attempt to patch your kernel to resolve this, but this issue will effect this and subsequent versions of the Linux kernel until it is resolved so I suggest you raise a bug by entering ubuntu-bug at a terminal. Feel free to paste parts of this answer into your bug report if this helps.


To answer my own question, the problem was that in dual graphics system, the newer kernels would load both the power-saving and discreet GPU, whereas the default install kernel that came with 16.04 LTS would not, and subsequently the fan and battery would be drained more.

This could have been solved by creating and using a radeonoff script when booting, or simply, as I solved it, disabling the switichable graphics options in BIOS. Temporary solution, untilAMDGPU is more developed.