相关概念介绍

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

https://medium.com/@jashaswimalyaacharjee/how-to-switch-between-nvidia-and-intel-graphics-completely-battery-saving-in-manjaro-b9254c8bf6af

深度截图_选择区域_20211113192558.png深度截图_选择区域_20211113192615.png
深度截图_选择区域_20211113192627.png
深度截图_选择区域_20211113192857.png

  1. ~ optimus-manager --switch nvidia 1
  2. ERROR: a GPU setup was initiated but Xorg post-start hook did not run.
  3. Log at /var/log/optimus-manager/switch/switch-20211113T193207.log
  4. If your login manager is GDM, make sure to follow those instructions:
  5. https://github.com/Askannz/optimus-manager#important--gnome-and-gdm-users
  6. If your display manager is neither GDM, SDDM nor LightDM, or if you don't use one, read the wiki:
  7. https://github.com/Askannz/optimus-manager/wiki/FAQ,-common-issues,-troubleshooting
  8. Cannot execute command because of previous errors.
  1. ~ yay ptimus-manager-qt 1
  2. 2 aur/optimus-manager-qt-git 1.5.3.r19.g51a67d8-1 (+3 0.00)
  3. A Qt interface for Optimus Manager that allows to configure and switch GPUs on Optimus laptops using the tray menu
  4. 1 aur/optimus-manager-qt 1.6.4-1 (+60 5.02)
  5. A Qt interface for Optimus Manager that allows to configure and switch GPUs on Optimus laptops using the tray menu
  6. ==> 要安装的包 (示例: 1 2 3, 1-3 ^4)
  7. ==> 1
  8. :: 正在检查冲突...
  9. :: 正在检查内部冲突...
  10. [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
  11. [Aur:1] optimus-manager-qt-1.6.4-1
  12. ==> 安装后删除生成依赖? [y/N] y
  13. :: (1/1) Downloaded PKGBUILD: optimus-manager-qt
  14. 1 optimus-manager-qt (构建文件已存在)
  15. ==> 显示哪些差异?
  16. ==> [N]没有 [A]全部 [Ab]中止 [I]已安装 [No]未安装 (1 2 3, 1-3, ^4)
  17. ==> n
  18. :: (1/1) 正在解析 SRCINFO: optimus-manager-qt
  19. [sudo] yx 的密码:
  20. 正在解析依赖关系...
  21. 正在查找软件包冲突...
  22. 软件包 (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
  23. 下载大小: 10.57 MiB
  24. 全部安装大小: 54.40 MiB
  25. :: 进行安装吗? [Y/n] y
  26. :: 正在获取软件包......
  27. cmake-3.21.3-1-x86_64 8.4 MiB 3.26 MiB/s 00:03 [###################################################################] 100%
  28. jsoncpp-1.9.4-1-x86_64 1265.2 KiB 3.17 MiB/s 00:00 [###################################################################] 100%
  29. extra-cmake-modules-5.87.0-1-any 515.2 KiB 2.96 MiB/s 00:00 [###################################################################] 100%
  30. libuv-1.42.0-1-x86_64 223.6 KiB 2.60 MiB/s 00:00 [###################################################################] 100%
  31. rhash-1.4.2-1-x86_64 164.8 KiB 2.18 MiB/s 00:00 [###################################################################] 100%
  32. 全部 (5/5) 10.6 MiB 3.07 MiB/s 00:03 [###################################################################] 100%
  33. (5/5) 正在检查密钥环里的密钥 [###################################################################] 100%
  34. (5/5) 正在检查软件包完整性 [###################################################################] 100%
  35. (5/5) 正在加载软件包文件 [###################################################################] 100%
  36. (5/5) 正在检查文件冲突 [###################################################################] 100%
  37. (5/5) 正在检查可用存储空间 [###################################################################] 100%
  38. :: 正在处理软件包的变化...
  39. (1/5) 正在安装 jsoncpp [###################################################################] 100%
  40. jsoncpp 的可选依赖
  41. jsoncpp-doc: documentation
  42. (2/5) 正在安装 libuv [###################################################################] 100%
  43. (3/5) 正在安装 rhash [###################################################################] 100%
  44. (4/5) 正在安装 cmake [###################################################################] 100%
  45. cmake 的可选依赖
  46. qt6-base: cmake-gui
  47. (5/5) 正在安装 extra-cmake-modules [###################################################################] 100%
  48. extra-cmake-modules 的可选依赖
  49. python-pyxdg: to generate fastlane metadata for Android apps
  50. python-requests: to generate fastlane metadata for Android apps [已安装]
  51. python-yaml: to generate fastlane metadata for Android apps [已安装]
  52. :: 正在运行事务后钩子函数...
  53. (1/5) Arming ConditionNeedsUpdate...
  54. (2/5) Refreshing PackageKit...
  55. (3/5) Updating icon theme caches...
  56. (4/5) Updating the desktop file MIME type cache...
  57. (5/5) Updating the MIME type database...
  58. ==> 正在创建软件包:optimus-manager-qt 1.6.4-1 (20211113 星期六 195107秒)
  59. ==> 获取源代码...
  60. -> 正在下载 optimus-manager-qt-1.6.4.tar.gz...
  61. % Total % Received % Xferd Average Speed Time Time Time Current
  62. Dload Upload Total Spent Left Speed
  63. 100 131 100 131 0 0 190 0 --:--:-- --:--:-- --:--:-- 190
  64. 100 132 100 132 0 0 122 0 0:00:01 0:00:01 --:--:-- 128k
  65. 100 355k 0 355k 0 0 163k 0 --:--:-- 0:00:02 --:--:-- 972k
  66. ==> 正在验证 source 文件,使用sha256sums...
  67. optimus-manager-qt-1.6.4.tar.gz ... 通过
  68. -> extra-cmake-modules 未满足,正在刷新安装队列
  69. ==> 正在创建软件包:optimus-manager-qt 1.6.4-1 (20211113 星期六 195110秒)
  70. ==> 正在检查运行时依赖关系...
  71. ==> 正在检查编译时依赖关系
  72. ==> 获取源代码...
  73. -> 找到 optimus-manager-qt-1.6.4.tar.gz
  74. ==> 正在验证 source 文件,使用sha256sums...
  75. optimus-manager-qt-1.6.4.tar.gz ... 通过
  76. ==> 正在删除现存的 $srcdir/ 目录...
  77. ==> 正在释放源码...
  78. -> 正在解压缩 optimus-manager-qt-1.6.4.tar.gz,使用 bsdtar
  79. ==> 源代码已就绪。
  80. ==> 正在创建软件包:optimus-manager-qt 1.6.4-1 (20211113 星期六 195112秒)
  81. ==> 正在检查运行时依赖关系...
  82. ==> 正在检查编译时依赖关系
  83. ==> 警告: 使用现存的 $srcdir/
  84. ==> 正在开始 build()...
  85. -- The CXX compiler identification is GNU 11.1.0
  86. -- Detecting CXX compiler ABI info
  87. -- Detecting CXX compiler ABI info - done
  88. -- Check for working CXX compiler: /usr/bin/c++ - skipped
  89. -- Detecting CXX compile features
  90. -- Detecting CXX compile features - done
  91. -- Configuring done
  92. -- Generating done
  93. -- Build files have been written to: /home/yx/.cache/yay/optimus-manager-qt/src/optimus-manager-qt-1.6.4/build
  94. [ 3%] Automatic MOC and UIC for target SingleApplication
  95. [ 3%] Built target SingleApplication_autogen
  96. [ 7%] Building CXX object _deps/singleapplication-build/CMakeFiles/SingleApplication.dir/SingleApplication_autogen/mocs_compilation.cpp.o
  97. [ 10%] Building CXX object _deps/singleapplication-build/CMakeFiles/SingleApplication.dir/singleapplication.cpp.o
  98. [ 14%] Building CXX object _deps/singleapplication-build/CMakeFiles/SingleApplication.dir/singleapplication_p.cpp.o
  99. [ 17%] Linking CXX static library libSingleApplication.a
  100. [ 17%] Built target SingleApplication
  101. [ 21%] Automatic MOC and UIC for target optimus-manager-qt
  102. [ 21%] Built target optimus-manager-qt_autogen
  103. [ 25%] Generating optimus-manager-qt_zh.qm
  104. Updating '/home/yx/.cache/yay/optimus-manager-qt/src/optimus-manager-qt-1.6.4/build/optimus-manager-qt_zh.qm'...
  105. Generated 125 translation(s) (32 finished and 93 unfinished)
  106. [ 28%] Automatic RCC for _deps/masalla-src/masalla/masalla.qrc
  107. [ 32%] Automatic RCC for _deps/circleflags-src/flags/flags.qrc
  108. [ 35%] Generating optimus-manager-qt_de.qm
  109. Updating '/home/yx/.cache/yay/optimus-manager-qt/src/optimus-manager-qt-1.6.4/build/optimus-manager-qt_de.qm'...
  110. Generated 125 translation(s) (62 finished and 63 unfinished)
  111. [ 39%] Generating optimus-manager-qt_es.qm
  112. Updating '/home/yx/.cache/yay/optimus-manager-qt/src/optimus-manager-qt-1.6.4/build/optimus-manager-qt_es.qm'...
  113. Generated 125 translation(s) (59 finished and 66 unfinished)
  114. [ 42%] Generating optimus-manager-qt_fi.qm
  115. Updating '/home/yx/.cache/yay/optimus-manager-qt/src/optimus-manager-qt-1.6.4/build/optimus-manager-qt_fi.qm'...
  116. Generated 125 translation(s) (125 finished and 0 unfinished)
  117. [ 46%] Generating optimus-manager-qt_hu.qm
  118. Updating '/home/yx/.cache/yay/optimus-manager-qt/src/optimus-manager-qt-1.6.4/build/optimus-manager-qt_hu.qm'...
  119. Generated 135 translation(s) (135 finished and 0 unfinished)
  120. [ 50%] Generating optimus-manager-qt_pt.qm
  121. Updating '/home/yx/.cache/yay/optimus-manager-qt/src/optimus-manager-qt-1.6.4/build/optimus-manager-qt_pt.qm'...
  122. Generated 129 translation(s) (129 finished and 0 unfinished)
  123. [ 53%] Generating optimus-manager-qt_ro.qm
  124. Updating '/home/yx/.cache/yay/optimus-manager-qt/src/optimus-manager-qt-1.6.4/build/optimus-manager-qt_ro.qm'...
  125. Generated 125 translation(s) (125 finished and 0 unfinished)
  126. [ 57%] Generating optimus-manager-qt_ru.qm
  127. Updating '/home/yx/.cache/yay/optimus-manager-qt/src/optimus-manager-qt-1.6.4/build/optimus-manager-qt_ru.qm'...
  128. Generated 135 translation(s) (135 finished and 0 unfinished)
  129. [ 60%] Generating optimus-manager-qt_tr.qm
  130. Updating '/home/yx/.cache/yay/optimus-manager-qt/src/optimus-manager-qt-1.6.4/build/optimus-manager-qt_tr.qm'...
  131. Generated 125 translation(s) (63 finished and 62 unfinished)
  132. [ 64%] Generating optimus-manager-qt_uk.qm
  133. Updating '/home/yx/.cache/yay/optimus-manager-qt/src/optimus-manager-qt-1.6.4/build/optimus-manager-qt_uk.qm'...
  134. Generated 135 translation(s) (135 finished and 0 unfinished)
  135. [ 67%] Building CXX object CMakeFiles/optimus-manager-qt.dir/optimus-manager-qt_autogen/mocs_compilation.cpp.o
  136. [ 71%] Building CXX object CMakeFiles/optimus-manager-qt.dir/src/appsettings.cpp.o
  137. [ 75%] Building CXX object CMakeFiles/optimus-manager-qt.dir/src/daemonclient.cpp.o
  138. [ 78%] Building CXX object CMakeFiles/optimus-manager-qt.dir/src/main.cpp.o
  139. [ 82%] Building CXX object CMakeFiles/optimus-manager-qt.dir/src/optimusmanager.cpp.o
  140. [ 85%] Building CXX object CMakeFiles/optimus-manager-qt.dir/src/optimussettings.cpp.o
  141. [ 89%] Building CXX object CMakeFiles/optimus-manager-qt.dir/src/settingsdialog.cpp.o
  142. [ 92%] Building CXX object CMakeFiles/optimus-manager-qt.dir/optimus-manager-qt_autogen/XI3V7B3WR2/qrc_flags.cpp.o
  143. [ 96%] Building CXX object CMakeFiles/optimus-manager-qt.dir/optimus-manager-qt_autogen/QPSOK6M4KT/qrc_masalla.cpp.o
  144. [100%] Linking CXX executable optimus-manager-qt
  145. [100%] Built target optimus-manager-qt
  146. ==> 正在进入 fakeroot 环境...
  147. ==> 正在开始 package()...
  148. -- Install configuration: ""
  149. -- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/bin/optimus-manager-qt
  150. -- 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
  151. -- 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
  152. -- 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
  153. -- 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
  154. -- 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
  155. -- 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
  156. -- 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
  157. -- 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
  158. -- 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
  159. -- 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
  160. -- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/applications/io.optimus_manager.OptimusManagerQt.desktop
  161. -- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/128x128/apps/optimus-manager.svg
  162. -- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/16x16/apps/optimus-manager.svg
  163. -- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/16x16/status/cpu.svg
  164. -- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/16x16/status/prime-hybrid.svg
  165. -- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/16x16/status/prime-nvidia.svg
  166. -- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/22x22/apps/optimus-manager.svg
  167. -- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/22x22/status/cpu.svg
  168. -- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/22x22/status/prime-hybrid.svg
  169. -- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/22x22/status/prime-nvidia.svg
  170. -- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/24x24/apps/optimus-manager.svg
  171. -- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/24x24/status/cpu.svg
  172. -- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/24x24/status/prime-intel.svg
  173. -- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/24x24/status/prime-nvidia.svg
  174. -- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/256x256/apps/optimus-manager.svg
  175. -- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/48x48/apps/optimus-manager.svg
  176. -- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/512x512/apps/optimus-manager.svg
  177. -- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/64x64/apps/optimus-manager.svg
  178. -- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/96x96/apps/optimus-manager.svg
  179. -- Installing: /home/yx/.cache/yay/optimus-manager-qt/pkg/optimus-manager-qt/usr/share/icons/hicolor/scalable/apps/optimus-manager.svg
  180. ==> 正在清理安装...
  181. -> 正在删除 libtool 文件...
  182. -> 正在清除不打算要的文件...
  183. -> 正在移除静态库文件...
  184. -> 正在从二进制文件和库中清除不需要的系统符号...
  185. -> 正在压缩 man info 文档...
  186. ==> 正在检查打包问题...
  187. ==> 正在构建软件包"optimus-manager-qt"...
  188. -> 正在生成 .PKGINFO 文件...
  189. -> 正在生成 .BUILDINFO 文件...
  190. -> 正在生成 .MTREE 文件...
  191. -> 正在压缩软件包...
  192. ==> 正在离开 fakeroot 环境。
  193. ==> 完成创建:optimus-manager-qt 1.6.4-1 (20211113 星期六 195157秒)
  194. ==> 清理中...
  195. 正在加载软件包...
  196. 正在解析依赖关系...
  197. 正在查找软件包冲突...
  198. 软件包 (1) optimus-manager-qt-1.6.4-1
  199. 全部安装大小: 0.78 MiB
  200. :: 进行安装吗? [Y/n]
  201. (1/1) 正在检查密钥环里的密钥 [###################################################################] 100%
  202. (1/1) 正在检查软件包完整性 [###################################################################] 100%
  203. (1/1) 正在加载软件包文件 [###################################################################] 100%
  204. (1/1) 正在检查文件冲突 [###################################################################] 100%
  205. (1/1) 正在检查可用存储空间 [###################################################################] 100%
  206. :: 正在处理软件包的变化...
  207. (1/1) 正在安装 optimus-manager-qt [###################################################################] 100%
  208. :: 正在运行事务后钩子函数...
  209. (1/4) Arming ConditionNeedsUpdate...
  210. (2/4) Refreshing PackageKit...
  211. (3/4) Updating icon theme caches...
  212. (4/4) Updating the desktop file MIME type cache...
  213. 正在检查依赖关系...
  214. 软件包 (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
  215. 全部移去体积: 54.40 MiB
  216. :: 打算删除这些软件包吗? [Y/n]
  217. :: 正在处理软件包的变化...
  218. (1/5) 正在删除 extra-cmake-modules [###################################################################] 100%
  219. (2/5) 正在删除 cmake [###################################################################] 100%
  220. (3/5) 正在删除 rhash [###################################################################] 100%
  221. (4/5) 正在删除 libuv [###################################################################] 100%
  222. (5/5) 正在删除 jsoncpp [###################################################################] 100%
  223. :: 正在运行事务后钩子函数...
  224. (1/5) Arming ConditionNeedsUpdate...
  225. (2/5) Refreshing PackageKit...
  226. (3/5) Updating icon theme caches...
  227. (4/5) Updating the desktop file MIME type cache...
  228. (5/5) Updating the MIME type database...
  1. ~ ls /etc/X11/xorg.conf.d
  2. 00-keyboard.conf 10-optimus-manager.conf 30-touchpad.conf
  3. /etc sudo find -name "nvidia.*" 1
  4. [sudo] yx 的密码:
  5. ./X11/mhwd.d/nvidia.conf
  6. /etc ls X11/mhwd.d
  7. nvidia.conf
  8. /etc ls X11/
  9. mhwd.d xinit xorg.conf.d
  10. /etc sudo find -name "xorg.conf" 1
  11. /etc
  12. /etc cd /etc/X11/mhwd.d
  13. /etc/X11/mhwd.d ls
  14. nvidia.conf
  15. /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玩网页游戏 网页不卡 噪音大