首先说明一下我的电脑配置以及准备工作:
ubuntu18.04
华硕主板z390
双卡RTX 2080Ti
准备工作:必须保证你的CPU有核显,我在平常使用的时候已经把两个显示器都插在主板上了(没有插在GPU上),且在BIOS里面"高级—北桥—显示设置—首选显卡—选为CPU),同时将iGPU设置中改为enable"了
痛点来源:
- 因为每次看到代码跑起来时候卡0总会比卡1少1GB左右的显存,有的时候就是差这么点不能跑起来,
- 还有因为卡0有用于显示输出,所以温度平常都会很高,不利于长期寿命
- 大显存被占用时使用别的浏览器或者IDE之类的东西会有延迟
放一张之前的图(拍的别人的,之前的没留一张):
可以看到总会有/usr/lib/xorg/Xorg
和/usr/bin/gnome-shell
这样的进程占用独显显存,我自己电脑占用的更大,因为有两个显示器,下面的...AAAAAAAAA= --shared-files
是开了谷歌浏览器的原因
想做的:
5. 就是没有运算的时候双卡都应该空载,只用核显做输出,当独显高负荷运转时不影响屏幕观看使用
一. 卸载原有N卡驱动
1.1A 原来用PPA安装的
我之前用PPA源安装过NVIDIA显卡驱动,是带有OpenGL,所以需要卸载重装:
sudo apt purge nvidia*
sudo apt autoremove
可用下面的命令检查一遍,是否有关nvidia的东西都卸载干净了:
dpkg -l | grep nvidia
像我的话就还有libnvidia-compute-460:amd64
这样的东西没删掉,所以我就用下面的命令手动删除了:
sudo dpkg -P <package_name> # 像我的话就是:sudo dpkg -P libnvidia-compute-460:amd64
其次有关nvidia仓库的东西也要清理,去/etc/apt/sources.list.d/
下面查看,如果没有装过别的东西的话,应该会有graphics-drivers-ubuntu-ppa-bionic.list
,这是上次安装显卡驱动的时候生成的.可以用下面的删除,不放心的话可以先备份一下:
sudo rm graphics-drivers-ubuntu-ppa-bionic.list
1.1B 原来用.run文件安装的
之前用.run文件安装的显卡驱动,可以这样卸载(因为我之前没有这样安装过,这里的命令我没有试过):
sudo nvidia-uninstall
1.2 重启
完成1.1以后就可以重启了,reboot
.我重启之后没有发现显示不了或者分辨率改变的问题,因为我已经在bios里面设置为cpu为首选显示了,然后DP和HDMI线也都插在主板上了,有问题的可以从这两方面入手
二. 安装不带OpenGL的N卡驱动
这里我用的是PPA源安装的,其实步骤和原来的差不多,就是不带现在安装不带OpenGL了
2.1A 用PPA源安装
添加ppa源仓库:
sudo add-apt-repository ppa:graphics-drivers/ppa
安装无外设显示的NVIDIA驱动(这里可以用ubuntu-drivers devices
看一下推荐的版本,我个人用的是450):
sudo apt install nvidia-headless-450 nvidia-utils-450
之前安装的时候都是用的nvidia-driver-450
,这样是包括了用于外设显示的OpenGL,但是我们却不想这样.nvidia-utils-450
是为了让我们可以使用nvidia-smi
这样的工具.
注意这里不要急着重启,因为你现在重启会出现无限循环登录
安装好显卡驱动后还要进行配置文件的编写,请看步骤三
2.2B 用.run文件安装
这里依旧可以用.run文件安装,也只是不带OpenGL:
- 去官网下载所需要的.run驱动文件
- 禁用
nouveau
,通过创建/etc/modprobe.d/blacklist-nouveau.conf
文件,并写入:
blacklist nouveau
options nouveau modeset=0
- 执行下面的语句使之生效然后重启:
sudo update-initramfs -u
- 按
ctrl+alt+F1
进入tty1命令行界面,关闭lightdm这些显示服务:
sudo /etc/init.d/lightdm stop
- 运行.run文件安装驱动,这里以418版本为例,根据你自己下载的版本自行修改(一定要带命令
--no-opengl-files
):
sudo ./NVIDIA-Linux-x86_64-418.56.run --no-opengl-files
- 安装好后用
nvidia-smi
应该可以看到显卡信息了.这里最好也先不要重启,但是我没有用这样方法试过,所以也不好说,可以修到步骤三去修改配置文件
三. 配置Xorg
我们可以编写下面的配置文件来强制Xorg使用核显,新建/etc/X11/xorg.conf
文件,并用sudo权限编写如下内容:
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
EndSection
Section "Device"
Identifier "Device0"
Driver "intel"
VendorName "Intel Corporation"
BusID "PCI:0:2:0
EndSection
如果你是单个显示器,那就像这样就差不多了,只是去看一下lspci | grep VGA
输出的核显前面的填到上面的BusID
,比如我的:
如果是双显示器,模仿下面的编写:
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
EndSection
Section "Device"
Identifier "Device0"
Driver "modesetting"
VendorName "Intel Corporation"
BusID "PCI:0:2:0
Option "TearFree" "true"
Option "monitor-DP-1" "DP"
Option "monitor-HDMI-2" "HDMI"
EndSection
Section "Monitor"
Identifier "DP"
Option "Left"
Option "Primary" "true"
EndSection
Section "Monitor"
Identifier "HDMI"
Option "RightOf " "DP"
EndSection
这里解释一下,主要多了两个Section “Monitor”,第一个设置首显示器因为我用的是dp,所以写DP,位置是在左边,而第二个显示器我用的是HDMI,是在用DP的显示器的右边
然后可以重启了
用nvidia-smi
应该可以看到显卡信息,并且是空载:
虽然我不知道我的这6MB是哪里来的,不过这已经可以忽略了,大功告成!
四. 在笔记本上怎么弄
我后来又在笔记本上试了一下,配置为1660ti,发现有几个地方与上面不同的,都为实测经验之谈:
1、发现笔记本用ppa源安装完之后确实也能达到0MB的显存空载,但是会有屏幕横纹出现,当用向日葵的时候屏幕会有一些黑条会浮动,后来重装ubuntu系统后用了.run方法装(唯一的与上面台式机不同就是没有编写xorg.conf去强制使用核显,这时会有xorg进程占用显存,但是非常小,只有4MB,而且不会增加,但是没有屏幕的上述问题,感觉也还是很好的)
2、当用.run装的时候需要注意几点:按ctrl+alt+F1
进入tty1命令行界面这个得针对自己电脑,比如我的惠普就是按ctrl+alt+F3
或者F4后面的几个键进入tty界面,反而按ctrl+alt+F1
是进入图形化界面,这个尝试一下即可
3、这里需要去官网下载适合自己显卡的.run文件,注意最好用最新版的,比如我用了430的没有安装成功,用了465的就成功了,还有用.run装之前你得确保你gcc和g++已经装好了,因为它要编译