Skip to content

Setting EPB manually still yields measurable idle power reduction for new intel cpu like lunar lake #847

@HenryJk

Description

@HenryJk

[x] I've read and accepted the Bug Reporting Howto
[x] I've provided all required tlp-stat outputs via Gist (see below)

Describe the bug

On my Intel Lunar Lake laptop, setting EPB manually yields measurable reduction in PkgWatt. If this is reproducible, then it's a missing optimization for tlp.

Expected behavior

I'm not an expert in intel CPU, but tlp skips writing echo $epb | tee /sys/devices/system/cpu/cpu*/power/energy_perf_bias on newer intel CPU due to existence of EPP. If writing on EPB actually also yield improvement, I don't think it's too hard to include echo-ing into the EPB as well.

To Reproduce

Steps to reproduce the unexpected behavior:

  1. Does the problem occur on battery or AC or both?
    tested on battery, but possibly both
  2. Actions to reproduce the behaviour
    tlp power-saver
    Open btop or any tools that can show pkgwatt
    Let the laptop go idle for sometime and take note of where the wattage is roughly hovering
    Then do # echo 15 | tee /sys/devices/system/cpu/cpu*/power/energy_perf_bias and watch the wattage again
  3. Shell commands entered and their output including error message(s)
    N/A
  4. Full output of tlp-stat via https://gist.github.com/ for all matching cases of 1 (not as file attachment, no screenshots)
--- TLP 1.9.0 --------------------------------------------

+++ Configured Settings:
defaults.conf L0006: TLP_ENABLE="1"
defaults.conf L0007: TLP_WARN_LEVEL="3"
defaults.conf L0008: TLP_MSG_COLORS="91 93 1 92"
defaults.conf L0009: TLP_AUTO_SWITCH="2"
defaults.conf L0010: TLP_PERSISTENT_DEFAULT="0"
defaults.conf L0011: DISK_IDLE_SECS_ON_AC="0"
defaults.conf L0012: DISK_IDLE_SECS_ON_BAT="2"
defaults.conf L0013: MAX_LOST_WORK_SECS_ON_AC="15"
defaults.conf L0014: MAX_LOST_WORK_SECS_ON_BAT="60"
defaults.conf L0015: CPU_ENERGY_PERF_POLICY_ON_AC="balance_performance"
defaults.conf L0016: CPU_ENERGY_PERF_POLICY_ON_BAT="balance_power"
defaults.conf L0017: CPU_ENERGY_PERF_POLICY_ON_SAV="power"
defaults.conf L0018: PLATFORM_PROFILE_ON_AC="performance"
defaults.conf L0019: PLATFORM_PROFILE_ON_BAT="balanced"
defaults.conf L0020: PLATFORM_PROFILE_ON_SAV="low-power"
defaults.conf L0021: NMI_WATCHDOG="0"
defaults.conf L0022: DISK_DEVICES="nvme0n1 sda"
defaults.conf L0023: DISK_APM_LEVEL_ON_AC="254 254"
defaults.conf L0024: DISK_APM_LEVEL_ON_BAT="128 128"
defaults.conf L0025: DISK_APM_CLASS_DENYLIST="usb ieee1394"
defaults.conf L0026: DISK_IOSCHED="keep keep"
defaults.conf L0027: SATA_LINKPWR_ON_AC="med_power_with_dipm"
defaults.conf L0028: SATA_LINKPWR_ON_BAT="med_power_with_dipm"
defaults.conf L0029: AHCI_RUNTIME_PM_ON_AC="on"
defaults.conf L0030: AHCI_RUNTIME_PM_ON_BAT="auto"
defaults.conf L0031: AHCI_RUNTIME_PM_TIMEOUT="15"
defaults.conf L0032: PCIE_ASPM_ON_AC="default"
defaults.conf L0033: PCIE_ASPM_ON_BAT="default"
defaults.conf L0034: RADEON_DPM_PERF_LEVEL_ON_AC="auto"
defaults.conf L0035: RADEON_DPM_PERF_LEVEL_ON_BAT="auto"
defaults.conf L0036: AMDGPU_ABM_LEVEL_ON_AC="0"
defaults.conf L0037: AMDGPU_ABM_LEVEL_ON_BAT="1"
defaults.conf L0038: AMDGPU_ABM_LEVEL_ON_SAV="3"
defaults.conf L0039: WIFI_PWR_ON_AC="off"
defaults.conf L0040: WIFI_PWR_ON_BAT="on"
defaults.conf L0041: WOL_DISABLE="Y"
defaults.conf L0042: SOUND_POWER_SAVE_ON_AC="1"
defaults.conf L0043: SOUND_POWER_SAVE_ON_BAT="1"
defaults.conf L0044: SOUND_POWER_SAVE_CONTROLLER="Y"
defaults.conf L0045: BAY_POWEROFF_ON_AC="0"
defaults.conf L0046: BAY_POWEROFF_ON_BAT="0"
defaults.conf L0047: BAY_DEVICE="sr0"
defaults.conf L0048: RUNTIME_PM_ON_AC="on"
defaults.conf L0049: RUNTIME_PM_ON_BAT="auto"
defaults.conf L0050: RUNTIME_PM_DRIVER_DENYLIST="mei_me nouveau radeon xhci_hcd"
defaults.conf L0051: USB_AUTOSUSPEND="1"
defaults.conf L0052: USB_EXCLUDE_AUDIO="1"
defaults.conf L0053: USB_EXCLUDE_BTUSB="0"
defaults.conf L0054: USB_EXCLUDE_PHONE="0"
defaults.conf L0055: USB_EXCLUDE_PRINTER="1"
defaults.conf L0056: USB_EXCLUDE_WWAN="0"
defaults.conf L0057: RESTORE_DEVICE_STATE_ON_STARTUP="0"
defaults.conf L0058: RESTORE_THRESHOLDS_ON_BAT="0"
defaults.conf L0059: NATACPI_ENABLE="1"
defaults.conf L0060: TPSMAPI_ENABLE="1"

