如何仅降低辅助显示器的刷新率?(减少GPU使用)

Flo*_*wig 2 performance display nvidia multiple-monitors fps

我想将辅助显示器的刷新率降低到非常小的水平,这样我的 GPU 就不必做那么多工作。但是在默认的“显示”设置中没有选项可以更改我的第二台显示器的刷新率。它似乎固定在 60 Hz。

如何将我的第二台显示器的刷新率限制为仅每秒 10 帧?...在我的 GPU 上释放一些资源。


这是我的显示设置:

显示

我在 NVIDIA X 服务器设置中也找不到选项: nvidia x 服务器设置

英伟达显示器

的输出xrandr

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)

Run Code Online (Sandbox Code Playgroud)

Par*_*avi 6

如此处所述您可以使用cvtxrandr更改显示器的刷新率。但在您的情况下,参数cvt必须是3840x2160 24限制第二台显示器的刷新率,同时保留其分辨率。

但 :

监视器刷新率与 GPU 利用率无关。事实上,对于60Hz监视器,监视器正在读取帧缓冲区,例如每秒 60 次,无论您的 GPU 以 240fps 渲染还是完全空闲。至于我知道监视器用来读取帧缓冲区的方法称为直接内存访问,它甚至不需要 CPU 周期来执行 I/O 操作。

如果您想降低 GPU 的负载,您可以:

  • 通过上述方法限制第二台显示器的分辨率,但这有点荒谬,因为您无法充分利用显示器的潜力

  • 将需要更高渲染的窗口(例如游戏和视频播放器,但不是文件管理器的实体窗口,甚至只是实体墙纸)移动到分辨率较低的显示器上。

  • 禁用一些可能使用 GPU 的扩展和功能

  • 查看哪些进程通过nvidia-smior nvidia-settings(即您发布的屏幕截图所属的程序)对您的 GPU 施加了很大压力,并通过cputool限制它们的CPU使用率,如下所示(您必须先安装软件包):cputool

cputool -p pid_of_the_hungry_process -c maximum_cpu_usage
Run Code Online (Sandbox Code Playgroud)

限制 CPU 使用率也限制了进程在单位时间内发出的OpenGL调用,因此它也可以限制 GPU 使用率。我不知道任何nvidia-smi可以直接限制 GPU 使用率的工具(甚至)(如果有人知道,我很高兴听到)。

没有程序会在 GPU 中开始执行。所有程序都从 CPU 开始,然后通过OpenGLCUDAOpenCL 等调用 GPU 的驱动程序。所以我认为限制 CPU 使用率是合理的。

并注意,maximum_cpu_usage上述命令中的 16 线程 CPU 是从0一直到1600. 这是该系统上的进程可以使用的最大 CPU 量(如果它有 16 个执行线程)。

例如,将KWin窗口管理器限制10在我的系统中,当在整个屏幕上非常快速地移动终端窗口时,GPU 使用率从几乎32% 减少15%左右。但是当您移动窗口时,它可能会导致一些小故障。

TODO:如果有人知道如何限制 Gnome-shell 或类似 DE 的帧速率,我很高兴听到。

希望能帮助到你。