Technical note

Ubuntu下调整NVIDIA显卡风扇与降低桌面显存占用

这台Ubuntu桌面机同时承担GPU计算任务,需要单独调节风扇,并让核显负责桌面输出,尽量减少独立显卡上的常驻显存。下面的操作只对应这台机器当时的硬件和驱动版本。

环境

项目版本
系统Ubuntu22.04
显卡GeForceRTX2080Ti
驱动535.86.05
CUDA11.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。

操作顺序如下:

  1. 在BIOS中将核显设为首选显示设备。
  2. 把显示器接到主板视频接口。
  3. 将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

参考资料