Poor battery life running Qubes

109 views
Skip to first unread message

Jonathan Budd

unread,
Mar 29, 2021, 10:07:53 AM3/29/21
to qubes-users
Hi there

I've been using Qubes for about 18 months now, and it's great. My only complaint is the poor battery life I get. I've followed various recommendations within qubes-users about using powertop and tlp, but nothing seems to address the rapid decline in power I experience when running on battery.

Some system information:

Kernel Version     Linux version 5.4.88-1.qubes.x86_64
System Name     PurismLibrem 15 v44.0 (Pureboot)
CPU Information     2 Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz
OS Information     Qubes release 4.0 (R4.0)

Probably the biggest clue I have received was from running tlp stat, which suggests:

"Reconfigure your Linux kernel with PM_RUNTIME=y to reduce your laptop's power consumption."

This seems to be reinforced by the following output from powertop:

Untunable Software Issues
Description
I2C Adapter i2c-3 has no runtime power management
I2C Adapter i2c-4 has no runtime power management

Optimal Tuned Software Settings
Description
NMI watchdog should be turned off
Enable SATA link power management for host0
Enable SATA link power management for host1
Enable Audio codec power management
Runtime PM for I2C Adapter i2c-1 (i915 gmbus dpb)
Runtime PM for I2C Adapter i2c-2 (i915 gmbus dpd)
Runtime PM for I2C Adapter i2c-0 (i915 gmbus dpc)
Runtime PM for I2C Adapter i2c-5 (SMBus I801 adapter at efa0)
Runtime PM for PCI Device Samsung Electronics Co Ltd Device a808
Runtime PM for PCI Device Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem
Runtime PM for PCI Device Qualcomm Atheros AR9462 Wireless Network Adapter
Runtime PM for PCI Device Intel Corporation Device 9d24
Runtime PM for PCI Device Intel Corporation Device 9d30
Runtime PM for PCI Device Intel Corporation Sunrise Point-LP HD Audio
Runtime PM for PCI Device Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers
Runtime PM for PCI Device Intel Corporation Device 9d4e
Runtime PM for PCI Device Intel Corporation Sunrise Point-LP Thermal subsystem
Runtime PM for PCI Device Intel Corporation HD Graphics 620
Runtime PM for PCI Device Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller
Runtime PM for PCI Device Intel Corporation Sunrise Point-LP SMBus
Runtime PM for PCI Device Intel Corporation Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th Gen Core Processor Gaussian Mixture Model
Runtime PM for PCI Device Intel Corporation Sunrise Point-LP PCI Express Root Port #5
Runtime PM for PCI Device Intel Corporation Sunrise Point-LP PMC
Runtime PM for PCI Device Intel Corporation Sunrise Point-LP SATA Controller [AHCI mode]
Runtime PM for PCI Device Intel Corporation Sunrise Point-LP PCI Express Root Port #9

Looking at https://github.com/QubesOS/qubes-linux-kernel/blob/master/config-base, I can see CONFIG_PM_RUNTIME is absent from the config. I'm willing to try recompiling the Linux kernel for Qubes with PM_RUNTIME=y, but my understanding is that I would need to set up a VM running Fedora 25. Before I head down that rabbit hole, I wanted to ask if anyone had experienced similar problems and tried this solution. Further, is there a reason that flag is not currently included in the base config?

Thanks in advance,


Jonathan

Josef Johansson

unread,
Apr 1, 2021, 3:48:29 PM4/1/21
to qubes-users
Hi,

Just curious, is xen-acpi-processor module loaded in dom0 (lsmod / modprobe xen-acpi-processor) and what does xenpm get-cpufreq-para tell you?

Jonathan Budd

unread,
Apr 2, 2021, 3:11:31 PM4/2/21
to qubes-users
Hi and thanks for the response. I ran the commands you mentioned and got the following:

[jonathan@dom0 ~]$ lsmod | grep xen_acpi_processor
xen_acpi_processor 20480 0

[jonathan@dom0 ~]$ xenpm get-cpufreq-para
cpu id               : 0
affected_cpus        : 0
cpuinfo frequency    : max [2701000] min [400000] cur [2700000]
scaling_driver       : acpi-cpufreq
scaling_avail_gov    : userspace performance powersave ondemand
current_governor     : ondemand
  ondemand specific  :
    sampling_rate    : max [10000000] min [10000] cur [20000]
    up_threshold     : 80