+++ System Info
System         = LENOVO ThinkPad T14s Gen 6 21QXS06F00
BIOS           = N4IET20W (1.06 ) LENOVO
EC Firmware    = 1.6
OS Release     = Arch Linux
Kernel         = 6.18.1-zen1-2-zen #1 ZEN SMP PREEMPT_DYNAMIC Sat, 13 Dec 2025 18:23:05 +0000 x86_64
/proc/cmdline  = <censored>
Init system    = systemd 258
Boot mode      = UEFI
Suspend mode   = [s2idle]

+++ TLP Status
tlp            = enabled, last run: 02:28:02, 1392 sec(s) ago
tlp-rdw            = not installed
tlp-pd         = enabled, running
Power profile  = power-saver/SAV
Power source   = battery

+++ Processor
CPU model = Intel(R) Core(TM) Ultra 7 268V

/sys/devices/system/cpu/cpu0/cpufreq/scaling_driver    = intel_pstate
/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor  = powersave
/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors = performance powersave
/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq  =   400000 [kHz]
/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq  =  5000000 [kHz]
/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq  =   400000 [kHz]
/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq  =  5000000 [kHz]
/sys/devices/system/cpu/cpu0/cpufreq/energy_performance_preference = power [EPP]
/sys/devices/system/cpu/cpu0/cpufreq/energy_performance_available_preferences = default performance balance_performance balance_power power 

/sys/devices/system/cpu/cpu1..cpu7: omitted for clarity, use -v to show all

/sys/devices/system/cpu/intel_pstate/status            = active
/sys/devices/system/cpu/intel_pstate/min_perf_pct      =   8 [%]
/sys/devices/system/cpu/intel_pstate/max_perf_pct      = 100 [%]
/sys/devices/system/cpu/intel_pstate/no_turbo          =   0
/sys/devices/system/cpu/intel_pstate/hwp_dynamic_boost =   0
/sys/devices/system/cpu/intel_pstate/turbo_pct         = (not available) 
/sys/devices/system/cpu/intel_pstate/num_pstates       = (not available)
/sys/module/workqueue/parameters/power_efficient       = Y
/proc/sys/kernel/nmi_watchdog                          = 0

+++ Platform Profile
/sys/firmware/acpi/platform_profile                    = low-power
/sys/firmware/acpi/platform_profile_choices            = low-power balanced performance
/sys/devices/platform/thinkpad_acpi/dytc_lapmode       = 0

