Как запустить Xorg сервер на интегрированной видеокарте?

Вопрос или проблема

У меня установлены 2 выделенных графических процессора Nvidia GTX1080 и 1 интегрированный графический процессор Intel на моем компьютере. Я хочу использовать NVIDIA GPU только для научных вычислений. Даже несмотря на то, что я подключил мониторы к основной плате, сервер Xorg использует один из NVIDIA GPU и выделяет около 700 МБ памяти.

Как я могу заставить сервер Xorg использовать только Intel GPU?

Вывод lspci | grep 'VGA':

00:02.0 VGA совместимый контроллер: Intel Corporation Device 5912 (rev 04)
01:00.0 VGA совместимый контроллер: NVIDIA Corporation Device 1b80 (rev a1)
02:00.0 VGA совместимый контроллер: NVIDIA Corporation Device 1b80 (rev a1)

Вывод nvidia-smi:

Вт  2 янв  15:24:18 2018       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 384.98                 Версия драйвера: 384.98                  |
|-------------------------------+----------------------+----------------------+
| GPU  Название     Постоянство-| Bus-Id        Disp.A | Внеполосные ECC  |
| Вент. Темп.  Перф.  Потр./Огр.|    Использование памяти | Загрузка GPU  Режим вычис. |
|===============================+======================+======================|
|   0  GeForce GTX 1080    Выкл.| 00000000:01:00.0 Выкл.|                  N/A |
| 32%   59C    P5    16Вт / 180Вт |   1322МиБ /  8114МиБ |      4%      По умолчанию |
+-------------------------------+----------------------+----------------------+
|   1  GeForce GTX 1080    Выкл.| 00000000:02:00.0 Выкл.|                  N/A |
| 33%   60C    P2    56Вт / 180Вт |   7858МиБ /  8114МиБ |     27%      По умолчанию |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Процессы:                                                     Память GPU |
|  GPU       PID   Тип     Название процесса                      Использование      |
|=============================================================================|
|    0     12818      G   /usr/lib/xorg/Xorg                           638МиБ |
|    0     13476      G   compiz                                       278МиБ |
|    0     14230      G   ...-token=A9CF4CD99B5947DB32E9E4B117997A68   404МиБ |
|    1     25764      C   python                                      7847МиБ |
+-----------------------------------------------------------------------------+

  1. Измените профили PRIME на Intel (Режим экономии энергии) в NVIDIA X Server Settings
  2. Выйдите и снова войдите в систему
  3. добавьте
    LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/cuda-8.0/lib64:/usr/lib/nvidia-xxx
    (у меня это nvidia-384) в файл ~/.bashrc
  4. запустите nvidia-smi

Если это не работает, убедитесь, что Secure Boot отключен в настройках UEFI.

У меня есть очень простое решение:

В /etc/modprobe.d/blacklist.conf, добавьте:

blacklist nvidia_modeset
blacklist nvidiafb
install nvidiafb /bin/false

(возможно, достаточно и меньшего, но на этом этапе я прекратил эксперименты)

Не используйте файл конфигурации в /etc/X11/xorg.conf.d/ или используйте тот, что использовали до установки карт NVIDIA.

Вот и все. Таким образом, карта NVIDIA полностью изолирована от Xorg и на 100% пригодна для расчетов. Xorg видит только интегрированную графику и продолжает работать без конфигурации.


Для сравнения, вот некоторые выводы с моей системы:

$ lsmod | grep nvi
nvidia_uvm           1216512  4
nvidia_drm             69632  0
nvidia_modeset       1200128  1 nvidia_drm
nvidia              35520512  146 nvidia_uvm,nvidia_modeset
drm_kms_helper        311296  2 nvidia_drm,i915
drm                   622592  17 drm_kms_helper,nvidia,nvidia_drm,i915,ttm
$ nvidia-smi 
Вт 11 фев  02:05:49 2025       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.256.02   Версия драйвера: 470.223.02   Версия CUDA: 11.4     |
|-------------------------------+----------------------+----------------------+
| GPU  Название     Постоянство-| Bus-Id        Disp.A | Внеполосные ECC  |
| Вент. Темп.  Перф.  Потр./Огр.|    Использование памяти | Загрузка GPU  Режим вычис. |
|                               |                      |               MIG Модуль. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Выкл.| 00000000:01:00.0 Выкл.|                  N/A |
| 30%   44C    P0    25Вт /  75Вт |   3516МиБ /  3911МиБ |     32%      По умолчанию |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Процессы:                                                                  |
|  GPU   GI   CI        PID   Тип     Название процесса             Память GPU |
|        ID   ID                                                   Используется      |
|=============================================================================|
|    0   N/A  N/A     72603      C   ...1_avx/ollama_llama_server     3513MiБ |
+-----------------------------------------------------------------------------+
$ xrandr --listproviders
Поставщики: число : 1
Поставщик 0: id: 0x44 cap: 0x9, Source Output, Sink Offload crtcs: 3 outputs: 3 ассоциированные поставщики: 0 имя:modesetting   # это интегрированная графика

