linux系统休眠唤醒后画面卡死问题

关键词

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.servicenvidia-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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容