+++ Temperatures
/proc/acpi/ibm/thermal = 30 -128 24 0 27 27 26 -128 [°C]
/proc/acpi/ibm/fan     =    0 [/min]

+++ File System
/proc/sys/vm/laptop_mode               =     2
/proc/sys/vm/dirty_writeback_centisecs =  6000
/proc/sys/vm/dirty_expire_centisecs    =  6000
/proc/sys/vm/dirty_ratio               =    20
/proc/sys/vm/dirty_background_ratio    =    10

+++ Disks
Devices = nvme0n1

/dev/nvme0n1:
  Type       = NVMe
  Disk ID    = nvme-SAMSUNG_MZVLC1T0HFLU-00BLL_**************
  Model      = SAMSUNG MZVLC1T0HFLU-00BLL              
  Firmware   = 3L2QNXH7
  Temp       = 25 °C
  Scheduler  = none mq-deadline [kyber] bfq (multi queue)

  Runtime PM:
    /sys/block/nvme0n1/device/power/control = auto, autosuspend_delay_ms = (not available)

/dev/sda: not present.

+++ Other Graphics
/sys/class/drm/card0/device/driver           = xe

+++ Wireless
bluetooth = on
nfc       = none (no device)
wifi      = on
wwan      = none (no device)

hci0(btintel_pcie)            : bluetooth, not connected
wlp0s20f3(iwlwifi)            : wifi, connected, power management = on

+++ Audio
/sys/module/snd_hda_intel/parameters/power_save            = 1
/sys/module/snd_hda_intel/parameters/power_save_controller = Y

+++ PCIe Active State Power Management
/sys/module/pcie_aspm/parameters/policy = [default] performance powersave powersupersave

+++ PCIe Runtime Power Management
Enable devices    = (disabled)
Disable devices   = (disabled)
Device denylist   = (disabled)
Driver denylist   = mei_me nouveau radeon xhci_hcd

/sys/bus/pci/devices/0000:00:00.0/power/control = auto (0x060000, Host bridge, no driver)
/sys/bus/pci/devices/0000:00:02.0/power/control = auto (0x030000, VGA compatible controller, xe)
/sys/bus/pci/devices/0000:00:04.0/power/control = auto (0x118000, Signal processing controller, proc_thermal_pci)
/sys/bus/pci/devices/0000:00:07.0/power/control = auto (0x060400, PCI bridge, pcieport)
/sys/bus/pci/devices/0000:00:07.2/power/control = auto (0x060400, PCI bridge, pcieport)
/sys/bus/pci/devices/0000:00:0a.0/power/control = auto (0x118000, Signal processing controller, intel_vsec)
/sys/bus/pci/devices/0000:00:0b.0/power/control = auto (0x120000, Processing accelerators, intel_vpu)
/sys/bus/pci/devices/0000:00:0d.0/power/control = auto (0x0c0330, USB controller, xhci_hcd)
/sys/bus/pci/devices/0000:00:0d.2/power/control = auto (0x0c0340, USB controller, thunderbolt)
/sys/bus/pci/devices/0000:00:0d.3/power/control = auto (0x0c0340, USB controller, thunderbolt)
/sys/bus/pci/devices/0000:00:14.0/power/control = auto (0x0c0330, USB controller, xhci_hcd)
/sys/bus/pci/devices/0000:00:14.2/power/control = auto (0x050000, RAM memory, intel_pmc_ssram_telemetry)
/sys/bus/pci/devices/0000:00:14.3/power/control = auto (0x028000, Network controller, iwlwifi)
/sys/bus/pci/devices/0000:00:14.7/power/control = auto (0x0d1100, Bluetooth, btintel_pcie)
/sys/bus/pci/devices/0000:00:15.0/power/control = auto (0x0c8000, Serial bus controller, intel-lpss)
/sys/bus/pci/devices/0000:00:15.3/power/control = auto (0x0c8000, Serial bus controller, intel-lpss)
/sys/bus/pci/devices/0000:00:16.0/power/control = auto (0x078000, Communication controller, mei_me)
/sys/bus/pci/devices/0000:00:1c.0/power/control = auto (0x060400, PCI bridge, pcieport)
/sys/bus/pci/devices/0000:00:1c.4/power/control = auto (0x060400, PCI bridge, pcieport)
/sys/bus/pci/devices/0000:00:1f.0/power/control = auto (0x060100, ISA bridge, no driver)
/sys/bus/pci/devices/0000:00:1f.3/power/control = auto (0x040380, Audio device, sof-audio-pci-intel-lnl)
/sys/bus/pci/devices/0000:00:1f.4/power/control = auto (0x0c0500, SMBus, no driver)
/sys/bus/pci/devices/0000:00:1f.5/power/control = auto (0x0c8000, Serial bus controller, intel-spi)
/sys/bus/pci/devices/0000:04:00.0/power/control = auto (0x010802, Non-Volatile memory controller, nvme)

