Linux系统显存通常由显卡驱动自动管理,无需手动清理,但当程序异常退出或驱动未释放资源时,可能导致显存残留占用,针对不同场景存在相应的清理方法。
通用清理方法
重启图形界面(推荐)
适用于桌面环境(如GNOME、KDE),操作后所有图形程序关闭,显存自动释放:
sudo systemctl restart display-manager # 重启显示管理器(通用) # 或指定管理器(根据实际选择): sudo systemctl restart gdm # GNOME sudo systemctl restart sddm # KDE sudo systemctl restart lightdm # Ubuntu/LXDE
重启系统
彻底释放所有资源(包括显存):
sudo reboot
针对NVIDIA显卡
重置GPU(无需重启)
使用 nvidia-smi
工具:
nvidia-smi --gpu-reset -i 0 # 重置GPU 0(替换为实际GPU ID)
卸载并重载驱动模块
sudo rmmod nvidia_uvm nvidia_drm nvidia_modeset nvidia # 卸载模块 sudo modprobe nvidia nvidia_modeset nvidia_drm nvidia_uvm # 重载模块
终止占用进程
查看显存占用进程:
nvidia-smi # 找到占用显存的PID kill -9 <PID> # 强制结束进程
针对AMD显卡
重置GPU内核模块
sudo rmmod amdgpu # 卸载驱动模块 sudo modprobe amdgpu # 重载模块
使用RadeonTop监控
安装工具后查看占用进程:
sudo apt install radeontop # Debian/Ubuntu radeontop -c # 显示占用率高的进程
针对集成显卡(Intel)
集成显卡共享系统内存,释放方法等同于清理内存:
- 结束占用内存的进程:
top # 查看高内存进程 kill <PID>
- 清理缓存:
echo 3 | sudo tee /proc/sys/vm/drop_caches # 清理PageCache/目录项/inode
高级调试方法
监控显存使用
- NVIDIA:
watch -n 1 nvidia-smi
- AMD:
watch -n 0.5 radeontop
- 通用:
sudo lsof /dev/dri/card*
查看访问显卡的设备
检查驱动日志
dmesg | grep -i "drm\|gpu\|vram" # 排查驱动错误 journalctl -b -k --gpu=drm # 查看内核GPU日志
注意事项
- 风险提示:
- 卸载驱动模块可能导致图形界面崩溃,请在终端(TTY)操作(
Ctrl+Alt+F2~F6
)。 - 生产环境慎用强制重置,可能引发数据丢失。
- 卸载驱动模块可能导致图形界面崩溃,请在终端(TTY)操作(
- 预防建议:
- 更新显卡驱动至最新版:
sudo apt upgrade nvidia-driver
(NVIDIA)或使用厂商官方源。 - 避免异常关闭GPU程序(如CUDA应用、游戏)。
- 更新显卡驱动至最新版:
- 常见误区:
- 显存≠内存:
free
命令显示的是系统内存,非显存。 - 无需定期清理:驱动会自动回收资源,仅需处理异常情况。
- 显存≠内存:
引用说明
- NVIDIA System Management Interface (nvidia-smi文档)
- AMDGPU内核驱动 (官方Wiki)
- Linux DRM(Direct Rendering Manager)子系统 (内核文档)
- 内存管理机制 (Linux内核文档)
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9115.html