You are not logged in.

#1 2023-09-21 07:24:02

Sarcasm
Member
Registered: 2023-09-21
Posts: 5

Insane use of battery from kernel tick_sched_timer and wifi

Hello all,
I bought an MSI Pulse GL66 and installed Arch Linux with no major issues. I have noticed there is a large draining of battery. Below is an example of output from powertop:

The battery reports a discharge rate of 17.2 W
The energy consumed was 358 J
The estimated remaining time is 0 hours, 57 minutes

Summary: 1069,8 wakeups/second,  0,0 GPU ops/seconds, 0,0 VFS ops/sec and 204,6% CPU use

Power est.              Usage       Events/s    Category       Description
  6.00 W    471,6 pkts/s                Device         Network interface: wlo1 (iwlwifi)
  5.22 W     11,7 ms/s     644,1        Timer          tick_sched_timer
  2.35 W     35,0%                      Device         Display backlight
  2.00 W    100,0%                      Device         USB device: USB Receiver (Logitech)
  1.20 W    100,0%                      Device         USB device: usb-device-8087-0026
  626 mW      3,7 ms/s      77,2        Timer          hrtimer_wakeup
  520 mW      2,4 ms/s      64,2        Process        [PID 16] [rcu_preempt]
  274 mW      1,7 ms/s      33,8        kWork          kernfs_notify_workfn
  212 mW     1871 ms/s       3,0        kWork          intel_atomic_commit_work
  194 mW      3,9 ms/s      23,9        Interrupt      [0] HI_SOFTIRQ
  185 mW      0,8 ms/s      22,8        kWork          iwl_pcie_rx_allocator_work
  155 mW    531,0 µs/s      19,1        Process        [PID 792] [irq/148-iwlwifi]
  119 mW     10,5 ms/s      14,5        Process        [PID 8616] /bin/kitty
  113 mW    327,2 µs/s      14,0        Process        [PID 796] [irq/152-iwlwifi]

What is worrying me are mainly the following processes:

  • Network interface: wlo1 (iwlwifi)

  • tick_sched_timer

  • hrtimer_wakeup

  • rcu_preempt

The four above processes account for 70% of the battery usage. I installed slimbookbattery and it seems to work, but not enough. Any ideas about how to reduce battery usage?

Additional info:
My boot command

linux /boot/vmlinuz-6.1-x86_64 root=UUID=... rw  resume=UUID=... resume_offset=... udev.log_priority=3 mem_sleep_default=deep iommu=pt intel_iommu=on

Wifi (inxi -CGBN)

Battery:
  ID-1: BAT1 charge: 25.6 Wh (53.9%) condition: 47.5/52.0 Wh (91.4%)
CPU:
  Info: 14-core (6-mt/8-st) model: 12th Gen Intel Core i9-12900H bits: 64
    type: MST AMCP cache: L2: 11.5 MiB
  Speed (MHz): avg: 567 min/max: 400/4900:5000:3800 cores: 1: 412 2: 820
    3: 1158 4: 400 5: 1105 6: 400 7: 1350 8: 400 9: 400 10: 400 11: 905 12: 400
    13: 400 14: 400 15: 400 16: 400 17: 400 18: 400 19: 400 20: 400
Graphics:
  Device-1: Intel Alder Lake-P Integrated Graphics driver: i915 v: kernel
  Device-2: NVIDIA GA106M [GeForce RTX 3060 Mobile / Max-Q] driver: nvidia
    v: 535.104.05
  Device-3: Bison HD Webcam driver: uvcvideo type: USB
  Display: x11 server: X.Org v: 21.1.8 with: Xwayland v: 23.2.0 driver: X:
    loaded: modesetting,nvidia unloaded: nouveau dri: iris gpu: i915
    resolution: 1920x1080~144Hz
  API: OpenGL v: 4.6 Mesa 23.1.7-1 renderer: Mesa Intel Graphics (ADL GT2)
Network:
  Device-1: Intel Alder Lake-P PCH CNVi WiFi driver: iwlwifi
  Device-2: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet
    driver: r8169

Wifi (iw dev)

