Вопрос или проблема
Вот моя конфигурация:
>>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
, у вас есть два графических процессора:
- Встроенная графика: AMD Radeon Graphics (Provider 0)
- Выделенная графика: NVIDIA GeForce RTX 3070 (Provider 1)
Проблема заключается в том, что X-сервер использует выделенный GPU в качестве вывода, что препятствует автоматическому переходу в спящий режим.
Шаг 2: Настройка конфигураций X
Используйте файловую систему конфигурации xorg.conf.d
, чтобы определить, какая видеокарта будет являться основным GPU.
-
Откройте текстовый редактор с правами суперпользователя:
sudo nano /usr/share/X11/xorg.conf.d/20-amdgpu.conf
-
Добавьте следующие строки, чтобы убедиться, что AMD является основной картой:
Section "Device" Identifier "AMD" Driver "amdgpu" Option "PrimaryGPU" "yes" EndSection Section "Device" Identifier "NVIDIA" Driver "nvidia" Option "PrimaryGPU" "no" EndSection
-
Сохраните изменения и закройте редактор.
Шаг 3: Настройка PRIME Offloading
Вам необходимо настроить PRIME, чтобы использовать встроенную карту для вывода.
-
Проверьте текущие настройки 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.