scaling_avail_freq   : 2701000 2700000 2500000 2200000 1900000 1600000 1300000 1000000 700000 *400000
scaling frequency    : max [2700000] min [400000] cur [400000]
turbo mode           : enabled

[CPU1] failed to get cpufreq parameter

Appreciate any help in interpreting the above!

Best


Jonathan

Ulrich Windl

unread,
Apr 3, 2021, 4:25:22 PM4/3/21
to qubes...@googlegroups.com
On 4/2/21 9:11 PM, Jonathan Budd wrote:
> Hi and thanks for the response. I ran the commands you mentioned and got
> the following:
>
> [jonathan@dom0 ~]$ lsmod | grep xen_acpi_processor
> xen_acpi_processor 20480 0
>
> [jonathan@dom0 ~]$ xenpm get-cpufreq-para
> cpu id               : 0
> affected_cpus        : 0
> cpuinfo frequency    : max [2701000] min [400000] cur [2700000]
> scaling_driver       : acpi-cpufreq
> scaling_avail_gov    : userspace performance powersave ondemand
> current_governor     : ondemand
>   ondemand specific  :
>     sampling_rate    : max [10000000] min [10000] cur [20000]
>     up_threshold     : 80
> scaling_avail_freq   : 2701000 2700000 2500000 2200000 1900000 1600000
> 1300000 1000000 700000 *400000
> scaling frequency    : max [2700000] min [400000] cur [400000]
> turbo mode           : enabled
>
> [CPU1] failed to get cpufreq parameter

I'm not running on battery, but I also see those "failed to get cpufreq
parameter":

[master@dom0 ~]$ xenpm get-cpufreq-para
cpu id : 0
affected_cpus : 0
cpuinfo frequency : max [4001000] min [800000] cur [4000000]
scaling_driver : acpi-cpufreq
scaling_avail_gov : userspace performance powersave ondemand
current_governor : ondemand
ondemand specific :
sampling_rate : max [10000000] min [10000] cur [20000]
up_threshold : 80
scaling_avail_freq : 4001000 4000000 *3800000 3500000 3300000 3100000
2900000 2600000 2400000 2200000 1900000 1700000 1500000 1300000 1000000
800000
scaling frequency : max [4001000] min [800000] cur [3800000]
turbo mode : enabled

[CPU1] failed to get cpufreq parameter
cpu id : 2
affected_cpus : 2
cpuinfo frequency : max [4001000] min [800000] cur [4000000]
scaling_driver : acpi-cpufreq
scaling_avail_gov : userspace performance powersave ondemand
current_governor : ondemand
ondemand specific :
sampling_rate : max [10000000] min [10000] cur [20000]
up_threshold : 80
scaling_avail_freq : 4001000 4000000 3800000 3500000 3300000 3100000
2900000 2600000 2400000 2200000 1900000 1700000 1500000 1300000 1000000
*800000
scaling frequency : max [4001000] min [800000] cur [800000]
turbo mode : enabled

[CPU3] failed to get cpufreq parameter
> <https://github.com/QubesOS/qubes-linux-kernel/blob/master/config-base>,
> I can see CONFIG_PM_RUNTIME is absent from the config. I'm
> willing to try recompiling the Linux kernel for Qubes with
> PM_RUNTIME=y, but my understanding is that I would need to set
> up a VM running Fedora 25. Before I head down that rabbit hole,
> I wanted to ask if anyone had experienced similar problems and
> tried this solution. Further, is there a reason that flag is not
> currently included in the base config?
>
> Thanks in advance,
>
>
> Jonathan
>
> --
> You received this message because you are subscribed to the Google
> Groups "qubes-users" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to qubes-users...@googlegroups.com
> <mailto:qubes-users...@googlegroups.com>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/qubes-users/a8a2c43c-911d-4260-8e12-5199001e20a0n%40googlegroups.com
> <https://groups.google.com/d/msgid/qubes-users/a8a2c43c-911d-4260-8e12-5199001e20a0n%40googlegroups.com?utm_medium=email&utm_source=footer>.
Reply all
Reply to author
Forward
0 new messages