CPU slows down as soon laptop unplugged, stays slow even if plugged back in

Hi there.

I have recently noticed that my laptop slows down after it is unplugged, even if it’s plugged back in. For example, if I run a portion of an R script on AC, it finishes in ~25 seconds (I’ve tried running in multiple times consecutively to be more certain that it’s not an R thing). After unplugging the laptop, while running on battery, the same code takes ~75 seconds to run. However, after plugging back in, the code still runs for ~75 seconds.

I’ve tried disabling tlp but the problem persists. While tlp was running, I’ve also tried tlp ac to manually switch to AC mode, and I’ve tried systemctl restart tlp.service but nothing changed. So I guess it’s not a tlp issue.

I’m on 5.7.14-1-MANJARO (i3), on an Asus VivoBook Pro, with an Intel i7-8750H processor.

I’ve exactly the same problem since recent stable update. Linux kernel 5.8. Did you find a solution ?

Sounds like you can use tlpui. Mess with it i think you’ll sort it out.

Well, I’ve tried fiddling with it, but no luck. E.g., I’ve put CPU_MING_PERF_ON_AC to 100%, but nothing. And, again, completely disabling tlp.service made no difference. I can post the tlp.config if you’d be willing to take a look.

EDIT:

@fabs haven’t found a solution, unfortunately :confused:

I don’t think i can do anything but please do post, i want to take a look.

Did you try changing governor though? Set the same for both AC and Battery.

As he used the tlp ac command and forced the usage of AC setting with it, i think we can rule out tlp as the cause atleast somewhat.

@potat
Have you taken a look in the machines Bios/UEFI settings? Maybe there is an option there that might be causing that behaviour. Sadly the manual provided by ASUS leaves many things to be desired in terms of completeness on the topic of of the options there.

Any chance you can try another adapter? This really sounds like a low current issue.

@woistmeinauto

Here’s the tlp.conf

# ------------------------------------------------------------------------------
# /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
# - 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

TLP_ENABLE="1"

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

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="* empty"
#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>

CPU_SCALING_GOVERNOR_ON_AC="performance"
CPU_SCALING_GOVERNOR_ON_BAT="powersave"

# Set the min/max frequency available for the scaling governor.
# Possible values depend on your CPU. For available frequencies see
# the output of tlp-stat -p.
# Default: <none>

CPU_SCALING_MIN_FREQ_ON_AC="2200000"
#CPU_SCALING_MAX_FREQ_ON_AC=0
#CPU_SCALING_MIN_FREQ_ON_BAT=0
CPU_SCALING_MAX_FREQ_ON_BAT="1500000"

# 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:
# - Requires an Intel Core i processor
# - HWP.EPP requires kernel 4.10 and intel_pstate driver
# - EPB requires kernel 5.2 or module msr and x86_energy_perf_policy
#   from linux-tools
# - When HWP.EPP is available, EPB is not set
# Default: balance_performance (AC), balance_power (BAT)

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>

CPU_MIN_PERF_ON_AC="100"
#CPU_MAX_PERF_ON_AC=100
#CPU_MIN_PERF_ON_BAT=0
CPU_MAX_PERF_ON_BAT="30"

# 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>

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)

SCHED_POWERSAVE_ON_AC="* empty"
#SCHED_POWERSAVE_ON_BAT=1

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

#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="* empty"
#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="powersave"

# 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>

#INTEL_GPU_MIN_FREQ_ON_AC=0
#INTEL_GPU_MIN_FREQ_ON_BAT=0
#INTEL_GPU_MAX_FREQ_ON_AC=0
INTEL_GPU_MAX_FREQ_ON_BAT="500"
#INTEL_GPU_BOOST_FREQ_ON_AC=0
INTEL_GPU_BOOST_FREQ_ON_BAT="500"

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

#RADEON_POWER_PROFILE_ON_AC=default
#RADEON_POWER_PROFILE_ON_BAT=default

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

#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

#RADEON_DPM_PERF_LEVEL_ON_AC=auto
#RADEON_DPM_PERF_LEVEL_ON_BAT=auto

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