phy#0
	Unnamed/non-netdev interface
		wdev 0xd
		addr 8c:17:59:13:aa:38
		type P2P-device
		txpower 0.00 dBm
	Interface wlo1
		ifindex 3
		wdev 0x1
		addr 8c:17:59:13:aa:38
		ssid FASTWEB-YHCXGU
		type managed
		channel 100 (5500 MHz), width: 80 MHz, center1: 5530 MHz
		txpower 20.00 dBm
		multicast TXQ:
			qsz-byt	qsz-pkt	flows	drops	marks	overlmt	hashcol	tx-bytes	tx-packets
			0	0	0	0	0	0	0	0		0

/etc/tlp.conf (set up by slimbookbattery and then modified by me)

#Slimbook ENERGY SAVING MODE ##
# ------------------------------------------------------------------------------
# /etc/tlp.conf - TLP user configuration
# See full explanation: https://linrunner.de/en/tlp/docs/tlp-configuration.html
#
# New configuration scheme (TLP 1.3). Settings are read in the following order:

# 1. Intrinsic defaults
# 2. /etc/tlp.d/*.conf - Drop-in customization snippets
# 3. /etc/tlp.conf     - User configuration (this file)
#
# Notes:
# - In case of identical parameters, the last occurence has precedence
# - This also means, parameters enabled here will override anything else
# - However you may append values to a parameter already defined as intrinsic
#   default or in a previously read file: use PARAMETER+="add values"
# - IMPORTANT: all parameters here are disabled, remove the leading '#'
#   to enable them; shown values may be suggestions rather than defaults
# - Default *: intrinsic default that is effective when the parameter is missing
#     or disabled by a leading '#'; use PARAM="" to disable an intrinsic default
# - Default <none>: do nothing or use kernel/hardware defaults

# ------------------------------------------------------------------------------
# tlp - Parameters for power saving

# Set to 0 to disable, 1 to enable TLP.
# Default: 1
# Slimbook App
TLP_ENABLE=1

# Operation mode when no power supply can be detected: AC, BAT.
# Concerns some desktop and embedded hardware only.
# Default: <none>
# Slimbook App
TLP_DEFAULT_MODE=BAT

# Operation mode select: 0=depend on power source, 1=always use TLP_DEFAULT_MODE
# Note: use in conjunction with TLP_DEFAULT_MODE=BAT for BAT settings on AC.
# Default: 0

TLP_PERSISTENT_DEFAULT=0

# Power supply class to ignore when determining operation mode: AC, BAT.
# Note: try on laptops where operation mode AC/BAT is incorrectly detected.
# Default: <none>

#TLP_PS_IGNORE=BAT

# Seconds laptop mode has to wait after the disk goes idle before doing a sync.
# Non-zero value enables, zero disables laptop mode.
# Default: 0 (AC), 2 (BAT)

#DISK_IDLE_SECS_ON_AC=0
#DISK_IDLE_SECS_ON_BAT=2

# Dirty page values (timeouts in secs).
# Default: 15 (AC), 60 (BAT)

#MAX_LOST_WORK_SECS_ON_AC=15
#MAX_LOST_WORK_SECS_ON_BAT=60

# Note: CPU parameters below are disabled by default, remove the leading #
# to enable them, otherwise kernel defaults will be used.
#
# Select a CPU frequency scaling governor.
# Intel Core i processor with intel_pstate driver:
#   powersave(*), performance.
# Other hardware with acpi-cpufreq driver:
#   ondemand(*), powersave, performance, conservative, schedutil.
# (*) is recommended.
# Use tlp-stat -p to show the active driver and available governors.
# Important:
#   powersave for intel_pstate and ondemand for acpi-cpufreq are power
#   efficient for *almost all* workloads and therefore kernel and most
#   distributions have chosen them as defaults. If you still want to change,
#   you should know what you're doing!
# Default: <none>
# Slimbook App Modos

CPU_SCALING_GOVERNOR_ON_AC=performance
CPU_SCALING_GOVERNOR_ON_BAT=powersave

# For available frequencies see the output of tlp-stat -p.
# Notes:
# - Min/max frequencies must always be specified for both AC *and* BAT
# - Not recommended for use with the intel_pstate scaling driver, use
#   CPU_MIN/MAX_PERF_ON_AC/BAT below instead
# https://linrunner.de/tlp/settings/processor.html#cpu-scaling-min-max-freq-on-ac-bat
# Slimbook Modos Unchanged
CPU_SCALING_MIN_FREQ_ON_AC=0
CPU_SCALING_MAX_FREQ_ON_AC=1800000
CPU_SCALING_MIN_FREQ_ON_BAT=0
CPU_SCALING_MAX_FREQ_ON_BAT=550000

