Ubuntu 24.04: Как мне запустить X исключительно на моей интегрированной графике

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

Вот моя конфигурация:

>>xrandr --listproviders
Поставщики: количество : 2
Поставщик 0: id: 0x59 cap: 0x9, Source Output, Sink Offload crtcs: 4 outputs: 7 связанные поставщики: 1 имя:AMD Radeon Graphics @ pci:0000:0a:00.0
Поставщик 1: id: 0x1e4 cap: 0x2, Sink Output crtcs: 4 outputs: 4 связанные поставщики: 1 имя:NVIDIA-G0

nvidia-smi говорит мне, что Xorg является единственной программой, работающей на моем выделенном графическом процессоре, что мешает ему перейти в режим сна и потреблять 10 Вт. Это раздражает, так как это ноутбук.

Я попробовал всё, что нашел в интернете:

  • Опция “PrimaryGPU” “yes” для конфигурационных файлов radeon и amdgpu в /usr/share/X11/xorg.conf.d/, а также “PrimaryGPU” “no” для классов вывода nvidia
  • xrandr –setprovideroffloadsink 0 0
    приводит только к этой ошибке:

xrandr –setprovideroffloadsink 0 0

X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  140 (RANDR)
  Minor opcode of failed request:  34 (RRSetProviderOffloadSink)
  Value in failed request:  0x59
  Serial number of failed request:  16
  Current serial number in output stream:  17

xrandr –setprovideroffloadsink 1 0 – это единственная работающая команда, но она просто снова устанавливает выделенную карту nvidia в качестве вывода.

Когда я переключаю режим GPU с “гибридного” на внутренний, всё работает как ожидалось, за исключением того, что я не могу использовать свою выделенную карту (как с prime-run).

Похоже, что xrandr неправильно распознаёт возможности моих поставщиков (графических карт) и считает, что внутренний графический процессор не может быть выходным источником, хотя он должен это делать. Более мощный графический процессор обычно перерабатывает данные на менее мощный. Когда я запускаю Windows, это именно так и происходит. Вычисления уже выполняются на внутреннем графическом процессоре, так как он является выходным источником (и radeontop даже показывает больше нагрузки, когда я перетаскиваю окно). Но карта nvidia почему-то по-прежнему используется в качестве выходного источника и никогда не переходит в режим сна/ожидания. Как я могу сказать своей системе использовать amdgpu (“внутренний графический процессор”) в качестве выходного источника?

>     Чт Окт 31 00:49:21 2024       
>     +-----------------------------------------------------------------------------------------+
>     | NVIDIA-SMI 550.120                Версия драйвера: 550.120        Версия CUDA: 12.4     |
>     |-----------------------------------------+------------------------+----------------------+
>     | GPU  Имя                 Сохранение-М | Bus-Id          Disp.A | Непроверяемый ECC |
>     | Вентилятор  Темп   Производительность  Потребление/Макс |           Использование памяти | GPU-Util  Вычисл. М. |
>     |                                         |                        |               MIG М. |
>     |=========================================+========================+======================|
>     |   0  NVIDIA GeForce RTX 3070 ...    Off |   00000000:01:00.0 Off |                  N/A |
>     | N/A   40C    P3             22W /   55W |       9MiB /   8192MiB |      0%      По умолчанию |
>     |                                         |                        |                  N/A |
>     +-----------------------------------------+------------------------+----------------------+
>                                                                                              
>     +-----------------------------------------------------------------------------------------+
>     | Процессы:                                                                              |
>     |  GPU   GI   CI        PID   Тип   Имя процесса                              Использование GPU памяти |
>     |        ID   ID                                                               Использование      |
>     |=========================================================================================|
>     |    0   N/A  N/A     29339      G   /usr/lib/xorg/Xorg                              4MiB |
>     +-----------------------------------------------------------------------------------------+

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

Как запустить X на встроенной видеокарте в Ubuntu 24.04

Если вы сталкиваетесь с проблемой, когда ваш ноутбук использует выделенную видеокарту (NVIDIA GeForce RTX 3070) вместо встроенной (AMD Radeon Graphics) для вывода изображения, и хотите переключить X-сервер на использование только встроенной графики, следуйте пошаговым инструкциям ниже.

Шаг 1: Определите конфигурацию GPU

Исходя из вывода команды xrandr --listproviders, у вас есть два графических процессора:

  1. Встроенная графика: AMD Radeon Graphics (Provider 0)
  2. Выделенная графика: NVIDIA GeForce RTX 3070 (Provider 1)

Проблема заключается в том, что X-сервер использует выделенный GPU в качестве вывода, что препятствует автоматическому переходу в спящий режим.

Шаг 2: Настройка конфигураций X

Используйте файловую систему конфигурации xorg.conf.d, чтобы определить, какая видеокарта будет являться основным GPU.

  1. Откройте текстовый редактор с правами суперпользователя:

    sudo nano /usr/share/X11/xorg.conf.d/20-amdgpu.conf
  2. Добавьте следующие строки, чтобы убедиться, что AMD является основной картой:

    Section "Device"
       Identifier  "AMD"
       Driver      "amdgpu"
       Option      "PrimaryGPU" "yes"
    EndSection
    
    Section "Device"
       Identifier  "NVIDIA"
       Driver      "nvidia"
       Option      "PrimaryGPU" "no"
    EndSection
  3. Сохраните изменения и закройте редактор.

Шаг 3: Настройка PRIME Offloading

Вам необходимо настроить PRIME, чтобы использовать встроенную карту для вывода.

  1. Проверьте текущие настройки PRIME:

    prime-select intel

    Это действие переключит систему на использование встроенной видеокарты (Intel или AMD в вашем случае). Перезагрузите систему после выполнения этой команды.

Шаг 4: Использование PRIME Render Offload

Если вы хотите использовать выделенное GPU для вычислительных задач, установите NVIDIA PRIME Render Offload. После перезагрузки, запустите приложения с использованием выделенной карты так:

prime-run <ваша_программа>

Это позволит вашим задачам использовать NVIDIA GPU, но при этом основное отображение будет происходить через интегрированную AMD графику.

Шаг 5: Проверка результатов

После выполнения всех настроек, проверьте, что X запускается на встроенной графике:

xrandr --listproviders

Убедитесь, что ваша встроенная графика установлена как вывод. Также можете проверить использование ресурсов с помощью nvidia-smi, чтобы убедиться, что выделенная видеокарта действительно переходит в спящий режим.

Заключение

Следуя данным шагам, вы сможете успешно переключить ваш X-сервер на использование встроенной графики. Это не только улучшит производительность вашей системы, но и поможет сэкономить заряд батареи на вашем ноутбуке. Если возникнут дополнительные проблемы, рассмотрите возможность обновления драйверов или обращения в поддержку сообщества Ubuntu.

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

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