laptops.rst 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333
  1. .. ARU (c) 2018 - 2025, Pavel Priluckiy, Vasiliy Stelmachenok and contributors
  2. ARU is licensed under a
  3. Creative Commons Attribution-ShareAlike 4.0 International License.
  4. You should have received a copy of the license along with this
  5. work. If not, see <https://creativecommons.org/licenses/by-sa/4.0/>.
  6. .. index:: prime, dgpu, igpu
  7. .. _hybrid_graphics:
  8. ******************************
  9. Гибридная графика в ноутбуках
  10. ******************************
  11. Гибридная графика - это аппаратная конфигурация, в которой есть две и более
  12. видеокарт, которые могут работать в тандеме друг с другом. Такой подход
  13. встречается в основном в ноутбуках, где есть интегрированная графика (iGPU) от
  14. процессора и дискретная графика (dGPU). Его основное преимущество заключается в
  15. том, что интегрированная графика должна (но не обязательно) использоваться
  16. только для малозатратных задач, таких как серфинг в Интернете, просмотр видео и
  17. т. д. А дискретная графика используется для видеоигр, видеомонтажа,
  18. 3D-моделирования и так далее. Следовательно, если два GPU разделяют "большие" и
  19. "маленькие" задачи, и в данный момент выполняются только "маленькие" задачи, то
  20. нет никакого смысла в работе dGPU, поэтому его можно просто временно отключить
  21. (то есть усыпить), тем самым значительно снизив энергопотребление. Таким
  22. образом, когда dGPU снова понадобится (мы запустим приложение, которое его
  23. использует), он проснется и возобновит работу.
  24. .. index:: prime, optimus, bumblebee
  25. .. _what_is_prime:
  26. =========================
  27. Что такое PRIME?
  28. =========================
  29. PRIME - это универсальная технология для работы с различными наборами гибридной
  30. графики в Linux, такими как NVIDIA Optimus/AMD Dynamic Switchable Graphics.
  31. PRIME Offload - это реализация идеи переноса выполнения рендеринга с одного GPU
  32. на другой, но вот отображением уже готовых кадров на экран заниматься будет тот
  33. GPU, который управляет дисплеем в данный момент, как правило это встроенная
  34. графика. Поддержка PRIME в закрытом драйвере NVIDIA фактически началась только
  35. с драйвера 435.17, поэтому если вы являетесь пользователем устаревшей ветки
  36. драйверов 390xx или даже 340xx, PRIME Offload не будет работать для вас.
  37. Обратите внимание, что автор настоятельно не рекомендует вам использовать
  38. устаревшие способы использования гибридной графики, такие как nvidia-xrun или
  39. Bumblebee. Они устарели и не поддерживаются (Bumblebee не обновлялся уже более
  40. 8 лет), работают исключительно на убогих хаках и имеют низкую
  41. производительность. В то же время открытый драйвер Nouveau поддерживает PRIME
  42. Offload, что может стать неплохой альтернативой для старых dGPU.
  43. Кроме того, пожалуйста, избегайте использования таких инструментов, как
  44. optimus-manager. Они могут показаться вам очень удобными, но поверьте, они
  45. могут вызвать множество проблем, и они вам на самом деле не нужны, если ваш
  46. графический процессор поддерживает PRIME Offload и динамическое управление
  47. питанием.
  48. .. index:: xorg, kms, modeset
  49. .. _setup_prime:
  50. ===================
  51. Настройка PRIME
  52. ===================
  53. В Arch Linux никакой дополнительной настройки системы, в частности графического
  54. сервера Xorg, не требуется. Для современных версий драйвера все должно работать
  55. из коробки при условии, что все модули NVIDIA загружаются правильно, а
  56. проверить это можно при помощи команды ``lspci -k | grep "Kernel driver in use:
  57. nvidia"``, вы уже можете полноценно использовать вашу дискретную видеокарту.
  58. .. note:: Если модули драйвера NVIDIA по какой-то причине не загружаются,
  59. убедитесь, что вы отключили *Secure Boot* в настройках UEFI.
  60. Для конфигураций, где обе видеокарты управляются открытыми драйверами Mesa (к
  61. примеру AMD+AMD, AMD+Intel или даже Intel+NVIDIA, где дискретная графика NVIDIA
  62. находится под управлением открытого драйвера Nouveau), ничего настраивать не
  63. нужно и для использования дискретной графики нужно лишь указать переменную
  64. окружения ``DRI_PRIME=1`` перед запуском приложений или игр по аналогии со
  65. всеми переменными, которые будут описаны далее для NVIDIA или использовать уже
  66. готовые графические способы.
  67. .. index:: rtd3, nvidia
  68. .. _dynamic_power_managment:
  69. ---------------------------------
  70. Динамическое управление питанием
  71. ---------------------------------
  72. Поддержка динамического управления питанием вашей дискретной видеокарты
  73. позволяет драйверу полностью отключать её питание на время простоя, то есть
  74. когда в ней нет необходимости, она просто уходит в состоянии сна не потребляя
  75. никакой энергии. К сожалению, она доступна не для всех и работает только для
  76. мобильных видеокарт NVIDIA начиная с поколения Turing (16xx/20xx) и выше. Для
  77. видеокарт поколения Ampere её поддержка включена по умолчанию и никаких
  78. дополнительных действий производить не нужно, однако если вы являетесь
  79. обладателем графики именно поколения Turing, то вам так же понадобиться создать
  80. дополнительные файлы настройки и правила udev, которые будут выполнять
  81. настройку динамического управления питания при каждом запуске. Для этого просто
  82. создайте файл под названием ``/etc/udev/rules.d/71-nvidia.rules`` со следующим
  83. содержанием:
  84. .. code-block:: shell
  85. :caption: ``sudo nano /etc/udev/rules.d/71-nvidia.rules``
  86. ACTION=="add|bind", SUBSYSTEM=="pci", DRIVERS=="nvidia", ATTR{vendor}=="0x10de", ATTR{class}=="0x03[0-9]*", TEST=="power/control", ATTR{power/control}="auto"
  87. ACTION=="remove|unbind", SUBSYSTEM=="pci", DRIVERS=="nvidia", ATTR{vendor}=="0x10de", ATTR{class}=="0x03[0-9]*", TEST=="power/control", ATTR{power/control}="on"
  88. .. warning:: Динамическое управление питание на текущий момент не работает для
  89. видеокарт поколения Turing при использовании открытых модулей драйвера
  90. NVIDIA (``nvidia-open-dkms``) [#]_.
  91. Вам также потребуется изменить значение параметра для модуля драйвера NVIDIA,
  92. который и активирует работу динамического управления питанием:
  93. .. code-block:: shell
  94. :caption: ``sudo nano /etc/modprobe.d/nvidia-dynamic-powermanagment.conf``
  95. options nvidia NVreg_DynamicPowerManagement=0x02
  96. После чего рекомендуется обновить образы initramfs через команду ``sudo
  97. mkinitcpio -P`` и перезагрузиться. Чтобы убедиться, что все работает правильно
  98. нужно проверить вывод команды ``cat /proc/driver/nvidia/gpus/*/power``, он
  99. должен быть примерно следующим::
  100. Runtime D3 status: Enabled (fine-grained)
  101. Video Memory: Active
  102. GPU Hardware Support:
  103. Video Memory Self Refresh: Supported
  104. Video Memory Off: Supported
  105. S0ix Power Management:
  106. Platform Support: Supported
  107. Status: Disabled
  108. .. index:: prime-run
  109. .. _usage_prime_offload:
  110. ============================
  111. Использование PRIME Offload
  112. ============================
  113. Чтобы указать, что вы хотите использовать дискретную графику вместо встроенной,
  114. перед запуском программы необходимо указать несколько переменных окружения::
  115. __NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only __GLX_VENDOR_LIBRARY_NAME=nvidia <program>
  116. Такой набор переменных выглядит очень громоздким и его легко забыть, поэтому вы
  117. можете установить пакет ``nvidia-prime`` (``sudo pacman -S nvidia-prime``),
  118. который содержит скрипт-псевдоним ``prime-run`` для всех этих переменных. Тогда
  119. запуск приложения с его помощью будет выглядеть следующим образом::
  120. prime-run <program>
  121. Где ``<program>`` - это имя команды, запускающей ваше приложение. Например, вы
  122. можете запустить команду ``glxinfo``, чтобы проверить корректность работы PRIME
  123. Offload::
  124. prime-run glxinfo | grep OpenGL
  125. Если вывод данной команды даёт вам упоминание вашей дискретной видеокарты,
  126. значит вы всё сделали правильно. При возникновении проблем, советуем вам
  127. перепроверить правильность установки драйвера NVIDIA и загрузки всех модулей.
  128. .. index:: plasma, gnome, cinnamon, steam, lutris
  129. .. _graphical_way:
  130. ----------------------
  131. Графический способ
  132. ----------------------
  133. Возможно, запуск всех необходимых приложений через терминал с помощью
  134. ``prime-run`` покажется вам не слишком удобным, но некоторые приложения
  135. позволяют вам указывать запуск игр/других приложений с использованием
  136. дискретной графики через специальные настройки.
  137. .. index:: lutris, games
  138. .. _lutris:
  139. ~~~~~~~
  140. Lutris
  141. ~~~~~~~
  142. Чтобы настроить запуск игр с использованием дискретной графики в Lutris, нужно
  143. зайти в настройки (три полоски в правом верхнем углу окна и кнопка
  144. *"Настройки"*). Далее перейдите в раздел *"Global options" -> "Display" ->
  145. GPU"*. Здесь вы выбираете графический процессор, с которым будет запускаться
  146. игра.
  147. .. image:: images/lutris-prime.png
  148. .. index:: steam, games
  149. .. _steam:
  150. ~~~~~~
  151. Steam
  152. ~~~~~~
  153. В Steam нет специальных настроек для запуска игр с дискретной графикой, но вы
  154. можете нажать на *"Шестеренку"* и перейти в *"Свойства"* перед запуском игры,
  155. после чего прописать команду ``prime-run %command%`` или указанные ранее
  156. переменные окружения, например:
  157. .. image:: images/steam-prime.png
  158. .. index:: desktop, prime
  159. .. _desktop_environments:
  160. ~~~~~~~~~~~~~~~~~~~~~~
  161. Графические окружения
  162. ~~~~~~~~~~~~~~~~~~~~~~
  163. Ряд пользовательских окружений таких как KDE Plasma, Cinnamon и GNOME имеют
  164. встроенную интеграцию с PRIME при помощи специального инструмента как
  165. ``switcheroo-control``. Чтобы получить заветную удобную кнопку для запуска
  166. приложений с использованием дискретной графики в данных окружениях и без
  167. необходимости лезть в терминал, вы должны установить данный пакет и включить
  168. соответствующую службу::
  169. sudo pacman -S switcheroo-control
  170. sudo systemctl enable --now switcheroo-control
  171. .. note:: Использование switcheroo-control позволяет работать описанным ниже
  172. графическим способам на всех конфигурациях PRIME, в которых даже нет NVIDIA
  173. dGPU, например AMD+AMD.
  174. .. index:: plasma
  175. .. _plasma_way:
  176. """"""""""""
  177. KDE Plasma
  178. """"""""""""
  179. После установки ``switcheroo-control`` щелкните правой кнопкой мыши на нужную
  180. вам значок приложения на рабочем столе или в меню приложений, затем перейдите в
  181. *"Свойства"* -> *"Приложение"* -> *"Дополнительные параметры"* -> *"Запускать с
  182. использованием дискретной графики"*.
  183. .. image:: images/plasma-prime.jpg
  184. .. _cinnamon_way:
  185. """"""""""
  186. Cinnamon
  187. """"""""""
  188. По аналогии с Plasma в Cinnamon, вы также можете зайти в меню приложений,
  189. кликнуть правой кнопкой мыши по значку приложения и в появившемся контекстном
  190. меню выбрать *"Свойства"*, после чего в появившемся меню поставить флажок
  191. *"Использовать выделенный графический процессор, если он доступен"*.
  192. .. image:: images/cinnamon-prime.png
  193. """""""
  194. GNOME
  195. """""""
  196. В GNOME также следует щелкнуть правой кнопкой мыши по значку приложения и
  197. выбрать *"Запустить с дискретной графикой"*. Но учтите, что GNOME не запоминает
  198. этот выбор, и в следующий раз, когда вы просто щелкните по значку, приложение
  199. все равно будет работать с интегрированной графикой.
  200. .. index:: dgpu, nvidia, x11
  201. .. _troubleshooting:
  202. ===========================
  203. Устранение проблем с PRIME
  204. ===========================
  205. .. index:: external-monitor, laggy
  206. .. _external_monitor_laggy:
  207. --------------------------------
  208. Внешний монитор сильно тормозит
  209. --------------------------------
  210. Это известная проблема с драйвером NVIDIA, связанная с тем, что порт для
  211. подключения монитором управляется NVIDIA dGPU, в то время как композитинг и
  212. отображение кадров выполняется с учетом работы iGPU. Вам следует установить
  213. последнюю версию драйвера NVIDIA и использовать Wayland с композитором,
  214. поддерживающим явную синхронизацию. Для GNOME это было исправлено в версии
  215. 46.2. Для Plasma 6 это, вероятно, было исправлено в версии 6.1, хотя некоторые
  216. пользователи сообщают о нормальной работе уже в версии 6.0. В других
  217. окружениях/оконных менеджерах эта проблема все еще присутствует, поэтому для ее
  218. устранения необходимо перейти на последнюю версию GNOME или Plasma.
  219. В случае работы в окружениях на базе протокола X11 вы также можете решить эту
  220. проблему переставив iGPU и dGPU местами, сделав тем самым дискретную графику
  221. NVIDIA главным GPU, что позволяет избавиться от тормозов. Чтобы это сделать
  222. нужно создать следующий конфиг:
  223. .. code-block:: shell
  224. :caption: ``sudo nano /etc/X11/xorg.conf.d/10-gpu.conf``
  225. Section "ServerLayout"
  226. Identifier "layout"
  227. Screen 0 "nvidia"
  228. Inactive "integrated"
  229. EndSection
  230. Section "Device"
  231. Identifier "nvidia"
  232. Driver "nvidia"
  233. BusID "PCI:1:0:0" # Например: "PCI:1:0:0"
  234. EndSection
  235. Section "Screen"
  236. Identifier "nvidia"
  237. Device "nvidia"
  238. Option "AllowEmptyInitialConfiguration"
  239. EndSection
  240. Section "Device"
  241. Identifier "integrated"
  242. Driver "modesetting"
  243. EndSection
  244. Section "Screen"
  245. Identifier "integrated"
  246. Device "integrated"
  247. EndSection
  248. В поле "BusID" вы должны указать собственное значение номера шины вашего dGPU в
  249. том формате, в котором он указан в примере. Изменить нужно лишь первую цифру из
  250. примера с ``1`` на ваш номер шины, если конечно он уже не равен ``1``. Его вы
  251. можете узнать при помощи следующей команды: ``lspci -Dd "10de:*:030x" | cut -f
  252. 2 -d ":" | awk '{x=$0+0;print x}'``. После сохранения файла и перезагрузки
  253. вашим GPU по умолчанию должна стать NVIDIA графика.
  254. .. [#] https://forums.developer.nvidia.com/t/clarifying-560-series-drivers-open-sourcedness-vs-kernel-module-type-proprietary/292698/2