Framework 16 Power Consumption Benchmarks

Having 10.28W and I have a dGPU, not active.
OK for me so far :slight_smile:

Thanks for the suggestion-- I replaced tlp with power-profiles-daemon and did not see an improvement. I used powertop --auto-tune and saw an improvement of a few watts.

Based on physical debugging “the touch test”, the dGPU appears to be getting quite hot while the rest of the laptop is cool to the touch. Strangely, inxi reports it as not active.

I wonder if this is related to the “[drm] Unsupported pwrseq engine id: 2!” error in my dmesg at boot. A bunch of Framework 16 owners report the same thing: https://gitlab.freedesktop.org/drm/amd/-/issues/3279. The reason I think this might be an issue is that pwr and the GPU are both mentioned in the same error message, and the GPU does indeed seem to be drawing a lot of power (while not in use). Is anyone else using a 6.8.x kernel with the dGPU installed having (or not having) power issues?

$ inxi -GSC -xx
System:
  Host: xxxxxxx Kernel: 6.8.7-arch1-2 arch: x86_64 bits: 64 compiler: gcc
    v: 13.2.1
  Desktop: Sway v: 1.9 dm: N/A Distro: Arch Linux
CPU:
  Info: 8-core model: AMD Ryzen 7 7840HS w/ Radeon 780M Graphics bits: 64
    type: MT MCP arch: Zen 4 rev: 1 cache: L1: 512 KiB L2: 8 MiB L3: 16 MiB
  Speed (MHz): avg: 517 high: 1344
    min/max: 400/5293:5137:5449:6080:5764:5924:5608 cores: 1: 1331 2: 400 3: 400
    4: 400 5: 400 6: 400 7: 1344 8: 400 9: 400 10: 400 11: 400 12: 400 13: 400
    14: 400 15: 400 16: 400 bogomips: 121431
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm
Graphics:
  Device-1: AMD Navi 33 [Radeon RX 7700S/7600/7600S/7600M XT/PRO W7600]
    vendor: Framework driver: amdgpu v: kernel arch: RDNA-3 pcie: speed: 16 GT/s
    lanes: 8 ports: active: none empty: DP-1,Writeback-1,eDP-1 bus-ID: 03:00.0
    chip-ID: 1002:7480
  Device-2: AMD Phoenix1 vendor: Framework driver: amdgpu v: kernel
    arch: RDNA-3 pcie: speed: 16 GT/s lanes: 16 ports: active: eDP-2 empty: DP-2,
    DP-3, DP-4, DP-5, DP-6, DP-7, DP-8, DP-9, Writeback-2 bus-ID: c4:00.0
    chip-ID: 1002:15bf temp: 35.0 C
  Device-3: Realtek Laptop Camera driver: uvcvideo type: USB rev: 2.0
    speed: 480 Mb/s lanes: 1 bus-ID: 3-1:2 chip-ID: 0bda:5634
  Display: wayland server: Xwayland v: 23.2.6 compositor: Sway v: 1.9
    driver: gpu: amdgpu display-ID: 1
  Monitor-1: eDP-2 model: BOE Display 0x0bc9 res: 2560x1600 dpi: 188
    diag: 407mm (16")
  API: EGL v: 1.5 platforms: device: 0 drv: radeonsi device: 1 drv: radeonsi
    device: 2 drv: swrast surfaceless: drv: radeonsi wayland: drv: radeonsi x11:
    drv: radeonsi inactive: gbm
  API: OpenGL v: 4.6 compat-v: 4.5 vendor: amd mesa v: 24.0.5-arch1.1
    glx-v: 1.4 direct-render: yes renderer: AMD Radeon Graphics (radeonsi
    gfx1103_r1 LLVM 17.0.6 DRM 3.57 6.8.7-arch1-2) device-ID: 1002:15bf
  API: Vulkan v: 1.3.279 surfaces: xcb,xlib,wayland device: 0
    type: discrete-gpu driver: mesa radv device-ID: 1002:7480 device: 1
    type: integrated-gpu driver: mesa radv device-ID: 1002:15bf

What power state is your dGPU in?

That pwrseq message should be a red herring for a power consumption issue. I agree you need to check from sysfs whether it’s suspended or not at the time of high power consumption.

In case you didn’t; make sure you reboot after swapping tlp to PPD to ensure that anything stateful tlp was doing is reset.

Looks like the Radeon dGPU (card1 l 1002:7480) is in D0 and the iGPU (card2 | 1002:15BF) is also in D0. But feel free to check my work.

How unusual! So, how would I go about correcting the power state? I thought ACPI power states were supposed to be handled by the driver, but if that’s not the case, can someone recommend a good userspace utility for this?

$ cat /sys/class/drm/card1/device/modalias
pci:v00001002d00007480sv0000F111sd00000007bc03sc00i00
$ cat /sys/class/drm/card1/device/power_state
D0
$ cat /sys/class/drm/card2/device/modalias
pci:v00001002d000015BFsv0000F111sd00000005bc03sc00i00
$ cat /sys/class/drm/card2/device/power_state
D0

You must have something using the dGPU or it’s sysfs files. You’ll need to figure what is doing that. Reading sensors will do this, as will polling anything from lspci, nvtop or anything that reads it’s sysfs files.

Interesting-- looks like Chrome uses the dGPU. Strange that this isn’t showing sway or any of the other programs displaying on my system. I’m seeing a lot of reports of 3-4h battery life on the FW16+Linux so I’m being a bit extra verbose here so folks can follow along (let me know if not useful).

So, I guess now I need to figure out how to make things use the iGPU instead… Somehow I don’t believe the reported “1W” power usage for the dGPU.

On the other hand, the tool put out by Framework at GitHub - FrameworkComputer/dri_prime1-detection: A simple application to verify if desired applications are running with discrete graphics and referenced above in this thread says nothing is using the dGPU:

I would say close ALL apps and then check what state the dGPU is in. If it’s still in D0 try using a different compositor.

It looks like amdgpu_top --smi was right. If I kill the Chromium flatpak and wait a few moments, /sys/class/drm/card1/device/power_state drops back down from D0 to D3cold. Without the Chromium flatpak running, the system draws 8-9W according to a recently-calibrated powertop, which is pretty close to the baseline Ubuntu power consumption.

People who use Chromium and Chromium-based browsers in flatpak might be well-advised to explicitly run on the iGPU if possible.

So, looks like I am able to reproduce the benchmark results with Arch, sway, and a dGPU after all. Thanks for coming with me on this detour :-).

FWIW I just tried on Fedora with Chromium NOT in a Flatpak. I find that some things while Chromium is running cause it to exist D3cold. When the browser first opens, closes or when I start playing videos (presumably when trying to use HW acceleration for video playback) the dGPU pops into D0. But after things are stable it goes back to D3cold.

If anyone is curious, the Wayland support through --ozone-platform-hint=auto is the issue here. Removing that flag causes Chromium and Electron apps to use the iGPU.

1 Like

Actually, when using Chromium (but google chrome is the same), my battery usage goes to 17W. Without, I’m at about 9.8W (FW16, 64GB Ram, 2 NVMe disks and dGPU)

That’s pretty consistent with what I am seeing. Have you tried turning Wayland off (removing the Ozone flags)?