Ответ или решение

Чтобы настроить Xorg сервер на использование только интегрированной графики Intel, и избежать использования оперативной памяти на дискретных видеокартах NVIDIA для задач вывода изображения, необходимо выполнить ряд шагов, и понять, как происходит взаимодействие между различными модулями и конфигурациями в вашей системе.

Теория

Когда система имеет несколько графических процессоров, Xorg сервер по умолчанию может выбирать тот, который предпочтителен для максимальной производительности или тот, который установлен в предыдущих конфигурациях. Таким образом, системы на базе отдельных дискретных карт, таких как NVIDIA, могут автоматически настраиваться для их использования. Однако для эффективного выполнения специфических вычислительных задач, часто возникает необходимость разграничить оперативные задачи и задачи вычислений, чтобы высвободить ресурсы дискретных карт.

Для решения этой задачи можно использовать встроенные в ядро Linux возможности, такие как blacklisting, конфигурации Xorg, а также правильно настраивать управление графическими драйверами.

Пример

В описанной вами ситуации, система использует NVIDIA GPU для задач Xorg и выделяет около 700 MB на задачи отрисовки, что может нежелательно при выполнении научных вычислений. Давайте рассмотрим, как же мы можем изменить это поведение, чтобы заставить Xorg сервер использовать интегрированную графику Intel:

  1. Настройка PRIME profiles: Один из способов переориентировать вывод графики – это изменение активности prime profiles в NVIDIA X Server Settings на Intel (режим экономии энергии). Это позволит сессиям графического сервера использовать Intel GPU по умолчанию для задач отображения.

  2. Изменение конфигурации драйверов: Для блокировки загрузки модулей NVIDIA, вы можете добавить несколько строк в файл /etc/modprobe.d/blacklist.conf, который обычно хранит конфигурации модулей, которые не следует загружать.

    blacklist nvidia_modeset
    blacklist nvidiafb
    install nvidiafb /bin/false

    Эти строки предотвратят загрузку специфичных для данной карты драйверов, которые могут перекрыть работу интегрированной графики.

  3. Полное отключение конфигурации NVIDIA для Xorg: Убедитесь, что в каталоге /etc/X11/xorg.conf.d/ нет файлов настройки Xorg, которые указывают на использование NVIDIA GPU. Это оставит ваш графический сервер без конфигураций, и он будет вынужден использовать Intel GPU.

  4. Проверка с помощью xrandr: Для окончательной проверки используем команду xrandr --listproviders. Здесь необходимо убедиться, что предоставленная графическая система – это "modesetting", что указывает на использование интегрированной графики.

Применение

После выполнения всех вышеперечисленных шагов, ваше рабочее место должно использовать встроенный графический чипсет Intel для всех задач визуализации. Дискретная видеокарта NVIDIA теперь свободна и полностью пригодна для вычислительных задач, управляемых, например, через CUDA. Все ваши научные расчетные задачи могут работать эффективно, используя коэффициент параллельности и вычислительную мощь ваших GTX1080 карт без помех со стороны X орга.

Эти шаги должны также сохранить целостность вашей системы, минимизировав влияние на производительность с минимальными затратами времени на перенастройку. Важно помнить, что все изменения в конфигурациях системы могут требовать резервного копирования файлов настройки и понимания последствий данных манипуляций. Всегда полезно обновлять драйверы и системы до последней версии, чтобы избежать возможных конфликтов и проблем.

Оцените материал
Добавить комментарий

Капча загружается...