#WIFI_PWR_ON_AC=off
#WIFI_PWR_ON_BAT=on

# Disable wake on LAN: Y/N.
# Default: Y

#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)

SOUND_POWER_SAVE_ON_AC="* empty"
#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=Y

# 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

#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)

#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>

#RUNTIME_PM_BLACKLIST="bb:dd.f 11:22.3 44:55.6"

# 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.

#RUNTIME_PM_DRIVER_BLACKLIST="amdgpu mei_me nouveau nvidia pcieport radeon"

# Set to 0 to disable, 1 to enable USB autosuspend feature.
# Default: 1

USB_AUTOSUSPEND="* empty"

# Exclude listed devices from USB autosuspend (separate with spaces).
# Use lsusb to get the ids.
# Note: input devices (usbhid) are excluded automatically
# Default: <none>

#USB_BLACKLIST="1111:2222 3333:4444"

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

#USB_BLACKLIST_BTUSB=0

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

#USB_BLACKLIST_PHONE=0

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

#USB_BLACKLIST_PRINTER=1

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

#USB_BLACKLIST_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

#USB_AUTOSUSPEND_DISABLE_ON_SHUTDOWN=0

# 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

#RESTORE_DEVICE_STATE_ON_STARTUP=0

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

#DEVICES_TO_DISABLE_ON_STARTUP="bluetooth wifi wwan"

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

#DEVICES_TO_ENABLE_ON_STARTUP="wifi"

# 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>

#DEVICES_TO_DISABLE_ON_BAT_NOT_IN_USE="bluetooth wifi wwan"

# 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.

#DEVICES_TO_DISABLE_ON_LAN_CONNECT="wifi wwan"
#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 wwan"
#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=""

Don’t think it’d be the adapters fault, since the speed kinda resets after restarting. And, after all, there’s a slowdown after unplugging. Guess there should be no speed difference if the adapter were giving consistently low power.

@Takei

I’ve tried looking at the UEFI settings, but couldn’t find any way of changing anything related to the CPU.

CPU_SCALING_GOVERNOR_ON_BAT=“powersave”

Change this please.
Btw If it’s not the adapter it’s the MOBO that’s not pulling the charge in.

Edit: If changing this does not fix it, your MOBO or Adapter is acting up and Manjaro does not have much to do with that.

You can also try different distros live USB.

Change as in comment out (uncheck in tlpui) or change to some other value? If the latter, which? And why? Isn’t that supposed to save power when on battery?

To check if it’s still slow, change it to performance so that we can have more information about the issue. Not that it’s going to give us something immediately but it’s something to factor.

Another thing to do, you say restarting fixes it. So restart but this open boot menu which is before the OS load. So remove charger and plug back in and see how it acts.

Edit: Not Grub boot menu the bios boot menu.

Ok. So, I’ve tried:

  1. switch CPU_SCALING_GOVERNOR_ON_BAT to performance. Shut down, boot up. i) Tested a script on AC, (ii) then on battery, (iii) then AC again. Same drop pattern.

  2. Booted to Bios/UEFI, unplugged, booted. Same script run, same pattern observed.

  3. Tried unplugging when laptop was completely turned off. Repeated test, same pattern.

I did the test with an R script:

.s <- Sys.time()
tmp <- rnorm(5e8)
.e <- Sys.time()

And a Python script

from time import time
s = time()
tmp = list(range(0, 90000000))
e = time()

EDIT:

Unplugging and plugging back in while in Bios/UEFI lead to no performance drop on first AC run of the script. After unplugging and plugging back in, drop pattern observed.

could you comment out those 2 lines in the tlp.conf please? Also please enable

If it does not work after this, I’m sadly out of ideas right now where the problem could be.

It would more likely be related to battery management or power management. This ought not to be a CPU issue.

Edit:
Had one last idea. You could try setting both TLP_PS_IGNORE and TLP_DEFAULT_MODE to AC, so if there is a problem detecting the power supply state regarding only the AC, it would default to AC. Keep in mind though you would have to test this against being able to detect being on battery power.

