PowerMizer Performance stuck at Level 3 all the time

I’ve had this problem for a while and made no progress trying to troubleshoot it myself, although I had a workaround. Now, with the latest 352.21 driver, my workaround no longer works.

Here are the details: (will attach nvidia-bug-report.log.gz too)

Hardware:
1x EVGA GTX 980 Superclocked edition
1x ASRock X99 Extreme11 motherboard
1x Samsung 27" S27D590C monitor (connected via displayport) - center display, landscape mode
2x Dell U2412M 24" monitors (1 connected via displayport, 1 via DVI) - left and right displays, portrait mode

OS: Fedora 21 Linux, kernel 4.0.8-200.fc21
Nvidia driver: 352.21 (installed via RPM from rpmfusion yum repo)

The problem:

When I have all monitors attached and running at their native resolutions (Samsung=1920x1080,Dell=1920x1200), the nvidia-settings utility’s “PowerMizer” shows it is running at performance level 3. And indeed, the temperature of the card is hotter than usual.

When I only have the Samsung display connected, the PowerMizer perf level goes to 1 when it’s relatively idle and goes up when I run graphics intensive applications or games. I think this is normal. But, with the two Dell monitors attached in a 3-display setup, the perf level is stuck on 3 and the card gets warmer even with little graphics compute power in use.

Previously, with 346.47 version of Nvidia driver, I was able to workaround this problem if I set the resolution of the Dell monitors to 1920x1080 instead of it’s native 1920x1200. This would at least not cause my GTX 980 to waste energy when idle.

However, after updating to the recent 352.21 version, the workaround no longer works. My PowerMizer performance level is constantly stuck at level 3 and the card is running 15-20C hotter than normal.

Can anyone please help? I’m happy to provide more information if I missed anything.
nvidia-bug-report.log.gz (78 KB)

Hello,

I am having the same problem. The driver started to be stuck at maximum performance even when idling since the 352 branch. I’ve always had 2 screen and never had this behavior prior to 352 .

I have now downgraded the driver to 349.16 and GPU clock scaling works as expected running linux kernel 4.1.2.

Your second option is to force the performance level 3 with this line in you /etc/X11/xorg.conf in the “device” section:

Option “RegistryDwords” “PowerMizerEnable=0x1; PerfLevelSrc=0x2222; PowerMizerLevel=0x1;PowerMizerDefault=0x3; PowerMizerDefaultAC=0x3”

however you’ll need to change it back for more perfmance which is cumbersome.

Hope this help
Regards
lompik

EDIT: I have an EVGA GeForce GTX 580 CLASSIFIED ULTRA

lompik: thanks for the workaround suggestion and report that older driver seems to work better. i may actually downgrade, but it will be a hassle to maintain since Fedora has frequent kernel updates and rpmforge does not maintain older nvidia driver RPMs for the newer kernels. anyway, i guess if it saves on my electrical bill, it might all be worth it.

See https://devtalk.nvidia.com/default/topic/847355/linux/driver-level-antialiasing-not-really-usable-for-composited-linux-desktops-/post/4586766/#4586766

I was frustrated by this too – basically, due to the way the Linux driver is designed (this isn’t a problem on Windows, but let’s be honest, Xorg is ancient and has a lot of technical debt), if your total resolution across multiple screens is high enough, it won’t downclock, because that would prevent it from being able to clock back up on demand, due to the potential for the display underflowing in the fractions of second that it reclocks the memory. I appreciated Aaron giving me the explanation, though it’s still frustrating; I have a Titan X, and I now stick to running 2 monitors most of the time and only plugging in my 3rd when I really need it, since I don’t want the power draw being that high all the time. I’m not surprised that a slightly weaker card would only be able to handle two high-resolution displays, though the regression makes it even more frustrating. The cutoff seems to be somewhere around 4mpix when multiple monitors are involved; basically, just above the resolution of a single 2560x1440 display. I’m not sure if anyone who has a single 4k monitor can attest to whether it’s different for them.

I do wish they’d fix this, but I can see how it’s probably just not possible without significantly re-architecting the driver and/or display server. I use Ubuntu and Arch, btw.