+++ USB
Autosuspend       = enabled
Device allowlist  = (not configured)
Device denylist   = (not configured)
Exclude audio     = enabled
Exclude bluetooth = disabled
Exclude phones    = disabled
Exclude printers  = enabled
Exclude WWAN      = disabled

Bus 001 Device 001 ID 1d6b:0002 control = auto, autosuspend_delay_ms =    0 -- Linux Foundation 2.0 root hub (hub)
Bus 002 Device 001 ID 1d6b:0003 control = auto, autosuspend_delay_ms =    0 -- Linux Foundation 3.0 root hub (hub)
Bus 003 Device 001 ID 1d6b:0002 control = auto, autosuspend_delay_ms =    0 -- Linux Foundation 2.0 root hub (hub)
Bus 003 Device 003 ID 5986:2178 control = auto, autosuspend_delay_ms = 2000 -- Bison Electronics Inc. Integrated RGB Camera (uvcvideo, usbhid)
Bus 003 Device 004 ID 05e3:0610 control = auto, autosuspend_delay_ms =    0 -- Genesys Logic, Inc. Hub (hub)
Bus 003 Device 006 ID 27c6:6594 control = auto, autosuspend_delay_ms = 2000 -- Shenzhen Goodix Technology Co.,Ltd. Goodix USB2.0 MISC (no driver)
Bus 003 Device 007 ID 17ef:60ee control = on,   autosuspend_delay_ms = 2000 -- Lenovo TrackPoint Keyboard II (usbhid)
Bus 003 Device 008 ID 046d:c52b control = on,   autosuspend_delay_ms = 2000 -- Logitech, Inc. Unifying Receiver (usbhid)
Bus 004 Device 001 ID 1d6b:0003 control = auto, autosuspend_delay_ms =    0 -- Linux Foundation 3.0 root hub (hub)

+++ Battery Care
Plugin: thinkpad
Supported features: charge thresholds, chargeonce, discharge, recalibrate
Driver usage:
* natacpi (thinkpad_acpi) = active (charge thresholds, force-discharge)
Parameter value ranges:
* START_CHARGE_THRESH_BAT0/1:  0(off)..96(default)..99
* STOP_CHARGE_THRESH_BAT0/1:   1..100(default)

+++ ThinkPad Battery Status: BAT0 (Main / Internal)
/sys/class/power_supply/BAT0/manufacturer                   = Sunwoda
/sys/class/power_supply/BAT0/model_name                     = 5B11M90105
/sys/class/power_supply/BAT0/cycle_count                    =      9
/sys/class/power_supply/BAT0/energy_full_design             =  58000 [mWh]
/sys/class/power_supply/BAT0/energy_full                    =  58430 [mWh]
/sys/class/power_supply/BAT0/energy_now                     =  41670 [mWh]
/sys/class/power_supply/BAT0/power_now                      =   2898 [mW]
/sys/class/power_supply/BAT0/status                         = Discharging

/sys/class/power_supply/BAT0/charge_control_start_threshold =     75 [%]
/sys/class/power_supply/BAT0/charge_control_end_threshold   =     80 [%]
/sys/class/power_supply/BAT0/charge_behaviour               = [auto] inhibit-charge force-discharge

Charge                                                      =   71.3 [%]
Capacity                                                    =  100.7 [%]

Additional context

Add any other context about the problem here.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions