[qubes-users] Poor battery life running Qubes

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™ 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 qubes-linux-kernel/config-base at master · QubesOS/qubes-linux-kernel · GitHub, 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

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?

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

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