Abnormal idle power draw w/ dual monitor if both displays >= 100Hz

Hello!

I’ve just recently made the switch back to Linux and I’m running into an issue with the nvidia driver 495.46, my 1080ti and its two (via DisplayPort) connected LG 27GL83A-B.

If I run the displays as intended at 2560x1440@144Hz, the GPU never clocks down. It will always run at ~1480Mhz core speed, drawing 59W (according to nvidia-smi). Doesn’t matter if I run a compositor on the Desktop or not. I still have a Windows installation and I can verify it doesn’t happen there. The card can indeed clock down to a lower performance level. But on Linux, it is pinned to level 3.

Now for the fun part:
If I drop the refresh rate of one (or both) of the two displays to 60Hz, the card suddenly can idle again, dropping to performance level 0 in no time. Also lowering the resolution on one display (or both) from 2560x1440 to 1920x1080 helps. On Windows, running the displays at different settings usually causes a HIGHER power draw, so I am not sure what is even happening here.

The only difference I can tell between the Linux and the Windows setup is that on Linux, I don’t seem to be able to get GSync to work. In nvidia-settings, both displays report:
G-SYNC Mode Available: G-SYNC Compatible
G-SYNC Mode Enabled: No
I am not sure why that is and I lack experience with GSync on Linux. From what I can read “it should just work”, but that doesn’t seem to be the case.

I could live without GSync, but having ~60W idle power draw is something I would like to solve. Preferably without having to drop my refresh rates back to 60W.

And help would be greatly appreciated. Thank you.

nvidia-bug-report.log.gz (345.1 KB)

1 Like

Hey!

Tinkered with this off and on for a few days and decided to share my new findings - which aren’t much, but maybe it helps the NVidia folks here (which I strongly believe do really exist).

So I was reading that I am absolutely not alone with problems like this. And some folks in other threads have shared their opinion that this is “not a bug but a feature” and that the GPU needs to clock that high to push that many pixels at these refresh rates.

I would even buy that, but as I wrote before, I do have a Windows installation where this problem doesn’t exist. But okay, let’s roll with it that the way how Xorg does multi-monitors is less efficient. That still doesn’t explain the behaviors I see.

For example, I was playing with workarounds to make my system not constantly consume 60W for “nothing”. so I lowered the refresh rate of my second monitor to 60Hz with the primary display running at 120Hz. As written in my first post, the GPU suddenly was able to clock down nicely. It was sitting between 139Mhz a shocking amount of time.
Naturally, this resulted in immediately noticeable difference in smoothness of animations/movements when working across both displays. So I lowered my primary display to 60Hz as well and… the GPU clocked UP much more than before.

To summarize:
Running two displays at 120 and 60Hz was MORE power efficient than running BOTH at 60. I even rebooted to make sure this wasn’t just a random fluke in kwin after changing the display settings.

Also, I can easily force Powermizer to stay fixed at the lowest performance level. Granted, that pins the GPU at ~600Mhz instead of 139Hz, but then I can still drive my displays both at 144Hz no problem. So I don’t buy that I need the highest performance level with 1480Mhz to drive both displays.

So my guess is there’s something still off here, but of course I can only try so much. Maybe an Nvidia person could shed some more light on this. :)

In the meantime I would be grateful for all other hints and tricks I could try out. Heck I would even take a workaround where I just “switch” between fixed/dynamic performance levels depending on what I need. For most my work the lowest level is fine, but should I want to play a game, it would be nice if I could switch. But so far I have not figured out how to do that without restarting Xorg.
Is there a way to switch these levels during runtime?

Thanks for reading. Have a nice day!

1 Like

As you likely already know, the “feature” theory is more pixels per seconds displayed needs higher memory clocks which is bound to gpu clocks.
On the other hand though, if you do the math, you’ ll notice that even minumum clocks should be enough in most cases even with generous margins and quite some share for gpu tasks on the low-end gpus.
My strong suspicion is that the display-engine code of the nvidia driver is in a similar state as the amd dc was when they offloaded it to the kernel devs. A very huge pile of coded work-arounds. Leading to all kinds of mess, this just being one of them.
Just as a sidenote, the same issue pops up on Windows from time-to-time but this is getting “fixes” or rather added work-arounds.

In theory, nvidia settings has a run-time setting “lowest clocks” but this is somehow disabled. I’ve always been too lazy to check if there’s a hidden option “–do-what-i-say-show-all-options”
https://github.com/NVIDIA/nvidia-settings/blob/main/src/libXNVCtrl/NVCtrl.h

  • PREFER_CONSISTENT_PERFORMANCE - lock to GPU base clocks

Update while checking my links: the new 510 driver/nvidia-settings seem to have changed the powermizer settings to now Quiet/Balanced/Performance to maybe include TGP settings, please check if you can now use the 9year long hidden low clock setting.
https://github.com/NVIDIA/nvidia-settings/blob/main/src/gtk%2B-2.x/ctkpowermode.c
Update2: nah, just misclicked and saw the added TGP change, the old low-clocks setting:
https://github.com/NVIDIA/nvidia-settings/blob/main/src/gtk%2B-2.x/ctkpowermizer.c

Thanks for your hints, generix!

I was playing around with the new 510 beta driver, but… no luck. Still the same settings available and the same power draw.

So for the time being, I just set my monitors to 60 Hz, cause the more I look around with this, the more frustrating it gets. Especially after playing around with some native games (Overload in particular) I realized that the 3D performance of the 1080ti seems to be only SLIGHTLY better than the APU of the 2400G Ryzen I have in my secondary PC - a DeskMini. I’m now considering using that as my main Linux machine even though I wanted to prevent switching between two physical machines.

But honestly, the nvidia driver really seems to fail at both being slow AND being fast. :D

1 Like