关键词
linux
mintlinux
manjaro
sleep
suspend
休眠
唤醒
画面卡顿
chrome浏览器
故障说明
在台式机安装的linux系统(mintlinux、manjaro),在自动休眠再次唤醒后,chrome浏览器以及其他一些视频软件,就会处于不响应的状态。然后经过一段时间的无响应后,软件会崩溃退出,重新打开才会恢复正常。
系统使用的是NVIDIA驱动。
原因分析
经过网上查询,archlinux的Wiki 以及 NVIDIA的官方文章指出了一些原因:
默认情况下,NVIDIA Linux 驱动程序仅在系统挂起和恢复时保存和恢复必要的视频内存分配。
由此产生的视频内存内容的丢失可由用户空间 NVIDIA 驱动程序和某些应用程序部分补偿,但可能会导致渲染损坏和退出电源管理周期时应用程序崩溃等故障。
解决方案
文章提出的解决方案是通过一些设置,让系统在休眠时能够保存显卡驱动的所有内存,从而避免唤醒后出现异常。
对于我使用的mintlinux系统。
原先的系统默认配置文件/etc/modprobe.d/nvidia-graphics-drivers-kms.conf
内容如下:
# This file was generated by nvidia-driver-535
# Set value to 0 to disable modesetting
options nvidia-drm modeset=1
然后更新相关配置如下:
# This file was generated by nvidia-driver-535
# Set value to 0 to disable modesetting
options nvidia NVreg_PreserveVideoMemoryAllocations=1 NVreg_TemporaryFilePath=/home/xxx/tmp-nvidia
options nvidia NVreg_UsePageAttributeTable=1
options nvidia NVreg_RegistryDwords="OverrideMaxPerf=0x1"
options nvidia-drm modeset=1
注意NVreg_TemporaryFilePath指向的是文件夹路径,非文件路径,另外记得给所有用户设置写权限:chmod a+w tmp-nvidia
。
另外注意需要保持NVIDIA相关service nvidia-suspend.service
、nvidia-hibernate.service
开启:
systemctl status nvidia-suspend.service
○ nvidia-suspend.service - NVIDIA system suspend actions
Loaded: loaded (/usr/lib/systemd/system/nvidia-suspend.service; enabled; preset: disabled)
Active: inactive (dead)
最后通过如下命令使驱动模块更改生效:
sudo update-initramfs -u
参考文章
https://wiki.archlinux.org/title/NVIDIA/Tips_and_tricks#Kernel_module_parameters
https://download.nvidia.com/XFree86/Linux-x86_64/435.17/README/powermanagement.html