low performance on Quadro M2200


On my laptop I have Gentoo, Nvidia Quadro M2200 with proprietary NVidia drivers 384.59-r1.
glxgears shows about 3000-5000 FPS usually, but few times I got ~12000 FPS.
May be glxgears is not good measurements for the performance, but it perfectly correlated with games like KSP, which felt laggy with LQ when glxgears reports 5000 FPS and felt good with HQ when glxgears reported 12000 FPS.

I really cannot understand when the card want to move from P0 to P1, or P2, but I believe that is the case.

Trying to find a solution I applied different combination of https://devtalk.nvidia.com/default/topic/572053/linux/-solved-forcing-maximum-power-saving-on-the-desktop-quot-minimum-power-quot-mode-for-powermizer-/:

Option          "RegistryDwords" "PowerMizerEnable=0x1; PerfLevelSrc=0x2222; PowerMizerLevel=0x0; PowerMizerDefault=0x0; PowerMizer   DefaultAC=0x0

Even if PowerMizer is disabled, I still can see that PL jumps from one level to another in nvidia-settings.

So my question is pretty simple: how to force performance level for my card ?

BTW, additionally I observe strange behavior of performance when I plug another monitor to my laptop. With dual monitors glxgears reports 60FPS.


AFAIK, the levels go from 0x1 (highest) to 0x3 (lowest), so it should be PowerMizerDefaultAC=0x1.
The 60 fps is simply from VSync, that’s the expected behaviour. My guess is you have an Optimus system and PRIME Sync is not activated, so there’s no sync to vblank on your internal display. The external output is then connected to the nvidia gpu so it syncs.
The throttling can be due to many reasons. When the issue hits run nvidia-bug-report.sh (as root) and attach the tar.gz it creates to your post.

Thanks for reply. I noticed that some features were not built in my kernel for optimus system, however rebuilt kernel and passing --set “PRIME Synchronization” 1 doesn’t affect performance of internal display.

I tried different ints for PowerMizerDefaultAC, but still nothing works.

As soon as performance is low always, here’s my log
nvidia-bug-report.log.gz (259 KB)

Your driver is incorrectly installed, kernel driver is 384, x driver is 375. You can see that with dmesg.
You should also clean up your xorg.conf. The load module section is unneeded and stops the xserver once you would activate prime sync. the connecttoacpi option is unneeded and you should always try without the coolbits and nvreg options.
prime sync can be activated by using nvidia-drm.modeset=1 as kernel parameter.

Adding ‘nvidia-drm.modeset=1’ to kernel parameters helped. PL no longer jumps from one level to another. Even that glxgears now reports 60FPS (which looks ok as you already clarified to me), unigine benchmark shows significantly higher fps.