I’ve done some tries on my system

  • The problem also occur with linux 5.7.15.
  • The problem occur only at boot time. Plug/Unplug AC doesn’t change CPU speed
  • cpupower frequency-info indicate me that the frequency is capped to 800Mhz. (whereas it’s a lot greater when laptop is booted plugged)
  • tlp is also running on my system. It seems to doesn’t detect plug/unplug state change.

I’ve tried to search for informations in logs but didn’t found interesting things, maybe I didn’t search well. (any idea for somethings to seek in logs ?)

@potat when you do it on BIOS/UEFI it doesn’t mean much because when you quit BIOS/UEFI it restarts computer, if you did boot menu that would give a better info because you don’t restart, you just boot afterwards, which means it eliminates the BIOS/UEFI from our list. But it’s ok i guess because there are 2 of you and I think it’s unlikely to be your PCs’ fault.

Please report all 3 cases
First boot => When it’s running full power
Unplug
Replug
With the command you just posted:

cpupower frequency-info

And keep this command running while you’re doing it:

journalctl -f

See if it reports plug/unplug actions on the go.

@Takei, I’ve tried the suggested changes to tlp.conf, but to no avail.

@woistmeinauto, sorry for misunderstanding. In the meanwhile. I’ve tried (1) unplugging and plugging back in during boot menu (speed is fine in the beginning), and (2) unplugging during boot menu and booting on battery (speed is lower).

I’ve also tried the 5.4.57-1 kernel, but the issue remains.

Here’s the output of cpupower frequency-info:

AC:

analyzing CPU 0:
  driver: intel_pstate
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency:  Cannot determine or is not supported.
  hardware limits: 800 MHz - 4.10 GHz
  available cpufreq governors: performance powersave
  current policy: frequency should be within 2.20 GHz and 4.10 GHz.
                  The governor "performance" may decide which speed to use
                  within this range.
  current CPU frequency: Unable to call hardware
  current CPU frequency: 4.10 GHz (asserted by call to kernel)
  boost state support:
    Supported: yes
    Active: yes

Battery:

analyzing CPU 0:
  driver: intel_pstate
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency:  Cannot determine or is not supported.
  hardware limits: 800 MHz - 4.10 GHz
  available cpufreq governors: performance powersave
  current policy: frequency should be within 1.50 GHz and 1.50 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.
  current CPU frequency: Unable to call hardware
  current CPU frequency: 1.50 GHz (asserted by call to kernel)
  boost state support:
    Supported: yes
    Active: yes

AC again, after battery:

analyzing CPU 0:
  driver: intel_pstate
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency:  Cannot determine or is not supported.
  hardware limits: 800 MHz - 4.10 GHz
  available cpufreq governors: performance powersave
  current policy: frequency should be within 1.50 GHz and 1.50 GHz.
                  The governor "performance" may decide which speed to use
                  within this range.
  current CPU frequency: Unable to call hardware
  current CPU frequency: 1.50 GHz (asserted by call to kernel)
  boost state support:
    Supported: yes
    Active: yes

Also, here’s the journalctl -f during AC -> batter -> AC:

kol 23 11:06:35 machinename dbus-daemon[1345]: [session uid=1000 pid=1345] Successfully activated service 'org.gnome.Terminal'
kol 23 11:06:35 machinename systemd[1323]: Started GNOME Terminal Server.
kol 23 11:06:35 machinename systemd[1323]: Started VTE child process 2630 launched by gnome-terminal-server process 2623.
kol 23 11:06:39 machinename systemd[1323]: Started VTE child process 2644 launched by gnome-terminal-server process 2623.
kol 23 11:07:11 machinename systemd[1323]: Started VTE child process 2669 launched by gnome-terminal-server process 2623.
kol 23 11:07:57 machinename kernel: asus_wmi: Unknown key cf pressed
kol 23 11:07:58 machinename kernel: r8169 0000:03:00.0 eno2: Link is Down

The asus_wmi line appeared after plugging back in. No entry was made on initial unplug.

