相关概念介绍
https://zhuanlan.zhihu.com/p/372587633 https://archived.forum.manjaro.org/t/howto-set-up-prime-output-offload-wiith-nvidia-proprietary-driver/40225
| Method | Advantages | Disadvantages |
|---|---|---|
| bumblebee, using “render offload” | Uses the dGPU only when requested, allows power saving, is the Manjaro default | Some overhead so lower raw performance |
| PRIME, using “output offload” | Uses the dGPU directly, better raw performance | dGPU and iGPU both powered on constantly, needs manual configuration |
| optimus-manager | Easy switch between iGPU and dGPU usage | Very much pre-release and under rapid development |
| video-hybrid-intel-nvidia-440xx-prime | NVIDIA’s updated render offloading. Works perfectly on supported hardware. | Only supported by 440xx and newer driver series |
- glxspheres64 图形测试程序
- nouveau :nvidia的开源驱动
- DRI_PRIME=1 glxspheres64 通过此驱动,以nvidia运行程序
- prime-on: nvidia 闭源驱动提供的脚本,以nvidia运行某个程序
使用optimus-manager




~ optimus-manager --switch nvidia 1 ✘ERROR: a GPU setup was initiated but Xorg post-start hook did not run.Log at /var/log/optimus-manager/switch/switch-20211113T193207.logIf your login manager is GDM, make sure to follow those instructions:https://github.com/Askannz/optimus-manager#important--gnome-and-gdm-usersIf your display manager is neither GDM, SDDM nor LightDM, or if you don't use one, read the wiki:https://github.com/Askannz/optimus-manager/wiki/FAQ,-common-issues,-troubleshootingCannot execute command because of previous errors.
~ yay ptimus-manager-qt 1 ✘2 aur/optimus-manager-qt-git 1.5.3.r19.g51a67d8-1 (+3 0.00)A Qt interface for Optimus Manager that allows to configure and switch GPUs on Optimus laptops using the tray menu1 aur/optimus-manager-qt 1.6.4-1 (+60 5.02)A Qt interface for Optimus Manager that allows to configure and switch GPUs on Optimus laptops using the tray menu==> 要安装的包 (示例: 1 2 3, 1-3 或 ^4)==> 1:: 正在检查冲突...:: 正在检查内部冲突...[Repo Make:5] jsoncpp-1.9.4-1 libuv-1.42.0-1 rhash-1.4.2-1 cmake-3.21.3-1 extra-cmake-modules-5.87.0-1[Aur:1] optimus-manager-qt-1.6.4-1==> 安装后删除生成依赖? [y/N] y:: (1/1) Downloaded PKGBUILD: optimus-manager-qt1 optimus-manager-qt (构建文件已存在)==> 显示哪些差异?==> [N]没有 [A]全部 [Ab]中止 [I]已安装 [No]未安装 或 (1 2 3, 1-3, ^4)==> n:: (1/1) 正在解析 SRCINFO: optimus-manager-qt[sudo] yx 的密码:正在解析依赖关系...正在查找软件包冲突...软件包 (5) cmake-3.21.3-1 extra-cmake-modules-5.87.0-1 jsoncpp-1.9.4-1 libuv-1.42.0-1 rhash-1.4.2-1下载大小: 10.57 MiB全部安装大小: 54.40 MiB:: 进行安装吗? [Y/n] y:: 正在获取软件包......cmake-3.21.3-1-x86_64 8.4 MiB 3.26 MiB/s 00:03 [###################################################################] 100%jsoncpp-1.9.4-1-x86_64 1265.2 KiB 3.17 MiB/s 00:00 [###################################################################] 100%extra-cmake-modules-5.87.0-1-any 515.2 KiB 2.96 MiB/s 00:00 [###################################################################] 100%libuv-1.42.0-1-x86_64 223.6 KiB 2.60 MiB/s 00:00 [###################################################################] 100%rhash-1.4.2-1-x86_64 164.8 KiB 2.18 MiB/s 00:00 [###################################################################] 100%全部 (5/5) 10.6 MiB 3.07 MiB/s 00:03 [###################################################################] 100%(5/5) 正在检查密钥环里的密钥 [###################################################################] 100%(5/5) 正在检查软件包完整性 [###################################################################] 100%(5/5) 正在加载软件包文件 [###################################################################] 100%(5/5) 正在检查文件冲突 [###################################################################] 100%(5/5) 正在检查可用存储空间 [###################################################################] 100%:: 正在处理软件包的变化...(1/5) 正在安装 jsoncpp [###################################################################] 100%jsoncpp 的可选依赖jsoncpp-doc: documentation(2/5) 正在安装 libuv [###################################################################] 100%(3/5) 正在安装 rhash [###################################################################] 100%(4/5) 正在安装 cmake [###################################################################] 100%cmake 的可选依赖qt6-base: cmake-gui(5/5) 正在安装 extra-cmake-modules [###################################################################] 100%extra-cmake-modules 的可选依赖python-pyxdg: to generate fastlane metadata for Android appspython-requests: to generate fastlane metadata for Android apps [已安装]python-yaml: to generate fastlane metadata for Android apps [已安装]:: 正在运行事务后钩子函数...(1/5) Arming ConditionNeedsUpdate...(2/5) Refreshing PackageKit...(3/5) Updating icon theme caches...(4/5) Updating the desktop file MIME type cache...(5/5) Updating the MIME type database...==> 正在创建软件包:optimus-manager-qt 1.6.4-1 (2021年11月13日 星期六 19时51分07秒)==> 获取源代码...-> 正在下载 optimus-manager-qt-1.6.4.tar.gz...% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed100 131 100 131 0 0 190 0 --:--:-- --:--:-- --:--:-- 190100 132 100 132 0 0 122 0 0:00:01 0:00:01 --:--:-- 128k100 355k 0 355k 0 0 163k 0 --:--:-- 0:00:02 --:--:-- 972k==> 正在验证 source 文件,使用sha256sums...optimus-manager-qt-1.6.4.tar.gz ... 通过-> extra-cmake-modules 未满足,正在刷新安装队列==> 正在创建软件包:optimus-manager-qt 1.6.4-1 (2021年11月13日 星期六 19时51分10秒)==> 正在检查运行时依赖关系...==> 正在检查编译时依赖关系==> 获取源代码...-> 找到 optimus-manager-qt-1.6.4.tar.gz==> 正在验证 source 文件,使用sha256sums...optimus-manager-qt-1.6.4.tar.gz ... 通过==> 正在删除现存的 $srcdir/ 目录...==> 正在释放源码...-> 正在解压缩 optimus-manager-qt-1.6.4.tar.gz,使用 bsdtar==> 源代码已就绪。==> 正在创建软件包:optimus-manager-qt 1.6.4-1 (2021年11月13日 星期六 19时51分12秒)==> 正在检查运行时依赖关系...==> 正在检查编译时依赖关系==> 警告: 使用现存的 $srcdir/ 树==> 正在开始 build()...-- The CXX compiler identification is GNU 11.1.0-- Detecting CXX compiler ABI info-- Detecting CXX compiler ABI info - done-- Check for working CXX compiler: /usr/bin/c++ - skipped-- Detecting CXX compile features-- Detecting CXX compile features - done-- Configuring done-- Generating done-- Build files have been written to: /home/yx/.cache/yay/optimus-manager-qt/src/optimus-manager-qt-1.6.4/build[ 3%] Automatic MOC and UIC for target SingleApplication[ 3%] Built target SingleApplication_autogen[ 7%] Building CXX object _deps/singleapplication-build/CMakeFiles/SingleApplication.dir/SingleApplication_autogen/mocs_compilation.cpp.o[ 10%] Building CXX object _deps/singleapplication-build/CMakeFiles/SingleApplication.dir/singleapplication.cpp.o[ 14%] Building CXX object _deps/singleapplication-build/CMakeFiles/SingleApplication.dir/singleapplication_p.cpp.o[ 17%] Linking CXX static library libSingleApplication.a[ 17%] Built target SingleApplication[ 21%] Automatic MOC and UIC for target optimus-manager-qt[ 21%] Built target optimus-manager-qt_autogen[ 25%] Generating optimus-manager-qt_zh.qmUpdating '/home/yx/.cache/yay/optimus-manager-qt/src/optimus-manager-qt-1.6.4/build/optimus-manager-qt_zh.qm'...Generated 125 translation(s) (32 finished and 93 unfinished)[ 28%] Automatic RCC for _deps/masalla-src/masalla/masalla.qrc[ 32%] Automatic RCC for _deps/circleflags-src/flags/flags.qrc[ 35%] Generating optimus-manager-qt_de.qmUpdating '/home/yx/.cache/yay/optimus-manager-qt/src/optimus-manager-qt-1.6.4/build/optimus-manager-qt_de.qm'...Generated 125 translation(s) (62 finished and 63 unfinished)[ 39%] Generating optimus-manager-qt_es.qmUpdating '/home/yx/.cache/yay/optimus-manager-qt/src/optimus-manager-qt-1.6.4/build/optimus-manager-qt_es.qm'...Generated 125 translation(s) (59 finished and 66 unfinished)[ 42%] Generating optimus-manager-qt_fi.qmUpdating '/home/yx/.cache/yay/optimus-manager-qt/src/optimus-manager-qt-1.6.4/build/optimus-manager-qt_fi.qm'...Generated 125 translation(s) (125 finished and 0 unfinished)[ 46%] Generating optimus-manager-qt_hu.qmUpdating '/home/yx/.cache/yay/optimus-manager-qt/src/optimus-manager-qt-1.6.4/build/optimus-manager-qt_hu.qm'...Generated 135 translation(s) (135 finished and 0 unfinished)[ 50%] Generating optimus-manager-qt_pt.qmUpdating '/home/yx/.cache/yay/optimus-manager-qt/src/optimus-manager-qt-1.6.4/build/optimus-manager-qt_pt.qm'...Generated 129 translation(s) (129 finished and 0 unfinished)[ 53%] Generating optimus-manager-qt_ro.qmUpdating '/home/yx/.cache/yay/optimus-manager-qt/src/optimus-manager-qt-1.6.4/build/optimus-manager-qt_ro.qm'...Generated 125 translation(s) (125 finished and 0 unfinished)[ 57%] Generating optimus-manager-qt_ru.qmUpdating '/home/yx/.cache/yay/optimus-manager-qt/src/optimus-manager-qt-1.6.4/build/optimus-manager-qt_ru.qm'...Generated 135 translation(s) (135 finished and 0 unfinished)[ 60%] Generating optimus-manager-qt_tr.qmUpdating '/home/yx/.cache/yay/optimus-manager-qt/src/optimus-manager-qt-1.6.4/build/optimus-manager-qt_tr.qm'...Generated 125 translation(s) (63 finished and 62 unfinished)[ 64%] Generating optimus-manager-qt_uk.qmUpdating '/home/yx/.cache/yay/optimus-manager-qt/src/optimus-manager-qt-1.6.4/build/optimus-manager-qt_uk.qm'...Generated 135 translation(s) (135 finished and 0 unfinished)[ 67%] Building CXX object CMakeFiles/optimus-manager-qt.dir/optimus-manager-qt_autogen/mocs_compilation.cpp.o[ 71%] Building CXX object CMakeFiles/optimus-manager-qt.dir/src/appsettings.cpp.o[ 75%] Building CXX object CMakeFiles/optimus-manager-qt.dir/src/daemonclient.cpp.o[ 78%] Building CXX object CMakeFiles/optimus-manager-qt.dir/src/main.cpp.o[ 82%] Building CXX object CMakeFiles/optimus-manager-qt.dir/src/optimusmanager.cpp.o[ 85%] Building CXX object CMakeFiles/optimus-manager-qt.dir/src/optimussettings.cpp.o[ 89%] Building CXX object CMakeFiles/optimus-manager-qt.dir/src/settingsdialog.cpp.o[ 92%] Building CXX object CMakeFiles/optimus-manager-qt.dir/optimus-manager-qt_autogen/XI3V7B3WR2/qrc_flags.cpp.o[ 96%] Building CXX object CMakeFiles/optimus-manager-qt.dir/optimus-manager-qt_autogen/QPSOK6M4KT/qrc_masalla.cpp.o[100%] Linking CXX executable optimus-manager-qt[100%] Built target optimus-manager-qt==> 正在进入 fakeroot 环境...==> 正在开始 package()...-- Install configuration: ""-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/bin/optimus-manager-qt-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/Optimus Manager/Optimus Manager Qt/translations/optimus-manager-qt_de.qm-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/Optimus Manager/Optimus Manager Qt/translations/optimus-manager-qt_es.qm-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/Optimus Manager/Optimus Manager Qt/translations/optimus-manager-qt_fi.qm-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/Optimus Manager/Optimus Manager Qt/translations/optimus-manager-qt_hu.qm-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/Optimus Manager/Optimus Manager Qt/translations/optimus-manager-qt_pt.qm-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/Optimus Manager/Optimus Manager Qt/translations/optimus-manager-qt_ro.qm-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/Optimus Manager/Optimus Manager Qt/translations/optimus-manager-qt_ru.qm-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/Optimus Manager/Optimus Manager Qt/translations/optimus-manager-qt_tr.qm-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/Optimus Manager/Optimus Manager Qt/translations/optimus-manager-qt_uk.qm-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/Optimus Manager/Optimus Manager Qt/translations/optimus-manager-qt_zh.qm-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/applications/io.optimus_manager.OptimusManagerQt.desktop-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/128x128/apps/optimus-manager.svg-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/16x16/apps/optimus-manager.svg-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/16x16/status/cpu.svg-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/16x16/status/prime-hybrid.svg-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/16x16/status/prime-nvidia.svg-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/22x22/apps/optimus-manager.svg-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/22x22/status/cpu.svg-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/22x22/status/prime-hybrid.svg-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/22x22/status/prime-nvidia.svg-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/24x24/apps/optimus-manager.svg-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/24x24/status/cpu.svg-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/24x24/status/prime-intel.svg-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/24x24/status/prime-nvidia.svg-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/256x256/apps/optimus-manager.svg-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/48x48/apps/optimus-manager.svg-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/512x512/apps/optimus-manager.svg-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/64x64/apps/optimus-manager.svg-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/96x96/apps/optimus-manager.svg-- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/scalable/apps/optimus-manager.svg==> 正在清理安装...-> 正在删除 libtool 文件...-> 正在清除不打算要的文件...-> 正在移除静态库文件...-> 正在从二进制文件和库中清除不需要的系统符号...-> 正在压缩 man 及 info 文档...==> 正在检查打包问题...==> 正在构建软件包"optimus-manager-qt"...-> 正在生成 .PKGINFO 文件...-> 正在生成 .BUILDINFO 文件...-> 正在生成 .MTREE 文件...-> 正在压缩软件包...==> 正在离开 fakeroot 环境。==> 完成创建:optimus-manager-qt 1.6.4-1 (2021年11月13日 星期六 19时51分57秒)==> 清理中...正在加载软件包...正在解析依赖关系...正在查找软件包冲突...软件包 (1) optimus-manager-qt-1.6.4-1全部安装大小: 0.78 MiB:: 进行安装吗? [Y/n](1/1) 正在检查密钥环里的密钥 [###################################################################] 100%(1/1) 正在检查软件包完整性 [###################################################################] 100%(1/1) 正在加载软件包文件 [###################################################################] 100%(1/1) 正在检查文件冲突 [###################################################################] 100%(1/1) 正在检查可用存储空间 [###################################################################] 100%:: 正在处理软件包的变化...(1/1) 正在安装 optimus-manager-qt [###################################################################] 100%:: 正在运行事务后钩子函数...(1/4) Arming ConditionNeedsUpdate...(2/4) Refreshing PackageKit...(3/4) Updating icon theme caches...(4/4) Updating the desktop file MIME type cache...正在检查依赖关系...软件包 (5) cmake-3.21.3-1 extra-cmake-modules-5.87.0-1 jsoncpp-1.9.4-1 libuv-1.42.0-1 rhash-1.4.2-1全部移去体积: 54.40 MiB:: 打算删除这些软件包吗? [Y/n]:: 正在处理软件包的变化...(1/5) 正在删除 extra-cmake-modules [###################################################################] 100%(2/5) 正在删除 cmake [###################################################################] 100%(3/5) 正在删除 rhash [###################################################################] 100%(4/5) 正在删除 libuv [###################################################################] 100%(5/5) 正在删除 jsoncpp [###################################################################] 100%:: 正在运行事务后钩子函数...(1/5) Arming ConditionNeedsUpdate...(2/5) Refreshing PackageKit...(3/5) Updating icon theme caches...(4/5) Updating the desktop file MIME type cache...(5/5) Updating the MIME type database...
~ ls /etc/X11/xorg.conf.d ✔00-keyboard.conf 10-optimus-manager.conf 30-touchpad.conf /etc sudo find -name "nvidia.*" 1 ✘[sudo] yx 的密码:./X11/mhwd.d/nvidia.conf /etc ls X11/mhwd.d ✔nvidia.conf /etc ls X11/ ✔mhwd.d xinit xorg.conf.d /etc sudo find -name "xorg.conf" 1 ✘ /etc /etc cd /etc/X11/mhwd.d ✔ /etc/X11/mhwd.d ls ✔nvidia.conf /etc/X11/mhwd.d sudo mv nvidia.conf nvidia.conf.bck
https://github.com/Askannz/optimus-manager/issues/435
运行optimus-manager —print-mode。或者,您可以运行glxinfo | grep “OpenGL renderer”以获取当前 GPU 的名称。
使用optimus-manager-qt 切换到nvidia不成功
通过optimus-manager-qt 设置了开启启动nvidia了,开机桌面漰溃了O_O,只能crtl+alt+f2进入tty,修改Optimus了-manage的配置,还原开启使用混合模式。
通过journalctl -u optimus-manager.service看到缺少acpi_call的错误,就根据内核安装了对应acpi_call包。不报错了,但是切换不成功。
重新安装了一次能用了
使用prime-on
使用nvidia官方驱动自带的prime-on运行程序,但是效果一般般。可以修该桌面启动项,在/usr/share/applications里,启动命令前加上prime-on
运行效果
| 系统 | 方式 | 指标1 | 指标2 |
|---|---|---|---|
| manjaro | 集中显卡运行两个firefox玩网页游戏 | 切换网页卡 | 一定的噪音 |
| prime-on运行两个firefox玩网页游戏 | 切换网页卡 | 噪音大 | |
| 使用optimus-manager切换到nvidia,运行两个firefox玩网页游戏 | 切换网页卡 | 噪音大 | |
| windows | 运行两个edge玩网页游戏 | 网页不卡 | 噪音大 |
