Aggressive powersaving?

Original post

I have reason to drive my laptops power use as far down as I possibly can in an ‘every watt matters’ kind of way, and I’ve spent a couple hours with a wattmeter doing what I can. As a baseline my laptop used about 60w give or take when just browsing or idling.

First thing i did was to boot into windows, which had about the same kind of power draw at a glance, i went to the power management settings and turned everything there to the maximum powersaving option, my powerdraw went real low in the same kind of testing scenario, it averaged about 25w, with spikes as low as 17w, but occasionally jumping to around 40w seemingly at random (just windows things I suppose)

This gave me an idea of how much powersaving there is to be had on my laptop.

First off I installed TLP

Just this halved my power consumption, when browsing or idling from ~60 to ~30. (Why isn’t this installed by default again? I remember it used to be)

I switched it to battery mode, it went to ~60 again, which is weird, after trying settings one by one this was the culprit:

RUNTIME_PM_ON_BAT=auto

setting it to on like it was on AC by default solved the issue and now on battery mode the consumption is about the same. as on AC, which is actually a bit disappointing, shouldn’t it be less?

Well as it turns out, TLP’s setting to disable turbo boost when on battery is not working, so I ran
echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo

and that dropped me by about 3-4 watts.

I then went to the frequency settings for the igpu in TLP and set it to the lowest I could, this netted me another 3-4 watts of savings, so when idling now on linux I’m using about 22w give or take. but it’s fairly stable unlike windows which was jumping around a bit. As far as idle powersavings are concerned this leaves me satisfied.

I also tried to power off the nvidia dgpu (major hassle) and that only netted me around 3w powersavings, a pittance for how much trouble it is ( I would still take it but when I do it my PC will become kinda crash happy, the kind of crashing where even sysrq doesn’t work)

So the next thing to try was how it fares under light loads.

I loaded up some youtube vid on windows, and it ran 22-24w

I loaded a vid up on linux, it ran ~28w

Which is pretty good to be entirely honest… Yes it’s very impressive, but windows showed me it can go lower, so I want to see if I can’t get it lower however I am out of ideas for how to squeeze the power usage further down than this.

So I was wondering if anyone has any ideas about what I could do?

Note: One other thing I have tried was forcing down the maximum CPU frequency as low as I could make it go but it gave diminishing returns pretty fast (going down from 2.2ghz to 1.5ghz is about 1w, going donw to 800mhz gives about 2w; it doesn’t really seem worth it)

Note2: Using kernel 5.18 negated all my power savings from TLP for some reason; 5.15 and 5.17 work great though.

Update: New test case, I played Kotor on Windows and Linux, on windows it was fairly stable around 28w, on linux it was 32w, a 4w difference again, similar to the one between playing youtube vids.

Start here (updated post): Aggressive powersaving? - #37 by rabcor

The short of it is that I’m mostly satisfied with my results, after wrestling withlinux through various software and system calls I’ve found a way to reduce my power draw from 50-160w to 18-32w if I go as extreme as i can on the powersaving, windows at best can go down to 16w but would generally hover around 25w with regular unexplained spikes into the 40s.

I’m still very much open to suggestions how I could improve this any further, but I feel a point has been reached where lowering power draw further would be very difficult.

I just really wish this stuff was easier, my eyes have been opened to the fact that linux has a pretty big problem with user friendliness when it comes to powersaving/battery life optimization.