# Set Intel CPU energy/performance policies HWP.EPP and EPB:
#   performance, balance_performance, default, balance_power, power.
# Values are given in order of increasing power saving.
# Notes:
# - HWP.EPP: requires kernel 4.10, intel_pstate scaling driver and Intel Core i
#   6th gen. or newer CPU
# - EPB: requires kernel 5.2 or module msr and x86_energy_perf_policy from
#   linux-tools, intel_pstate or intel_cpufreq scaling driver and Intel Core i
#   2nd gen. or newer CPU
# - When HWP.EPP is available, EPB is not set
# Default: balance_performance (AC), balance_power (BAT)
# Slimbook Modos Unchanged

CPU_ENERGY_PERF_POLICY_ON_AC=performance
CPU_ENERGY_PERF_POLICY_ON_BAT=power

# Set Intel CPU P-state performance: 0..100 (%).
# Limit the max/min P-state to control the power dissipation of the CPU.
# Values are stated as a percentage of the available performance.
# Requires an Intel Core i processor with intel_pstate driver.
# Default: <none>
# Slimbook Modos Unchanged
CPU_MIN_PERF_ON_AC=0
CPU_MAX_PERF_ON_AC=100

CPU_MIN_PERF_ON_BAT=0
CPU_MAX_PERF_ON_BAT=20

# Set the CPU "turbo boost" feature: 0=disable, 1=allow
# Requires an Intel Core i processor.
# Important:
# - This may conflict with your distribution's governor settings
# - A value of 1 does *not* activate boosting, it just allows it
# Default: <none>
# Slimbook Modos Unchanged
CPU_BOOST_ON_AC=1
CPU_BOOST_ON_BAT=0

# Minimize number of used CPU cores/hyper-threads under light load conditions:
#   0=disable, 1=enable.
# Default: 0 (AC), 1 (BAT)
# Slimbook Modos Unchanged
SCHED_POWERSAVE_ON_AC=0
SCHED_POWERSAVE_ON_BAT=0

# Kernel NMI Watchdog 
# 0=disable (default, saves power), 1=enable (for kernel debugging only).
# Slimbook Unchanged
NMI_WATCHDOG=0

# Change CPU voltages aka "undervolting" - Kernel with PHC patch required.
# Frequency voltage pairs are written to:
#   /sys/devices/system/cpu/cpu0/cpufreq/phc_controls
# CAUTION: only use this, if you thoroughly understand what you are doing!
# Default: <none>.

#PHC_CONTROLS="F:V F:V F:V F:V"

# Disk devices; separate multiple devices with spaces.
# Devices can be specified by disk ID also (lookup with: tlp diskid).
# Note: DISK parameters below are effective only when this option is configured.
# Default: "nvme0n1 sda"

# DISK_DEVICES="nvme0n1 sda"

# Disk advanced power management level: 1..254, 255 (max saving, min, off).
# Levels 1..127 may spin down the disk; 255 allowable on most drives.
# Separate values for multiple disks with spaces. Use the special value 'keep'
# to keep the hardware default for the particular disk.
# Default: 254 (AC), 128 (BAT)

# DISK_APM_LEVEL_ON_AC="254 254"
# DISK_APM_LEVEL_ON_BAT="128 128"

# Hard disk spin down timeout:
#   0:        spin down disabled
#   1..240:   timeouts from 5s to 20min (in units of 5s)
#   241..251: timeouts from 30min to 5.5 hours (in units of 30min)
# See 'man hdparm' for details.
# Separate values for multiple disks with spaces. Use the special value 'keep'
# to keep the hardware default for the particular disk.
# Default: <none>

#DISK_SPINDOWN_TIMEOUT_ON_AC="0 0"
#DISK_SPINDOWN_TIMEOUT_ON_BAT="0 0"

# Select I/O scheduler for the disk devices.
# Multi queue (blk-mq) schedulers:
#   mq-deadline(*), none, kyber, bfq
# Single queue schedulers:
#   deadline(*), cfq, bfq, noop
# (*) recommended.
# Separate values for multiple disks with spaces. Use the special value 'keep'
# to keep the kernel default scheduler for the particular disk.
# Notes:
# - Multi queue (blk-mq) may need kernel boot option 'scsi_mod.use_blk_mq=1'
#   and 'modprobe mq-deadline-iosched|kyber|bfq' on kernels < 5.0
# - Single queue schedulers are legacy now and were removed together with
#   the old block layer in kernel 5.0
# Default: keep

#DISK_IOSCHED="mq-deadline mq-deadline"

# AHCI link power management (ALPM) for disk devices:
#   min_power, med_power_with_dipm(*), medium_power, max_performance.
# (*) Kernel >= 4.15 required, then recommended.
# Multiple values separated with spaces are tried sequentially until success.
# Default:
#  - "med_power_with_dipm max_performance" (AC)
#  - "med_power_with_dipm min_power" (BAT)

# SATA_LINKPWR_ON_AC="med_power_with_dipm max_performance"
# SATA_LINKPWR_ON_BAT="med_power_with_dipm min_power"

# Exclude host devices from AHCI link power management.
# Separate multiple hosts with spaces.
# Default: <none>

#SATA_LINKPWR_BLACKLIST="host1"

# Runtime Power Management for AHCI host and disks devices:
#   on=disable, auto=enable.
# EXPERIMENTAL ** WARNING: auto may cause system lockups/data loss.
# Default: <none>

#AHCI_RUNTIME_PM_ON_AC=on
#AHCI_RUNTIME_PM_ON_BAT=on

# Seconds of inactivity before disk is suspended.
# Note: effective only when AHCI_RUNTIME_PM_ON_AC/BAT is activated.
# Default: 15

# AHCI_RUNTIME_PM_TIMEOUT=15

# PCI Express Active State Power Management (PCIe ASPM):
#   default(*), performance, powersave, powersupersave.
# (*) keeps BIOS ASPM defaults (recommended)
# Default: <none>

#PCIE_ASPM_ON_AC=default
#PCIE_ASPM_ON_BAT=default

# Set the min/max/turbo frequency for the Intel GPU.
# Possible values depend on your hardware. For available frequencies see
# the output of tlp-stat -g.
# Default: <none>
# Slimbook App Modos
INTEL_GPU_MIN_FREQ_ON_AC=300
INTEL_GPU_MIN_FREQ_ON_BAT=100
INTEL_GPU_MAX_FREQ_ON_AC=1150
INTEL_GPU_MAX_FREQ_ON_BAT=100
INTEL_GPU_BOOST_FREQ_ON_AC=1450
INTEL_GPU_BOOST_FREQ_ON_BAT=100

# Radeon graphics clock speed (profile method): low, mid, high, auto, default;
# auto = mid on BAT, high on AC.
# Default: default
# Defaults
RADEON_POWER_PROFILE_ON_AC=
RADEON_POWER_PROFILE_ON_BAT=


# Radeon dynamic power management method (DPM): battery, performance.
# Default: <none>
# Slimbook 
#RADEON_DPM_STATE_ON_AC=performance
#RADEON_DPM_STATE_ON_BAT=battery

# Radeon DPM performance level: auto, low, high; auto is recommended.
# Note: effective only when RADEON_DPM_STATE_ON_AC/BAT is activated.
# Default: auto
# Defaults
RADEON_DPM_PERF_LEVEL_ON_AC=
RADEON_DPM_PERF_LEVEL_ON_BAT=

# WiFi power saving mode: on=enable, off=disable; not supported by all adapters.
# Default: off (AC), on (BAT)
# Slimbook App
WIFI_PWR_ON_AC=off
WIFI_PWR_ON_BAT=on

# Disable wake on LAN: Y/N.
# Default: Y
# Defaults
WOL_DISABLE=Y

# Enable audio power saving for Intel HDA, AC97 devices (timeout in secs).
# A value of 0 disables, >=1 enables power saving (recommended: 1).
# Default: 0 (AC), 1 (BAT)
# Slimbook App
SOUND_POWER_SAVE_ON_AC=0
SOUND_POWER_SAVE_ON_BAT=1

# Disable controller too (HDA only): Y/N.
# Note: effective only when SOUND_POWER_SAVE_ON_AC/BAT is activated.
# Default: Y

SOUND_POWER_SAVE_CONTROLLER=N

# Power off optical drive in UltraBay/MediaBay: 0=disable, 1=enable.
# Drive can be powered on again by releasing (and reinserting) the eject lever
# or by pressing the disc eject button on newer models.
# Note: an UltraBay/MediaBay hard disk is never powered off.
# Default: 0

# Slimbook Unchanged 
# Defaults
BAY_POWEROFF_ON_AC=0
BAY_POWEROFF_ON_BAT=0

# Optical drive device to power off
# Default: sr0

BAY_DEVICE="sr0"

# Runtime Power Management for PCI(e) bus devices: on=disable, auto=enable.
# Default: on (AC), auto (BAT)
# Slimbook Unchanged
# Defaults
RUNTIME_PM_ON_AC=on
RUNTIME_PM_ON_BAT=auto

# Exclude PCI(e) device adresses the following list from Runtime PM
# (separate with spaces). Use lspci to get the adresses (1st column).
# Default: <none>
# Slimbook Unchanged
RUNTIME_PM_BLACKLIST="bb:dd.f 11:22.3 44:55.6 02:00.0"

# Exclude PCI(e) devices assigned to the listed drivers from Runtime PM.
# Default when unconfigured is "amdgpu nouveau nvidia radeon" which
# prevents accidential power-on of dGPU in hybrid graphics setups.
# Separate multiple drivers with spaces.
# Default: "amdgpu mei_me nouveau nvidia pcieport radeon", use "" to disable
# completely.
# Slimbook Unchanged
RUNTIME_PM_DRIVER_BLACKLIST="nouveau nvidia"

# Set to 0 to disable, 1 to enable USB autosuspend feature.
# Default: 1
# Slimbook App
USB_AUTOSUSPEND=1

# Exclude listed devices from USB autosuspend (separate with spaces).
# Use lsusb to get the ids.
# Note: input devices (usbhid) are excluded automatically
# Default: <none>
# Slimbook App
USB_BLACKLIST=0bda:0411 0bda:8153
USB_DENYLIST=""

# Bluetooth devices are excluded from USB autosuspend:
#   0=do not exclude, 1=exclude.
# Default: 0
# Slimbook App
USB_BLACKLIST_BTUSB=0
USB_DENYLIST_BTUSB=0

# Phone devices are excluded from USB autosuspend:
#   0=do not exclude, 1=exclude (enable charging).
# Default: 0
# Slimbook Unchanged
USB_BLACKLIST_PHONE=1
USB_DENYLIST_PHONE=1

# Printers are excluded from USB autosuspend:
#   0=do not exclude, 1=exclude.
# Default: 1
# Slimbook App
USB_BLACKLIST_PRINTER=0
USB_DENYLIST_PRINTER=0

# WWAN devices are excluded from USB autosuspend:
#   0=do not exclude, 1=exclude.
# Default: 0
# Slimbook App
USB_BLACKLIST_WWAN=0
USB_DENYLIST_WWAN=0

# Include listed devices into USB autosuspend even if already excluded
# by the blacklists above (separate with spaces). Use lsusb to get the ids.
# Default: <none>

#USB_WHITELIST="1111:2222 3333:4444"

# Set to 1 to disable autosuspend before shutdown, 0 to do nothing
# Note: use as a workaround for USB devices that cause shutdown problems.
# Default: 0
# Slimbook App
USB_AUTOSUSPEND_DISABLE_ON_SHUTDOWN=1

# Restore radio device state (Bluetooth, WiFi, WWAN) from previous shutdown
# on system startup: 0=disable, 1=enable.
# Note: the parameters DEVICES_TO_DISABLE/ENABLE_ON_STARTUP/SHUTDOWN below
#   are ignored when this is enabled.
# Default: 0
# Slimbook App?

RESTORE_DEVICE_STATE_ON_STARTUP=0

# Radio devices to disable on startup: bluetooth, wifi, wwan.
# Separate multiple devices with spaces.
# Default: <none>

# Slimbook App
DEVICES_TO_DISABLE_ON_STARTUP=bluetooth wifi

# Radio devices to enable on startup: bluetooth, wifi, wwan.
# Separate multiple devices with spaces.
# Default: <none>

DEVICES_TO_ENABLE_ON_STARTUP=""

# Radio devices to disable on shutdown: bluetooth, wifi, wwan.
# Note: use as a workaround for devices that are blocking shutdown.
# Default: <none>

#DEVICES_TO_DISABLE_ON_SHUTDOWN="bluetooth wifi wwan"

# Radio devices to enable on shutdown: bluetooth, wifi, wwan.
# (to prevent other operating systems from missing radios).
# Default: <none>

#DEVICES_TO_ENABLE_ON_SHUTDOWN="wwan"

# Radio devices to enable on AC: bluetooth, wifi, wwan.
# Default: <none>

#DEVICES_TO_ENABLE_ON_AC="bluetooth wifi wwan"

# Radio devices to disable on battery: bluetooth, wifi, wwan.
# Default: <none>

#DEVICES_TO_DISABLE_ON_BAT="bluetooth wifi wwan"

# Radio devices to disable on battery when not in use (not connected):
#   bluetooth, wifi, wwan.
# Default: <none>
# Slimbook App
DEVICES_TO_DISABLE_ON_BAT_NOT_IN_USE=bluetooth wifi

# Battery charge thresholds (ThinkPad only).
# May require external kernel module(s), refer to the output of tlp-stat -b.
# Charging starts when the remaining capacity falls below the
# START_CHARGE_THRESH value and stops when exceeding the STOP_CHARGE_THRESH
# value.

# Main / Internal battery (values in %)
# Default: <none>

#START_CHARGE_THRESH_BAT0=75
#STOP_CHARGE_THRESH_BAT0=80

# Ultrabay / Slice / Replaceable battery (values in %)
# Default: <none>

#START_CHARGE_THRESH_BAT1=75
#STOP_CHARGE_THRESH_BAT1=80

# Restore charge thresholds when AC is unplugged: 0=disable, 1=enable.
# Default: 0

#RESTORE_THRESHOLDS_ON_BAT=1

# Battery feature drivers: 0=disable, 1=enable
# Default: 1 (all)

#NATACPI_ENABLE=1
#TPACPI_ENABLE=1
#TPSMAPI_ENABLE=1

# ------------------------------------------------------------------------------
# tlp-rdw - Parameters for the radio device wizard

# Possible devices: bluetooth, wifi, wwan.
# Separate multiple radio devices with spaces.
# Default: <none> (for all parameters below)

# Radio devices to disable on connect.
# Slimbook App
DEVICES_TO_DISABLE_ON_LAN_CONNECT=wifi

#DEVICES_TO_DISABLE_ON_WIFI_CONNECT="wwan"
#DEVICES_TO_DISABLE_ON_WWAN_CONNECT="wifi"

# Radio devices to enable on disconnect.

DEVICES_TO_ENABLE_ON_LAN_DISCONNECT=wifi

#DEVICES_TO_ENABLE_ON_WIFI_DISCONNECT=""
#DEVICES_TO_ENABLE_ON_WWAN_DISCONNECT=""

# Radio devices to enable/disable when docked.

#DEVICES_TO_ENABLE_ON_DOCK=""
#DEVICES_TO_DISABLE_ON_DOCK=""

# Radio devices to enable/disable when undocked.

#DEVICES_TO_ENABLE_ON_UNDOCK="wifi"
#DEVICES_TO_DISABLE_ON_UNDOCK=""

Offline

#2 2023-09-21 08:17:25

Sarcasm
Member
Registered: 2023-09-21
Posts: 5

Re: Insane use of battery from kernel tick_sched_timer and wifi

Additional info:
I added these lines to /etc/modprobe.d/iwlwifi.conf  and rebooted (as suggested by the wiki:

options iwlwifi power_save=1
options iwlwifi uapsd_disable=0
options iwlmvm power_scheme=3

I've recalibrated powertop.
Now, the wifi is taking 6W but the tick_sched_timer is taking less than 2W, usually < 1W.... until I open a browser (but I guess this is Ok).

The issue is still the wifi, which takes up to 6W. Moreover, for some reason, the battery reports a discharge rate of ~15W,, even with wifi turned off, but the estimation made by powertop sums up to no more  than 2-3W without wifi. Any ideas why this happens?

Offline

Board footer

Powered by FluxBB