等等党离 3080 买 3080 的时候不远了。矿潮退去,但 40 系还没有发布,即便现在一张箱说全的 3080 已经进入 3500 块钱的价位,相信很多臭打游戏的依然持币观望,或者索性等 40 系发布后观看空中飞人表演。不过像琐叔这样把机器学习作为副业来搞的中年男人,看到这矿卡的价格,还是有些心动的。矿卡到底能不能买,这里不下结论,因为这事儿三分靠运气、七分靠人品,大家都别买,我反正是准备伺机买个几张。
借着这个话题,我来讲讲机学狗的必备技能,那就是在 Linux 下对 NVIDIA 进行超频、设置风扇转速。这里采用的是 Debian,纯命令行方式配置,不需要借助 GUI。
我们用的发行版是 Debian 11,默认不安装桌面环境(需要安装 ssh)。
安装 NVIDIA 显卡驱动
这里以 3080 为例,我们需要到 NVIDIA 官方网站下载驱动,在命令行里赋予安装文件执行权限,然后运行它。具体安装过程不过多演示,根据提示操作即可。
wget https://us.download.nvidia.com/XFree86/Linux-x86_64/515.57/NVIDIA-Linux-x86_64-515.57.run chmod +x ./NVIDIA-Linux-x86_64-515.57.run shutdown -r now
安装依赖
我们需要先安装显卡驱动之后才可以安装依赖,如果先安装依赖的话,在安装驱动的过程中会出错。
apt -y install build-essential libglvnd-dev pkg-config xorg lightdm lightdm-gtk-greeter
设置 XORG 超频参数
超频需要依赖 XORG 设置虚拟桌面,否则超频参数并不会生效。我们通过 nvidia-xconfig 来自动生成 xorg.conf (位置在 /etc/X11/xorg.conf)
nvidia-xconfig --cool-bits=24 --enable-all-gpus
生成 xorg.conf 之后需要编辑这个文件,找到 “Section Screen”,并且加入以下设置:
Option "AllowEmptyInitialConfiguration" "True" Option "ConnectedMonitor" "DFP-0" Option "Interactive" "False"
这里每一个 section 对应一张显卡的虚拟桌面,我这边总共有 6 张显卡,所以设置好之后是这样的(以下内容只是一个 exmaple ,请勿直接使用):
Section "Screen" Identifier "Screen0" Device "Device0" Monitor "Monitor0" DefaultDepth 24 Option "AllowEmptyInitialConfiguration" "True" Option "ConnectedMonitor" "DFP-0" Option "Interactive" "False" Option "Coolbits" "28" SubSection "Display" Depth 24 EndSubSection EndSection Section "Screen" Identifier "Screen1" Device "Device1" Monitor "Monitor1" Option "AllowEmptyInitialConfiguration" "True" Option "ConnectedMonitor" "DFP-0" Option "Interactive" "False" DefaultDepth 24 Option "Coolbits" "24" SubSection "Display" Depth 24 EndSubSection EndSection Section "Screen" Identifier "Screen2" Device "Device2" Monitor "Monitor2" DefaultDepth 24 Option "AllowEmptyInitialConfiguration" "True" Option "ConnectedMonitor" "DFP-0" Option "Interactive" "False" Option "Coolbits" "24" SubSection "Display" Depth 24 EndSubSection EndSection Section "Screen" Identifier "Screen3" Device "Device3" Monitor "Monitor3" DefaultDepth 24 Option "AllowEmptyInitialConfiguration" "True" Option "ConnectedMonitor" "DFP-0" Option "Interactive" "False" Option "Coolbits" "24" SubSection "Display" Depth 24 EndSubSection EndSection Section "Screen" Identifier "Screen4" Device "Device4" Monitor "Monitor4" DefaultDepth 24 Option "AllowEmptyInitialConfiguration" "True" Option "ConnectedMonitor" "DFP-0" Option "Interactive" "False" Option "Coolbits" "24" SubSection "Display" Depth 24 EndSubSection EndSection Section "Screen" Identifier "Screen5" Device "Device5" Option "AllowEmptyInitialConfiguration" "True" Option "ConnectedMonitor" "DFP-0" Option "Interactive" "False" Monitor "Monitor5" DefaultDepth 24 Option "Coolbits" "24" SubSection "Display" Depth 24 EndSubSection EndSection
为了防止其他程序对 xorg.conf 进行修改,我们需要对它进行改动保护:
chattr +i /etc/X11/xorg.conf
这一步可选,但建议设置。后期如果需要对文件进行改动,可以去掉保护:
chattr -i /etc/X11/xorg.conf
设置开机启动 lightdm
systemctl enable lightdm
设置完之后重启,通过 nvidia-smi 命令查看显卡状态,看到 xorg 占用显卡进程就算成功了。
| 0 N/A N/A 572 G /usr/lib/xorg/Xorg 6MiB | | 1 N/A N/A 572 G /usr/lib/xorg/Xorg 6MiB | | 2 N/A N/A 572 G /usr/lib/xorg/Xorg 6MiB | | 3 N/A N/A 572 G /usr/lib/xorg/Xorg 9MiB | | 4 N/A N/A 572 G /usr/lib/xorg/Xorg 9MiB | | 5 N/A N/A 572 G /usr/lib/xorg/Xorg 9MiB |
超频与风扇转速设置
通过刚才一通配置,开机应该就通过 lightdm 自动启动了 X。接下来介绍几个关键设置,分别是开启 persistence mode (持久化模式)、设置显卡最大功率值、设置 core clock、锁定 core clock、设置 Mem Clock 以及风扇转速。
开启 persistence mode
nvidia-smi -pm ENABLED
以上命令默认开启所有显卡的持久化模式。如果想单独对某张显卡开启,可以用下面的命令:
nvidia-smi -i 0 -pm ENABLED
这里的 0 是显卡 ID,对应的是 nvidia-smi 命令显示的 GPU 编号。
设置显卡最大功率
nvidia-smi -pl 280
以上命令默认对所有显卡设置,单独设置某张显卡可以添加 -i 参数:
nvidia-smi -i 0 -pl 280
-pl 后面的数值指的是功率数值,单位是 W。这里代表将 0 号显卡的功率设置为 280 瓦。
设置 Core Clock
Core Clock 是显卡核心频率,矿工玩降压超频,一般都会将 Core Clock 频率降低,我们这里加 100。
DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 nvidia-settings -a '[gpu:0]/GPUGraphicsClockOffset[4]=100'
这里的 GPU:0 代表第 0 张显卡,每张显卡的 Core Clock 需要分开设置,具体参考 nvidia-smi 命令中的 GPU ID,Offset 后面的数值一般不需要动,默认支持 30 系。
锁定 Core Clock
有些时候我们需要把核心频率限制在某个值以内(比如矿老板),这时候需要锁定 Core Clock:
nvidia-settings -i 0 -lgc 1400
lgc = Lock GPU Clock
为了调试,我们可以解锁 Core Clock 并重新设置,解锁命令是:
nvidia-settings -i 0 -rgc
rgc = Reset GPU Clock
设置 Mem Clock
一般来说 Core Clock 设置需要非常谨慎,因为核心频率太高可能会 boom 。相比起 Core Clock ,内存频率的超频幅度会大得多。比如我们将 GPU 0 的内存频率增加 2200 :
DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 nvidia-settings -a '[gpu:0]/GPUMemoryTransferRateOffset[4]=2200'
设置风扇转速
3080 的 GDDR6X 向来比较热,所以设置风扇转速是有必要的,我们设置到 80%:
DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 nvidia-settings -a '[gpu:0]/GPUFanControlState=1' DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 nvidia-settings -a '[fan:0]/GPUTargetFanSpeed=80'
有些显卡的多个风扇是可以单独设置的,所以需要自己测试一下,比如添加 fan:1 fan:2 等等
其他常用命令
查询 GPU 参数
DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 nvidia-settings -q '[gpu:0]/GPUPerfModes'
查询风扇数量
DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 nvidia-settings -q fans
查看显卡名称
nvidia-smi -L
查看显卡名称、BUD iD 和 vBIOS 版本
nvidia-smi --query-gpu=gpu_name,gpu_bus_id,vbios_version --format=csv
查看显卡的全部参数
nvidia-smi -q
查看显卡工作情况(负载)和工作频率
nvidia-smi -q -d UTILIZATION,CLOCK
重启显卡所有设定(超频参数、风扇转速等)
nvidia-smi -r
暂且写到这里。其实不管是矿工、机学狗还是臭打游戏的,显卡超频是非常古老的玩法,只是多少和持续时间的问题,对于二手卡,尽管「默认矿」,只要价格合适,还是可以入的,至于价格多少算合适,就看个人了。毕竟当年 1080Ti 也有 1000 出头的时候,而一张 RX580 也只不过要 300 大洋。感觉绝大多数人都不在乎矿与不矿,在乎的只是矿老板 5499 买了张 3080 挖了两年之后还 5499 卖你。
大家都别等 3080 买 3080 了,等 1080 买 3080 吧。
文章评论