Technical note
Ubuntu下调整NVIDIA显卡风扇与降低桌面显存占用
这台Ubuntu桌面机同时承担GPU计算任务,需要单独调节风扇,并让核显负责桌面输出,尽量减少独立显卡上的常驻显存。下面的操作只对应这台机器当时的硬件和驱动版本。
环境
| 项目 | 版本 |
|---|---|
| 系统 | Ubuntu22.04 |
| 显卡 | GeForceRTX2080Ti |
| 驱动 | 535.86.05 |
| CUDA | 11.8.89 |
使用NVIDIASettings调整风扇
先生成Xorg配置:
sudo nvidia-xconfig \
--allow-empty-initial-configuration \
--cool-bits=4
也可以手工增加/etc/X11/xorg.conf.d/20-nvidia.conf:
Section "Device"
Identifier "Device0"
Driver "nvidia"
Option "Coolbits" "4"
EndSection
重启后,在Xorg桌面中打开:
nvidia-settings
只控制风扇时,Coolbits使用4即可。28虽然也能打开风扇控制,但同时启用了频率偏移和超压,没有必要。这个配置属于NVIDIA驱动的高级功能,改完先观察温度和稳定性:
watch -n 1 nvidia-smi
当时还出现过nvidia settings failed to set fan speed。通过放宽Xwrapper.config权限可以绕过去,但这个处理范围过大,不建议照抄。先检查当前会话是否为Xorg、DISPLAY是否正确,以及独立显卡是否属于当前XScreen:
echo "$XDG_SESSION_TYPE"
echo "$DISPLAY"
nvidia-settings -q gpus
较新的驱动不一定继续提供相同的Coolbits能力,具体以当前驱动的README和nvidia-settings实际显示为准。
使用核显输出桌面
这台机器还有核显。让核显负责桌面输出后,独立显卡只保留计算任务,nvidia-smi中桌面进程占用的显存可以降到几MB。
操作顺序如下:
- 在BIOS中将核显设为首选显示设备。
- 把显示器接到主板视频接口。
- 将Ubuntu切换到核显模式并重启。
prime-select query
sudo prime-select intel
sudo reboot
重启后检查桌面渲染设备和独立显卡占用:
glxinfo -B | sed -n '1,12p'
nvidia-smi
还尝试过在NVIDIASettings中将Profile改为On-Demand。这台机器重启后本地没有正常显示,不过SSH仍能登录,独立显卡显存也确实只占了几MB。台式机的BIOS、视频接口和PRIME组合差异比较大,这一步不能直接当作通用配置。
如果修改Xorg配置后进不了桌面,可以从TTY或SSH禁用新增文件:
sudo mv /etc/X11/xorg.conf.d/20-nvidia.conf \
/etc/X11/xorg.conf.d/20-nvidia.conf.disabled
sudo reboot
其他工具
coolgpus可以直接设置转速或温度曲线。使用前仍要保证驱动已经开放风扇控制:
pip install coolgpus
coolgpus --speed 99 99
coolgpus --temp 20 55 80 --speed 5 30 99
使用gpu-burn测试时,可以限制时间、显存占用和显卡编号:
# 运行1小时
./gpu_burn -d 3600
# 使用50%显存
./gpu_burn -m 50%
# 只测试GPU2
./gpu_burn -i 2