axfelix,

thanks for sharing your post about this issue. the strange thing is that this was not a problem previously. as posted lompik, in some older drivers the problem is gone completely. and in the last release I at least had a workaround. the latest release of the driver makes the situation even worse.

i can understand if the issue has always existed, but the fact that the issue has gotten worse with new releases makes me think there must be a way to resolve this.

at this point, although it would be a pain to keep using older nvidia drivers since they don’t get packaged, i might just go that route until this gets fixed.

Well, the 980 isn’t actually supported more than a few versions back, and in my case, the Titan X isn’t really supported at all before 349, and the issue didn’t get any worse for me between 349 and 352 (insofar as I always had the max clocks with three displays).

I don’t know if it is the same root cause, but I’m running Fedora 24 with a GTX 1070 and a single Dell 4k monitor and the performance level seems stuck at 3. I’m not even given the option to change it in the PowerMizer section of nvidia-settings.

I actually confirmed that the the no-downclocking-when-three-displays-are-connected issue does exist on Windows as well currently.

Sucks, but at least it’s not just a Linux issue! For what it’s worth, I have a 144hz 1440p GSync display now and noticed that the card only downclocks properly if I set it to 120hz max. There’s a lot of these irritating gotchas, and when it makes a difference of 50W+ of idle power and fan noise, it’s good to be aware of.

I’m using:

4.13.0-16-generic
Ubuntu 17.10
NVIDIA Driver Version 384.81

And Nowadays the same issue with PowerMizer.

I am using 3x Monitors and is not working but if I disable the 2 monitors is working fine
Further more I have discovered that having all 3 monitors at resolution 1920x1080 Powermizer is working fine.

BUT!

If I have one monitor at resolution 2560x1440 and the other 2 at resolution 1920x1080 powemizer is NOT Working

I have tried setting up 2x Monitor at 3840x2160 and is working fine but if I connect a third monitor at 1920x1080 Powermizer is not working it has to go full performance.

I have tried also 2x monitors 2560x1440 with 1920x1080 … 2560x1440 with 3840x2160 and powermizer is working

But with 3 monitors different resolution is not working :(

Wolfyion,

I’m in a similar situation. I have 2xmonitors 1920x1080 and a main 3840x2160.

I didnt dive in yet, but this articule seems help to understand the auto-booster.

https://devblogs.nvidia.com/parallelforall/increase-performance-gpu-boost-k80-autoboost/

Question for some technical expert:

Is necessary carry out that amount of Hz in clock for multiple monitors?

Further more I have discovered that the refresh rate is the problem and thats why Powermizer is not working in 3x Monitor Setup

  1. I setup all 3 monitors at 1920x1080 at 60hz → Powemizer Working fine!

  2. I setup all 3 Monitors at 1920x1080 but one monitor at 59.94hz and other two at 60hz → Powermizer working at Full Perfomance

My problem now is that I cant setup manually the refresh @ 2560x1440 to be the same with other 2x monitors (it goes only up to 59.95hz and the other two monitors to 1920x1080 @ 59.94hz xD )
I have tried many things setting up 3x Monitors with arandr and xorg file but no luck. Powermizer is not working :(

The weird thing is that with 2x Monitors no matter the resolution or the refresh rate Powermizer is working fine.

I dont know if its Nvidia Drivers this problem or is something else.

The PowerMizer thing isn’t a bug: it needs to lock the GPU to a high enough performance state so that there is enough memory bandwidth available to drive all of the displays.

In order to change the memory clocks, the driver has to pause the memory interface, re-train the links, and then turn it on again. Depending on the configuration, it might not have enough time to do that before the display underflows. So if that situation arises, it just locks it to the highest speed to avoid glitching the displays.

The above being correct. I would suggest reading. Arch Linux wiki. Multihead, randr, twinview. Also is your setup proven and correct? Libs and simlinks in correct locations and install? xorg.conf. correct. Not triple buffering? You need to be on nvidia 460 kernel 5.8. blacklist unused onboard, CPU PAT?, 64Bit DMA Buffers? Csm off. xchi handover off. Really tired. Can’t stay. Sorry