2

I want to reduce the refresh rate of my secondary monitor to something really small, such that my GPU doesn't has to do as much work. But there is no option to change the refresh rate for my second monitor in the default "Displays" settings. It seems to be fixed at 60 Hz.

How can I throttle the refresh rate of my second monitor to only, let's say 10 frames per second?... to free up some resources on my GPU.


Here is my display setup:

displays

I also couldn't find an option in the NVIDIA X Server Settings: nvidia x server settings

nvidia monitor

The output of xrandr is

Screen 0: minimum 8 x 8, current 3440 x 2520, maximum 16384 x 16384
DVI-I-0 connected 1920x1080+854+1440 (normal left inverted right x axis y axis) 477mm x 268mm
   1920x1080     60.00*+
   1680x1050     59.95  
   1600x900      60.00  
   1280x1024     75.02    60.02  
   1280x800      59.81  
   1280x720      60.00  
   1024x768      75.03    60.00  
   800x600       75.00    60.32  
   640x480       75.00    59.94  
DVI-I-1 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected primary 3440x1440+0+0 (normal left inverted right x axis y axis) 819mm x 346mm
   3440x1440     59.97 +  99.98* 
   3840x2160     59.94    50.00    29.97    25.00    23.98  
   2560x1080    100.00    59.94  
   1920x1080    100.00    60.00    59.94    50.00    29.97    25.00    23.98    60.00    50.04  
   1680x1050     59.95  
   1600x900      60.00  
   1280x1024     75.02    60.02  
   1280x800      59.81  
   1280x720      60.00    59.94    50.00  
   1024x768      75.03    60.00  
   800x600       75.00    60.32  
   720x576       50.00  
   720x480       59.94  
   640x480       75.00    59.94    59.93  
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
DVI-D-0 disconnected (normal left inverted right x axis y axis)

Florian Ludewig
  • 135
  • 3
  • 17

1 Answers1

6

As stated here you can use cvt and xrandr to change the refresh rate of your monitor.But in your case the arguments of the cvt have to be 3840x2160 24 to limit the refresh rate of your second monitor while preserving its resolution.

BUT :

Monitor refresh rate has nothing to do with the GPU utilization.In fact the framebuffer is being read by the monitor for example 60 times per second for a 60Hz monitor , whether your GPU is rendering to it 240fps or whether it's completely idle.As far as I know the method used by the monitor to read the framebuffer is called Direct Memory Access which even doesn't require CPU cycles to do the I/O operations.

If you want to lower the load of your GPU, you can :

  • Limit the resolution of the second monitor via the aforementioned method , but it's a little ridiculous since you cannot use the full potential of the monitor

  • Move the windows that demands higher renderings (e.g games and video players , but not a solid window of a file-manager or even just a solid wallpaper for example) to the monitor with the lower resolution.

  • Disable some extensions and features that might use the GPU

  • See which processes are putting a high pressure on your GPU via nvidia-smi or nvidia-settings(i.e the program the screenshots you posted belong to) and limit the CPU usage of them via cputool as follows (you have to install the cputool package first) :

cputool -p pid_of_the_hungry_process -c maximum_cpu_usage

Limiting the CPU usage also limits the OpenGL calls that a process issues in the unit of time , so it can limit the GPU usage too.I don't know any tool (even nvidia-smi) which can limit the GPU usage directly(if somebody knows , I'm glad to hear).

No program ever begins its execution in the GPU.All programs begin with the CPU and then issue calls to the driver of the GPU via OpenGL , CUDA or OpenCL to name a few.So I think it's reasonable to limit the CPU usage.

And note that the maximum_cpu_usage in the above command for a 16 thread CPU is from 0 all the way up to 1600 . That's the maximum amount of CPU that a process on that system can use (if it has 16 threads of execution).

Limiting for example the KWin window manager to 10 in my system reduced the GPU usage from almost 32% to around 15% when moving a terminal window very fast across the whole screen.But it can cause some glitches when you move the window.

TODO : If somebody knows how to limit the frame rate of the Gnome-shell or a similar DE , I'm glad to hear.

Hope it helps.

Parsa Mousavi
  • 3,305
  • 16
  • 37