每次使用浏览器看 B 站视频时,CPU 占用总是莫名地高, 8 核心的 i7-10875H
开一个视频就到了稳定的 15% 占用,温度也从待机 55 度上升了 10 多度。我的风扇控制比较激进,超过 55 就是中档,65 以上直接全速,所以导致一开视频,风扇就直接拉满,忍受了这个问题很久了,今天决定着手解决下。
首先问题的原因我其实是知道的,在没有开启 GPU 加速的情况下,视频解码只能靠 CPU 软解,所以导致 CPU 负载较大。但长期以来我是不装 Nvidia 驱动的,因为几乎用不到,徒增功耗,还可能增加滚挂的机率。
安装 Nvidia 驱动
详细安装过程可参照 Arch Wiki
https://wiki.archlinux.org/title/NVIDIA_Optimus
1 2 3
| sudo pacman -S nvidia-lts nvidia-utils nvidia-settings xorg-server-devel opencl-nvidia libva-utils
yay -S libva-nvidia-driver
|
`注意这里安装的是 lts 的驱动程序,要求系统内核也是 lts 的,即 linux-lts, 否则内核不匹配会无法加载驱动程序``
禁用 Nouveau
blacklist-nvidia-nouveau.conf
修复画面撕裂
nvidia-drm-nomodeset.conf
1
| options nvidia-drm modeset=1
|
修改 xinitrc 文件
我是使用 startx
启动图形化界面的,直接在 .xinitrc
文件开头加入下面两行命令即可。如果使用的是 lightdm
等也可以加到对应的初始化脚本中去。
1 2
| xrandr --setprovideroutputsource modesetting NVIDIA-0 xrandr --auto
|
配置检查
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| ➜ ~ vainfo vainfo: VA-API version: 1.13 (libva 2.13.0) vainfo: Driver version: VA-API NVDEC driver vainfo: Supported profile and entrypoints VAProfileMPEG2Simple : VAEntrypointVLD VAProfileMPEG2Main : VAEntrypointVLD VAProfileVC1Simple : VAEntrypointVLD VAProfileVC1Main : VAEntrypointVLD VAProfileVC1Advanced : VAEntrypointVLD <unknown profile> : VAEntrypointVLD VAProfileH264Main : VAEntrypointVLD VAProfileH264High : VAEntrypointVLD VAProfileH264ConstrainedBaseline: VAEntrypointVLD VAProfileHEVCMain : VAEntrypointVLD VAProfileVP8Version0_3 : VAEntrypointVLD VAProfileVP9Profile0 : VAEntrypointVLD
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| ➜ ~ nvidia-smi Sat Mar 12 22:21:04 2022 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 510.54 Driver Version: 510.54 CUDA Version: 11.6 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 NVIDIA GeForce ... Off | 00000000:01:00.0 Off | N/A | | N/A 57C P5 23W / N/A | 516MiB / 6144MiB | 1% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | 0 N/A N/A 1337 G /usr/lib/Xorg 512MiB | | 0 N/A N/A 1402 G picom 2MiB | +-----------------------------------------------------------------------------+
|
Firefox 设置
在 about:config
中按照下表设置对应参数的值
Key |
Value |
media.ffmpeg.vaapi.enabled |
true |
media.rdd-ffmpeg.enabled |
true |
media.av1.enabled |
false |
gfx.x11-egl.force-enabled |
true |
widget.dmabuf.force-enabled |
true |
详见 https://github.com/elFarto/nvidia-vaapi-driver/#firefox
设置环境变量
1 2
| LIBVA_DRIVER_NAME=nvidia MOZ_DISABLE_RDD_SANDBOX=1
|
启动火狐,打开视频观察效果
可以看到 GPU 开始干活了,CPU 回到正常的 3%
占用, 温度也没有超过 60 度,嗯,成功。