Power consumption big discrepancy for relatively idle scenarios: Linux vs. Windows

NVIDIA has been constantly working to improve power management in Linux but there are still certain situations when the Linux driver needlessly uses a lot more power than Windows 10 (haven’t tried W11 yet).

Environment:
OS: Fully updated Fedora 36, Linux 5.19.16, NVIDIA 520.56.06
DE: XFCE4 without compositing
GPU: GTX 1660 Ti, stock
CPU: Ryzen 7 5800X
Monitor: 2560x1440@144Hz connected via DisplayPort

Additional settings:

    Option      "Coolbits" "28"
    Option      "metamodes" "nvidia-auto-select +0+0 {ForceCompositionPipeline=On, ForceFullCompositionPipeline=On}"
    Option      "UseNvKmsCompositionPipeline" "Off"

Driver options

options nvidia NVreg_EnableS0ixPowerManagement=1
options nvidia-drm modeset=1
  1. Working in Firefox. In Windows 10 when you browse light static HTML pages (uBlock Origin, no banners, etc) GPU consumes on average around 9W. Under Linux: 27W. Steps to reproduce: Just launch Firefox with a new Tab page where you see you most visited websites and Pocket recommendations below. Start erratically scrolling it up and down fast. This is a 100% static webpage for all intents and purposes.

  2. Try to drag around the screen a simple static application [window] after minimizing or closing all other applications, e.g. Mousepad. It starts with ~27W, then settles on 15W. Under Windows 10? Again, around 9W.

  3. Full screen 1080p videos in Firefox under Linux consume around ~25W vs ~12W in Windows. Just open any Twitch stream and switch to full screen. No video acceleration is used in Linux. In Windows 10 video acceleration is used/enabled, which means it should use more energy but it uses less. So, under Linux not only your CPU is used to decode videos (more power use), also your GPU uses more energy to render videos which makes Linux power-wise a very bad desktop OS.

  4. mpv with vdpau vs Windows MPC-HC. Again Windows comes on top by a wide margin.

It would be great if NVIDIA addressed these scenarios.

Better yet, it would be really great if there was a special list of applications for which the NVIDIA driver was allowed to clock up GPU and VRAM.

@aplattner @amrits

Would be great if people chimed in and reported other scenarios where the Linux NVIDIA driver uses more power vs. Windows 10/11.

I don’t really use Windows but I’ve noticed the Nvidia driver generally speaking is quick to decrease the performance state(read: increase voltage & clocks), often resulting in performance state fighting where it decreases and then increases the performance state in a loop when not even interacting with the PC.

Viewing the dynamic performance state information returned by NVML shows that the graphics threshold for increasing the performance state is always 40 %. This doesn’t seem right as a higher performance state is naturally going to have much lower clocks than if it was a lower one.

Some images from my own app showing this:



I think there needs to be a way to tune these thresholds based on whether you prefer faster clock boosting or power savings. It seems like the option in nvidia-settings doesn’t do anything.

1 Like

Nice data!