well you could try to power down wifi, if not needed. wifi is one of the peripherals that needs a lot of power.
not sure what kind of drives you’re running. using nvme’s is the best way to save power in that case.
you can use a script and power down cores. for example if you’re running a 8-core you could power down for example 5 cores to power-saving and use 3 cores on power-on-demand mode. in this case you could eventually drop the wattage of the cpu explicit and control them with individual settings in different situations. all other peripherals will not give any significant power drop.
edit: the graphics-adapter. may you give us an impression of your system by posting the output of the inxi described below
:+1: Welcome to Manjaro! :+1:

  1. Please read this:
    [HowTo] Provide System Information
    and press the three dots below your post and press the :pencil2: to give us more information so we can see what’s really going on.
    Now we know the symptom of the disease, but we need some more probing to know where the origin lies… :grin:
  2. An inxi --admin --verbosity=7 --filter --no-host --width would be the minimum required information for us to be able to help you. (Personally Identifiable Information like serial numbers and MAC addresses will be filtered out by the above command)
    Also, please copy-paste that output in-between 3 backticks ``` at the beginning and end of the code/text.

:+1:

System:
  Kernel: 5.17.15-1-MANJARO arch: x86_64 bits: 64 compiler: gcc v: 12.1.0
    parameters: BOOT_IMAGE=/boot/vmlinuz-5.17-x86_64
    root=UUID=f87ef1fe-5eec-4ec5-b98c-105742ac8e6d rw quiet
    sysrq_always_enabled=1 mitigations=off nowatchdog pci=noaer
    cpufreq.default_governor=performance apparmor=1 security=apparmor
    udev.log_priority=3 acpi_osi=! acpi_osi=Linux "acpi_osi=Windows 2009"
    nogpumanager intel_idle.max_cstate=1 i915.enable_gvt=1 i915-enable_fbc=1
    pcie_port_pm=off iommu=pt intel_iommu=on kvm.ignore_msrs=1
    rd.driver.pre=vfio-pci default_hugepagesz=1G hugepagesz=1G hugepages=0
    transparent_hugepage=never
  Desktop: KDE Plasma v: 5.24.6 tk: Qt v: 5.15.5 wm: kwin_x11 vt: 1 dm: SDDM
    Distro: Manjaro Linux base: Arch Linux
Machine:
  Type: Laptop System: Micro-Star product: GE75 Raider 8SE v: REV:1.0
    serial: <superuser required> Chassis: type: 10 serial: <superuser required>
  Mobo: Micro-Star model: MS-17E2 v: REV:1.0 serial: <superuser required>
    UEFI: American Megatrends v: E17E2IMS.11A date: 05/19/2020
Battery:
  ID-1: BAT1 charge: 31.3 Wh (77.7%) condition: 40.3/53.4 Wh (75.4%)
    volts: 11.5 min: 10.9 model: MSI BIF0_9 type: Li-ion serial: N/A status: N/A
  Device-1: hidpp_battery_0 model: Logitech MX Vertical Advanced Ergonomic
    Mouse serial: <filter> charge: 10% (should be ignored) rechargeable: yes
    status: discharging
Memory:
  RAM: total: 31.19 GiB used: 4.18 GiB (13.4%)
  RAM Report: permissions: Unable to run dmidecode. Root privileges
    required.
CPU:
  Info: model: Intel Core i7-8750H bits: 64 type: MT MCP arch: Coffee Lake
    gen: core 8 built: 2018 process: Intel 14nm family: 6 model-id: 0x9E (158)
    stepping: 0xA (10) microcode: 0xF0
  Topology: cpus: 1x cores: 6 tpc: 2 threads: 12 smt: enabled cache:
    L1: 384 KiB desc: d-6x32 KiB; i-6x32 KiB L2: 1.5 MiB desc: 6x256 KiB
    L3: 9 MiB desc: 1x9 MiB
  Speed (MHz): avg: 2000 min/max: 800/4100 scaling: driver: intel_pstate
    governor: performance cores: 1: 2000 2: 2000 3: 2000 4: 2000 5: 2000 6: 2000
    7: 2000 8: 2000 9: 2000 10: 2000 11: 2000 12: 2000 bogomips: 52815
  Flags: 3dnowprefetch abm acpi adx aes aperfmperf apic arat
    arch_capabilities arch_perfmon art avx avx2 bmi1 bmi2 bts clflush
    clflushopt cmov constant_tsc cpuid cpuid_fault cx16 cx8 de ds_cpl dtes64
    dtherm dts epb ept ept_ad erms est f16c flexpriority flush_l1d fma fpu
    fsgsbase fxsr ht hwp hwp_act_window hwp_epp hwp_notify ibpb ibrs ida
    intel_pt invpcid invpcid_single lahf_lm lm mca mce md_clear mmx monitor
    movbe mpx msr mtrr nonstop_tsc nopl nx pae pat pbe pcid pclmulqdq pdcm
    pdpe1gb pebs pge pln pni popcnt pse pse36 pts rdrand rdseed rdtscp
    rep_good sdbg sep smap smep ss ssbd sse sse2 sse4_1 sse4_2 ssse3 stibp
    syscall tm tm2 tpr_shadow tsc tsc_adjust tsc_deadline_timer vme vmx vnmi
    vpid x2apic xgetbv1 xsave xsavec xsaveopt xsaves xtopology xtpr
  Vulnerabilities:
  Type: itlb_multihit status: KVM: VMX disabled
  Type: l1tf mitigation: PTE Inversion; VMX: vulnerable
  Type: mds status: Vulnerable; SMT vulnerable
  Type: meltdown status: Vulnerable
  Type: mmio_stale_data status: Vulnerable
  Type: spec_store_bypass status: Vulnerable
  Type: spectre_v1 status: Vulnerable: __user pointer sanitization and
    usercopy barriers only; no swapgs barriers
  Type: spectre_v2 status: Vulnerable, IBPB: disabled, STIBP: disabled
  Type: srbds status: Vulnerable
  Type: tsx_async_abort status: Not affected
Graphics:
  Device-1: Intel CoffeeLake-H GT2 [UHD Graphics 630] vendor: Micro-Star MSI
    driver: i915 v: kernel arch: Gen-9.5 process: Intel 14nm built: 2016-20
    ports: active: eDP-1 empty: DP-1,HDMI-A-1 bus-ID: 00:02.0
    chip-ID: 8086:3e9b class-ID: 0300
  Device-2: NVIDIA TU106M [GeForce RTX 2060 Mobile] vendor: Micro-Star MSI
    driver: nvidia v: 515.57 alternate: nouveau,nvidia_drm non-free: 515.xx+
    status: current (as of 2022-07) arch: Turing code: TUxxx
    process: TSMC 12nm built: 2018-22 pcie: gen: 1 speed: 2.5 GT/s lanes: 16
    link-max: gen: 3 speed: 8 GT/s bus-ID: 01:00.0 chip-ID: 10de:1f11
    class-ID: 0300
  Display: x11 server: X.Org v: 21.1.4 with: Xwayland v: 22.1.3
    compositor: kwin_x11 driver: X: loaded: modesetting,nvidia
    alternate: fbdev,nouveau,nv,vesa gpu: i915 display-ID: :0 screens: 1
  Screen-1: 0 s-res: 1920x1080 s-dpi: 96 s-size: 508x285mm (20.00x11.22")
    s-diag: 582mm (22.93")
  Monitor-1: eDP-1 model: AU Optronics 0x409d built: 2018 res: 1920x1080
    hz: 144 dpi: 128 gamma: 1.2 size: 382x215mm (15.04x8.46")
    diag: 438mm (17.3") ratio: 16:9 modes: 1920x1080
  OpenGL: renderer: Mesa Intel UHD Graphics 630 (CFL GT2) v: 4.6 Mesa 22.1.4
    direct render: Yes
Audio:
  Device-1: Intel Cannon Lake PCH cAVS vendor: Micro-Star MSI
    driver: snd_hda_intel v: kernel alternate: snd_soc_skl,snd_sof_pci_intel_cnl
    bus-ID: 00:1f.3 chip-ID: 8086:a348 class-ID: 0403
  Device-2: NVIDIA TU106 High Definition Audio vendor: Micro-Star MSI
    driver: snd_hda_intel v: kernel pcie: gen: 1 speed: 2.5 GT/s lanes: 16
    link-max: gen: 3 speed: 8 GT/s bus-ID: 01:00.1 chip-ID: 10de:10f9
    class-ID: 0403
  Sound Server-1: ALSA v: k5.17.15-1-MANJARO running: yes
  Sound Server-2: PulseAudio v: 16.1 running: no
  Sound Server-3: PipeWire v: 0.3.56 running: yes
Network:
  Device-1: Intel Cannon Lake PCH CNVi WiFi vendor: Rivet Networks Killer
    Wireless-AC 1550i Wireless driver: iwlwifi v: kernel bus-ID: 00:14.3
    chip-ID: 8086:a370 class-ID: 0280
  IF: wlo1 state: up mac: <filter>
  IP v4: <filter> type: dynamic noprefixroute scope: global
    broadcast: <filter>
  IP v6: <filter> type: noprefixroute scope: link
  Device-2: Qualcomm Atheros Killer E2500 Gigabit Ethernet
    vendor: Micro-Star MSI driver: alx v: kernel pcie: gen: 1 speed: 2.5 GT/s
    lanes: 1 port: 3000 bus-ID: 05:00.0 chip-ID: 1969:e0b1 class-ID: 0200
  IF: enp5s0 state: down mac: <filter>
  WAN IP: <filter>
Bluetooth:
  Message: No bluetooth data found.
Logical:
  Message: No logical block device data found.
RAID:
  Message: No RAID data found.
Drives:
  Local Storage: total: 2.07 TiB used: 1.88 TiB (90.8%)
  SMART Message: Unable to run smartctl. Root privileges required.
  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Kingston
    model: RBUSNS8154P3256GJ size: 238.47 GiB block-size: physical: 512 B
    logical: 512 B speed: 15.8 Gb/s lanes: 2 type: SSD serial: <filter>
    rev: E8FK11.C temp: 46.9 C scheme: GPT
  ID-2: /dev/sda maj-min: 8:0 vendor: Western Digital
    model: WDS100T2B0B-00YS70 size: 931.51 GiB block-size: physical: 512 B
    logical: 512 B speed: 6.0 Gb/s type: SSD serial: <filter> rev: 00WD
    scheme: GPT
  ID-3: /dev/sdb maj-min: 8:16 vendor: KingSpec model: ACSC4M1TS25
    size: 953.87 GiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s
    type: SSD serial: <filter> rev: 4H scheme: GPT
  Message: No optical or floppy data found.
Partition:
  ID-1: / raw-size: 113.18 GiB size: 110.84 GiB (97.94%) used: 83.63 GiB
    (75.4%) fs: ext4 dev: /dev/nvme0n1p2 maj-min: 259:2 label: root
    uuid: f87ef1fe-5eec-4ec5-b98c-105742ac8e6d
  ID-2: /boot/efi raw-size: 300 MiB size: 299.4 MiB (99.80%) used: 1.8 MiB
    (0.6%) fs: vfat dev: /dev/nvme0n1p1 maj-min: 259:1 label: EFI
    uuid: 2FA5-9041
  ID-3: /run/media/rabcor/86069E6C069E5D4D raw-size: 124.98 GiB size: 124.98
    GiB (100.00%) used: 118.43 GiB (94.8%) fs: ntfs dev: /dev/nvme0n1p4
    maj-min: 259:4 label: N/A uuid: 86069E6C069E5D4D
  ID-4: /run/media/rabcor/KingSpec raw-size: 953.87 GiB size: 953.4 GiB
    (99.95%) used: 864.83 GiB (90.7%) fs: xfs dev: /dev/sdb1 maj-min: 8:17
    label: N/A uuid: 7081018e-cce8-4d7d-b093-bb681ff46b8e
  ID-5: /run/media/rabcor/WD raw-size: 931.51 GiB size: 931.51 GiB (100.00%)
    used: 861.99 GiB (92.5%) fs: f2fs dev: /dev/sda1 maj-min: 8:1
    label: Western Digital uuid: ae81d12d-6838-4833-b47b-8dd120364382
Swap:
  Kernel: swappiness: 60 (default) cache-pressure: 100 (default)
  ID-1: swap-1 type: file size: 512 MiB used: 0 KiB (0.0%) priority: -2
    file: /swapfile
Unmounted:
  ID-1: /dev/nvme0n1p3 maj-min: 259:3 size: 16 MiB fs: <superuser required>
    label: N/A uuid: N/A
USB:
  Hub-1: 1-0:1 info: Hi-speed hub with single TT ports: 16 rev: 2.0
    speed: 480 Mb/s chip-ID: 1d6b:0002 class-ID: 0900
  Device-1: 1-2:2 info: Logitech Unifying Receiver type: Keyboard,Mouse,HID
    driver: logitech-djreceiver,usbhid interfaces: 3 rev: 2.0 speed: 12 Mb/s
    power: 98mA chip-ID: 046d:c52b class-ID: 0300
  Device-2: 1-7:3 info: Realtek RTS5129 Card Reader Controller
    type: <vendor specific> driver: rtsx_usb,rtsx_usb_ms,rtsx_usb_sdmmc
    interfaces: 1 rev: 2.0 speed: 480 Mb/s power: 500mA chip-ID: 0bda:0129
    class-ID: ff00 serial: <filter>
  Device-3: 1-9:4 info: SteelSeries ApS KLC type: HID
    driver: hid-generic,usbhid interfaces: 2 rev: 2.0 speed: 12 Mb/s
    power: 300mA chip-ID: 1038:1122 class-ID: 0300
  Hub-2: 2-0:1 info: Super-speed hub ports: 8 rev: 3.1 speed: 10 Gb/s
    chip-ID: 1d6b:0003 class-ID: 0900
Sensors:
  System Temperatures: cpu: 49.0 C pch: 49.0 C mobo: N/A
  Fan Speeds (RPM): N/A
Info:
  Processes: 347 Uptime: 8m wakeups: 3 Init: systemd v: 251 default: graphical
  tool: systemctl Compilers: gcc: 12.1.0 alt: 11 clang: 14.0.6 Packages:
  pacman: 1540 lib: 494 flatpak: 0 Shell: Bash v: 5.1.16 running-in: konsole
  inxi: 3.3.20

Powering down cores is an interesting idea but how would I do that?

Also I actually tried a bunch of times to turn on airplane mode which turns off the wifi, but i didn’t see any gains from it on linux (maybe the wifi adapter didn’t properly power down?) on windows it netted me a few watts though.

echo performance | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
#echo performance | sudo tee /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
echo performance | sudo tee /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor
#echo performance | sudo tee /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor
echo performance | sudo tee /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
#echo performance | sudo tee /sys/devices/system/cpu/cpu5/cpufreq/scaling_governor
echo performance | sudo tee /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor
#echo performance | sudo tee /sys/devices/system/cpu/cpu7/cpufreq/scaling_governor
watch grep \"cpu MHz\" /proc/cpuinfo

that snippet is just for testing as example. you have to adopt it to your system. i will post more snippets if you want.
with the shell-script below you can see the settings, with the commands above you will set the governors explicit to each core and you could design a skript that will set them individual as you want.

#!/bin/bash
let c=2;
let b=10;
let a=1;
#echo "Start A ist jetzt $a und C ist jetzt $c";
#sleep 3;

while [ $c -ge 2 ]
#echo "A ist jetzt $a und C ist jetzt $c";
			do 
			((c++));
#			echo "Zähler c = $c";
					if (($c==10)) 
					then
						let c=2;
						clear;
#						echo "Zähler zurückgesetzt";
#						sleep 1;
					fi
			sleep 1;

echo "Scaling Governor ist " && echo $(cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor);
echo "CPU-Takt ist = " && grep 'cpu MHz' /proc/cpuinfo ;

done

#while [ $c -le 15 ]

#do
#	echo "Welcone $c times";
	#(( c++ ))
	#let c=a+1;	
	#let a=c;
	#echo "A ist jetzt $a und C ist jetzt $c";
	

	#sleep 1;	
	#echo $(cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor)

#done



#getgov=$(cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor)

#case $1 in
#  o|ondemand)     governor=ondemand;;
#  f|performance)  governor=performance;;
#  p|powersave)    governor=powersave;;
#  c|conservative) governor=conservative;;
#  *)         echo $getgov
#         exit;;
#esac

#for g in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo $governor > $g; done
#echo $(cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor)




i would recommend not to use the intel_pstate and use the common scaling-governor control. in this case you have to disable intel_pstate=disable in grub and update grub.

1 Like

I tried disabling my cores, went from 6 cores 12 threads to 3 cores 3 threads, it doesn’t seem like it’s drawing noticably less power though, maybe it would under load? still under light loads it seems to have minimal effect on power draw seems like it’s moer the sort of thing that would limit maximum power draw when operating under higher loads but i’m not quite aiming for that, at least not yet. It’s a pretty good tip though.

Out of curiousity why do you recommend not using intel pstate though?

because the original-kernel-control gives more control. this could be different to your cpu but in my case with a intel 8350-U it is the case. but you have to figure out much more modules that are interfering. i have bad experience with tlp in my case. what i also experienced is that this intel_pstate is limiting and in some cases even blocking the settings you want.
but i do agree that your experience does match with mine. i can boost up to the limit of the cpu-frequency and run on this speed but without any load (applications) it does not harm the power consumption. so even if i run at max-speed but without any high load the temperatures and power-consumption does no high impact. but as you said you want to limit powerage to the max and playing with the settings of the cpu is a good starting point.
https://wiki.archlinux.org/title/CPU_frequency_governors

also can you provide the inxi-command-output to check what GPU settings you are running? in my case i have a laptop with a iGPU-HD-630 and a nvidia-GPU. my results is that it is better to drive everything with the nvidia-GPU because the intel-iGPU needs a lot of additional CPU-powerage that causes much more load in the end.

1 Like
$ inxi -G
Graphics:
  Device-1: Intel CoffeeLake-H GT2 [UHD Graphics 630] driver: i915 v: kernel
  Device-2: NVIDIA TU106M [GeForce RTX 2060 Mobile] driver: nvidia
    v: 515.57
  Display: x11 server: X.Org v: 21.1.4 with: Xwayland v: 22.1.3 driver: X:
    loaded: modesetting,nvidia gpu: i915 resolution: 1920x1080~144Hz
  OpenGL: renderer: Mesa Intel UHD Graphics 630 (CFL GT2) v: 4.6 Mesa
    22.1.4

I hadn’t tried running everything off the nvidia gpu yet, I don’t actually think I can since I am on a muxless laptop, but limiting the igpu to 350mhz really improved the power draw a lot.

WHat method are you using to run everything off your nvidia GPU? if you disabled your igpu in the bios then I cannot do that unfortunately, although if you’re just using nvidia xrun or something I could do that.

it’s a little bit late for me today, might you give me a night sleep and go on tommorow ? it’s a no rocket science but it takes some steps that should be in the right order:
are you on plasma/kde ?
if so install plasma-wayland-session that you can change to X11 instead of wayland. x11 is more bullet-proof with nvidia. after install you’ll find a selection at the left-bottom at login.
the next steps are activating optimus and force the kernel to use nvidia-mode from startup.
sorry but i’m really tired, i’ll give you advice tommorow if that is okay ?

Without a baseline to compare to before you tried TLP, there’s not much to go on here.

FYI, Manjaro no longer includes TLP by default. I would suggest installing power-profiles-daemon which is preferred. It’s an optional dependency of powerdevil on KDE and gnome-control-center on GNOME.

yes but keep in mind to MASK TLP service, because you missed the fact that tlp still want’s to interfere even if it’s not active and i would really recommend what the heck went on with manjaro that you have definitely have to mask the service to kick it off.

I am on X11 not Wayland, but yes i’m also on KDE.

Personally wayland never seemed worth the hassle to me.

I’ll probably be able to figure out running off just the nvidia gpu, I’ve done it before but the igpu won’t actually be powered down or anything with this approach, it’s worth a shot though. I think last time i used optimus manager for it, wonder if that still works.

Anyhow sure, i’ll be here tomorrow too :slight_smile: thanks for your help so far.

@Yochanan why is TLP no longer included by default and why is power-profiles-daemon preferred? I have never heard of this software, I was following this Power management - ArchWiki

(at least in part) to try to optimize my power draw, this power-profiles-daemon is not mentioned there (nor anywhere for that matter when I looked for third party sources for things i could do to lower the power draw).

What makes this preferred over TLP? And if it is, why is it not installed by default?

don’t run in this trap, as i did also. please mask the service

sudo systemctl mask tlp.service

even if the service is not active it’s now able that apps can access it and that’s worse

If TLP is installed, other conflicting services will be masked. If one is not using TLP, they should remove it altogether.

There has been much discussion upstream about all this I’ve been following. It seems to cause more problems than it solves anymore. I may consider dropping it altogether.

I have now tested power-profiles-daemon

the result was about ~42w in balanced mode, and about the same in powersaving mode when idling. Disabling turbo boost weirdly seemed to have no effect. I imagine power-profiles-daemon was overriding the system settings for turbo boost or something.

I now have both tlp and power-profiles-daemon uninstalled under the same testing conditions and i’m running at ~53w (i did give a rough baseline of 60w in the op but now that’s corrected since the 60w value was based roughly off memory)

power draw of course is not consistent, it jumps aorund a bit, but under the same conditions it usually stays within a couple watt range.

On windows it jumps around a lot more though, i’ve seen it go as low as 16w (!!) today which is just completely insane (when on linux after going away and my screen’s been turned off it’s usually around 13-14w, sometimes 12, 16w is awful close to that and the screen was on full brightness) it lasted for a while too, but the problem with windows is that it has a lot of dubious ■■■■ running in the background which will occasionally drive up consumption at random whereas on linux it remains more or less consistent. This is one of the bigger benefits imo of linux when it comes to power management at least from what i’ve seen so far, it’s more consistent thus easier to predict.

That all said, since power-profiles-daemon only reduced my power consumption by about 10w as opposed to the about 20w effect installing tlp had, i’m gonna have to say I’m a little bit disappointed with that utility. I’m gonna see what happens if i install both though. (I’m fully expecting it not to work very well tho)

Edit: The result of running TLP with Turbo Boost disabled and power-profiles-daemon installed and set to balanced is ~25w

It’s pretty good, but TLP by itself was better (~23w) in the same scenario

I tried running with the nvidia gpu on via optimus manager, no rendering gets done on the igpu.

When idling the performance difference is negligible (most common value from 22.2 to 22.9; honestly it’s margin of error stuff)

When watching youtube it consumes 32w at minimum, much less efficient than the igpu was.

Running kotor was 60w (up from 32w) on the nvidia gpu, although it was also much smoother of course.

It was a worthwhile thing to try tho.

Edit: actually now i just noticed something super interesting, using optimus manager i configured my PC to only use the iGPU and run kotor but it wouldn’t do it, it then turns out i do not have vulkan drivers for the iGPU, meaning when i ran it at 32w i was using the nvidia gpu, and i confirmed this by setting hybrid mode with optimus manager (igpu preferred, both gpus available) and this again lets me run it at 32w, it is very odd because when i was using only the nvidia gpu it ran at 2x the power cost :astonished:

Even if technically in both cases i am running the game on the same gpu with the same power configuration, man, power management on PCs is freaky stuff sometimes.

good morning,

it’s very interesting and i hope you’ll stay on and keep us informed. that whole theme around power-management is indeed curious and imho is linux not very effective in it. especially tlp is very often more worse than helpful, but i think a lot of people have never investigated as you’re actually. that’s a big thumbs up . may you post your system-hardware that we can get an impression and are able to compare it ?

inxi --admin --verbosity=7 --filter --no-host --width 

the first inxi output i gave you was with that command.

did you tried auto-cpufreq? tlp needs to be disabled/removed to use it

2 Likes

Also mentioned here:

I have tried auto-cpufreq now, it is really good, at idle loads it’s around 24-25w, which is similar to windows, but still ~2w more than i was getting on TLP, on the other hand TLP had been tweaked a bit whereas auto-cpufreq is on default settings.

If I use the two together I might be able to get the best of both worlds, however I do have a problem with auto-cpufreq, which is that I cannot toggle between powersaving mode and performance mode manually like i can with tlp (e.g. on tlp i can switch between AC and BAT manually and thus control my power use a bit more freely but on auto-cpufreq only automated switching is supported, so it’s an all or nothing deal, it’s not good enough for me)

Another problem is that with auto-cpufreq it’s a bit too happy to sometimes jump up in power use for seemingly no reason at all, right now it just suddenly jumped from 25w to 45w and decided to stay there for a long time (like 5 mins), this behavior seems quite similar to the behavior of windows except the power spikes on windows do not last this long. I checked with top and there didn’t seem to be anything particularly draining the cpu either, it was just unexplained powerdraw spike.

Turbo boost wasn’t even on or anything.

I had tested quite thoroughly with TLP however and this kind of thing never happened with it. Spikes when increasing load are to be expected, but spikes that come out of nowhere for no discernable reason are just not cool for my use case.

I’m gonna try configuring it a little and maybe using it in tandem with tlp (since tlp has a lot of functions unrelated to the cpu after all that might be helping out in small ways) before i give up on it though; because i really like it (like it in the “why wouldn’t this be installed by default on every distro?” kind of way)

I can see the software has problems though (problems like it can’t seem to actually scale my CPU frequency as advertised, it can set the governor and toggle turbo boost though it seems, but in that video above it seemed to also be able to lower and raise cpu frequency but when i unplugged my laptop the frequencies didn’t actually budge)

It also has a utility (cpufreqctl.auto-cpufreq) which seems to be able to manually set the governor, however if I use it to set everything to powersave, auto-cpufreq will force it back to perofrmance within seconds.

By repeating the command however I was able to confirm that when all cores are set to powersave, the powerdraw matches that of my tlp config in the best case scenario (so the +2-3w i reported at the start of this post is really just because everything is using the performance governor cuz i’m plugged into AC)

Edit: The programs inability to manipulate the frequency directly seems to be because of intel pstate, I tried disabling nitel pstate and what I found was that the power draw was about the same.