EDIT:

acpi --ac-adapter detects changes in AC state: Adapter 0: on-line when plugged in, and Adapter 0: off-line when on battery. Don’t know if this helps in any way.

EDIT 2:

So, I’ve noticed that cpupower has a frequency-set command. So, I tried doing sudo cpupower frequency-set -f 4.0GHz, and got the following error:

Setting cpu: 0
Error setting new values. Common errors:
- Do you have proper administration rights? (super-user?)
- Is the governor you requested available and modprobed?
- Trying to set an invalid policy?
- Trying to set a specific frequency, but userspace governor is not available,
   for example because of hardware which cannot be set to a specific frequency
   or because the userspace governor isn't loaded?

I should have the proper admin rights, so the first bullet shouldn’t be an issue. I’m not sure how to go about addressing the other ones.

EDIT 3:

Doing a bit of additional digging, trying to wrap my head around all these things.

So, I’ve noticed that I don’t have thermald installed. I’m leaving it that way for now, but will install later, since the Arch Wiki is making it sound useful.

That being said, systemctl status cpupower.service reports that the service is not running:

● cpupower.service - Apply cpupower configuration
     Loaded: loaded (/usr/lib/systemd/system/cpupower.service; disabled; vendor preset: disabled)
     Active: inactive (dead)

Running sudo cpupower frequency-set -g performance succeeds, but cpupower frequency-info reports same low current CPU frequency (1.5GHz).

As per the Arch Wiki, the available CPU frequency drivers are obtained by ls /usr/lib/modules/$(uname -r)/kernel/drivers/cpufreq, which in my case gives:

acpi-cpufreq.ko.xz
amd_freq_sensitivity.ko.xz
cpufreq_conservative.ko.xz
cpufreq-dt.ko.xz
cpufreq_ondemand.ko.xz
cpufreq_powersave.ko.xz
cpufreq_userspace.ko.xz
p4-clockmod.ko.xz
pcc-cpufreq.ko.xz
powernow-k8.ko.xz
speedstep-lib.ko.xz

I’m noticing that there’s a powersave module, but no performance module, just judging by the names. Don’t know if that’s important.

Not sure what to look for in lsmod.

Maybe the issue lies somewhere with cpupower? Will try activating cpupower.service.

EDIT 4:

Also, what’s up with cpupower frequency-info stating current CPU frequency: Unable to call hardware?

Maybe you should switch the intel_pstate driver to acpi-cpufreq.

I did play with governors in the past using cpufrequtils if I’m not mistaken intel pstate drivers would not allow you to have userspace governor.

I’m looking for my commands if i find them I’ll check what i did.

So, I’ve been playing around with cpupower frequency-set.

Here’s the thing:

  1. When booted on AC, the governor is set to performance, the frequency is at max, and the stated range in the current policy is 2.20 GHz to 4.10 GHz.
  2. When I switch to battery, the governor switches to powersave, and the frequency is bounded between 1.50 GHz and 1.50 GHz.
  3. When I plug in again, the governor correctly switches to performance, but the frequency remains bound between 1.50 GHz and 1.50 GHz, instead of 2.20 GHz and 4.10 GHz.

Now, I cannot use cpupower frequency-set to set the frequency to a certain value (since, I guess, the intel_pstate driver only has two aforementioned governors, and no userspace governor). I can, however, set the maximum frequency to a desired value.

Therefore, after plugging back in, I can circumvent the issue by running sudo cpupower frequency-set --max 4.10GHz. After that, the current policy once again states that the frequency should be between 2.20 GHz and 4.10 GHz, and the processor speeds up. Notice that the lower bound also changes to the original performance value, even though no command was issued that would change it.

Another interesting thing that I’ve noticed is that changing the governor either on battery or on AC does not change the frequency bounds. For example, if I change to powersave while on AC, the governor changes, but the bounds remain 2.20 and 4.10, as was previously manually set.

All of this leads me to believe that it’s a intel_pstate issue.

2 Likes

Good job. Until it’s fixed you will have to run the command i guess.