LINUX.ORG.RU

Загрузка X11 на интегрированном GPU.

 ,


1

1

Есть ноут, хочу загружать иксы на iGPU, что бы иметь возможность при необходимости юзать GPU на ВМ, сделал конфиг:

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "iGPU" 0 0
EndSection

Section "Device"
    Identifier     "iGPU"
    Driver         "modesetting"
    BusID          "PCI:0:2:0" #Проверьте BusID
EndSection

#Section "Device"
#    Identifier     "dGPU"
#    Driver         "nvidia"
#    BusID          "PCI:1:0:0" #Проверьте BusID
#EndSection

Section "Screen"
    Identifier     "iGPU"
    Device         "iGPU"
    DefaultDepth    24
    SubSection     "Display"
    Viewport        0 0
    EndSubSection
EndSection

Section "OutputClass"
    Identifier     "iGPU"
    MatchDriver    "i915"
    Driver         "modesetting"
EndSection

#Section "OutputClass"
#    Identifier     "dGPU"
#    MatchDriver    "nvidia-drm"
#    Driver         "nvidia"
#    Option         "AllowEmptyInitialConfiguration"
#    Option         "PrimaryGPU" "no"
#    ModulePath     "/usr/lib/nvidia/xorg"
#    ModulePath     "/usr/lib/xorg/modules"
#EndSection

nvidia-smi:

| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|  No running processes found                                                           |
+---------------------------------------------------------------------------------------+

Однако, отвязать nvidia я не могу, и команда sudo fuser -v /dev/nvidia0 мне показываеть что есть процесс:

/dev/nvidia0:        root        725 F.... Xorg

Вот этот процесс:

    PID TTY      STAT   TIME COMMAND
    725 tty7     Ssl+   0:54 /usr/lib/Xorg :0 -seat seat0 -auth /run/lightdm/root/:0 -n

Если смотреть логи иксов:

[     5.048] (**) OutputClass "nvidia" ModulePath extended to "/usr/lib/nvidia/xorg,/usr/lib/xorg/modules,/usr/lib/xorg/modules"
[     5.048] (--) PCI:*(0@0:2:0) 8086:a7a0:1043:304d rev 4, Mem @ 0x622e000000/16777216, 0x4000000000/268435456, I/O @ 0x00005000/64, BIOS @ 0x????????/131072
[     5.048] (--) PCI: (1@0:0:0) 10de:28a1:1043:304d rev 161, Mem @ 0x5f000000/16777216, 0x6000000000/8589934592, 0x6200000000/33554432, I/O @ 0x00004000/128, BIOS @ 0x????????/524288
[     5.048] (WW) Open ACPI failed (/var/run/acpid.socket) (No such file or directory)

Получается он загружает nvidia в любом случае? Есть вариант отвязывать/привязывать GPU без полной перезагрузки, а только перезапуском исков?

Замени modesetting на intel, modesetting будет пытаться использовать offload через glamor, заодно добавь полный Xorg.0.log

sparks
()

Можешь попробовать через unbind сделать. На примере моей сетёвки.

Сначала изучаешь выхлоп lspci -nn

...
00:19.0 Ethernet controller [0200]: Intel Corporation Ethernet Connection (2) I218-V [8086:15a1] (rev 05)
...

На основании этого выхлопа выполняются команды (у меня они сделаны в скрипте):

echo 0000:00:19.0 > /sys/bus/pci/drivers/e1000e/unbind
echo "8086 15a1" > /sys/bus/pci/drivers/vfio-pci/new_id

После этого сетёвка исчезает из системы и готова к пробросу с помощью драйвера vfio-pci. В твоём случае может оказаться проще запускать такой скрипт до запуска иксов, тогда у иксов просто не будет возможности использовать отвязанный гпу.

u5er ☕☕☕☕☕
()
Ответ на: комментарий от sparks

Как я понимаю это будут другие двова, xf86? Вопщем попробовал, загрузилось, анимация сильно тупит, нвидиа по прежнему в использовании. Поменяол обратно на модесеттинг.

И еще, нвидиа не загружается, если я добавляю ее в blacklist. Но мне хочется загружать/выгружать ее без перезагрузки, неужели нет такого варианта…

Через какой сервис можно логами поделиться?

AndreyFrants
() автор топика
Ответ на: комментарий от AndreyFrants

Да, они разные, для логов можно pastebin.com или transfer.sh, у меня схожая конфигурация с твоей, ноутбук Dell 5401

Смотри, есть два варианта работы «дискретной» видеокарты:

  1. Две полноценные карты
  2. Одна карта «ограниченная», т.е. сама по себе не способна полноценно выводить графику, но позволяет её рендерить на своём видео чипе (это мой случай, карта - Nvidia MX150)

Посему не факт что задумка полностью прокатит, но тем не менее, Xorg использует такую иерархию

  • Server
    • Screen
      • Device

и можно сказать серверу, что нам хватит самого первого девайса

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "PrimaryScreen" 0 0
    
    # Вот как то так
    Option          "SingleCard" "true"
EndSection

Section "Device"
    Identifier     "iGPU"
    Driver         "modesetting"
    BusID          "PCI:0:2:0" #Проверьте BusID
EndSection

Section "Screen"
    Identifier     "PrimaryScreen"
    Device         "iGPU"
EndSection

# В дополнение к "SingleCard", можно намекнуть серверу - "без самодеятельности"
Section "ServerFlags"
    Option       "AutoAddDevices"   "false"
    
    # Опции с GPU как правило про "secodary" карту
    Option       "AutoAddGPU"       "false"
EndSection

Конфиг не проверял, попробуй и поделись итоговым Xorg.0.log

sparks
()
Ответ на: комментарий от AndreyFrants

"AutoAddDevices" не подхватилась, вот что в логе

[     5.020] (**) Option "SingleCard" "true"
[     5.020] (**) Option "AutoAddGPU" "false"
[     5.020] (==) Automatically adding devices
[     5.020] (==) Automatically enabling devices
[     5.020] (**) Not automatically adding GPU devices
[     5.020] (==) Automatically binding GPU devices
...
sparks
()
Ответ на: комментарий от u5er

Это должно сработать. Можешь пож сориентировать как это сделать? Мне получается нужно убить lightdm, убить иксы, потом выгрузить драйвер и отвзать видео. Со всем этим поможет баш скрипт?

AndreyFrants
() автор топика
Ответ на: комментарий от sparks

Да, я эту строку убрал, ибо с ней, у меня не работает клава и мышь, ну или в ручную их добавлять в конфиг. Я сейчас думаю, что мне нужно убивать иксы, экранный менеджер и отвязывать видео/выгружать драйвер.

AndreyFrants
() автор топика
Ответ на: комментарий от PPP328

Нет, ещё живой, но поддерживают его по факту разработчики дистрибьютивов, в OpenSuse наконецто пофиксили баг с именем модуля для gen 9 карт, 3д пркрасно работает, единственное с чем были косяки это тиринг, но производительность в играх у него выше на 15-20%

sparks
()
Ответ на: комментарий от AndreyFrants

Не принципиально, как это делать, главное, чтоб на момент отзыва драйвер ничем не использовался. Можешь шелл скриптом, можешь любым другим удобным способом. У меня, когда я постоянно использовал виартуалку с пробросом, этим занимался openRC в момент запуска системы. Сейчас я это оформил в шелл скрипт, т.к. виртуалка нужна не постоянно.

Можешь оформить 2 шелл скрипта - один будет отвязывать видеокарту, другой привязывать обратно. Нужно пробросить видео? Останавливаешь иксы, пробрасываешь, запускаешь снова - иксы запускаются только на встройке, дискретка проброшена. Закончил работать в виртуалке и дискретка нужна на основной системе? Останавливаешь иксы, привязываешь дискретку обратно, запускаешь иксы.

Как это делать на горячую без остановки иксов я не знаю. В своё время искал информацию - так и не нашёл.

u5er ☕☕☕☕☕
()
Ответ на: комментарий от u5er

Да, я тоже гуглил по поводу отключения на горячую, похоже на иксах это не реально, только на вейланде вроде как можно.

AndreyFrants
() автор топика
Ответ на: комментарий от AndreyFrants

Жаль, некоторые карты можно «разбивать» на несколько виртуальных, формально это только «крутые» Tesla и пр могут делать, но чип там используется такой же как и в GTX, а ограничение искуственное и его можно обойти, но не на Ampere, Ada Lovelace (AD107) не подойдёт

sparks
()
Последнее исправление: sparks (всего исправлений: 1)
Ответ на: комментарий от sparks

У меня на intel драйвере отключилось вообще всё ускорение. Видео не работало в плеерах, в браузере и электронах ракомакофон с кусками изображений.

PPP328 ☕☕☕☕☕
()
Ответ на: комментарий от u5er

Что бы не создавать отдельный топик, может тут подскажешь, почему баш скрипт такого вида не работает?

systemctl stop display-manager.service
# тут я делаю что нужно
systemctl start display-manager.service

Иксы закрываются, но по новой не запускается lightdm.

AndreyFrants
() автор топика
Ответ на: комментарий от AndreyFrants

Если запускаешь его под X-ами то он прибивается в моент остановки X-ов

Попробуй переключиться по Ctrl-Alt-Fx в ядрёную консоль и запустить его там

GPFault
()
Ответ на: комментарий от AndreyFrants

А все нагуглил, логично же, если я запускаю баш из под своего юзера, а потом убиваю сессию, как дальше скрипт может выполняться то. Пишут поможет nohup, но с ним ошибка что служба требует аутентификацию….

AndreyFrants
() автор топика
Ответ на: комментарий от AndreyFrants

в плане аутентификации - чтоб она была 1 раз до останвки X-ов - весь скрипт запуская под sudo.

(это же применимо и к варианту с ядрёной консолью что я описал 2 минуты назад выше)

GPFault
()
Ответ на: комментарий от GPFault

Не понял, так она и есть. Я захожу в свою сессию. Потом делаю nohup ./скрипт.sh

И он не выполняется, валится ошибка authentication required…

AndreyFrants
() автор топика
Ответ на: комментарий от AndreyFrants

Ctrl-Alt-F1/Ctrl-Alt-F2/Ctrl-Alt-F3 .. Ctrl-Alt-F9

В разных дистраз разне сочетание в последнее время, раньше везде Ctrl-Alt-F1 помогало

Открывает ядерную косноль со во фреймбуфере, куда можно залогонитить и управлять перезапуском X-ов.

Вернуться оттуда в Xы - одно из этих же сачетаний. Раньше было -F6, но сейчас что-то намудрили и поразному бывает

цифра после F - это так называемый индекс виртуального териминала Linux между которыми идёт переключение, некоторые из них консоль, а некоторые Xы.

GPFault
()
Ответ на: комментарий от AndreyFrants

sudo nohup ./скрипт.sh имею ввиду

тогда аутентификация только 1 раз ДО запуска скрипта.

Но поможет ли nohup я не уверен, когда перезапускается служба lightm там не только дескриптовы закроются, но и сессия.

Можно в дополнение к nohup пробовтаь использовать setsid (это что-то ттипа нового поддерева процессов) - но это довольно запутанная штука, я пару раз осиливал, но забыл, там могут быть нбансы

GPFault
()
Ответ на: комментарий от GPFault

setsid пробовал, та же ошибка. Ещё нашел вариант запустить через служебный файл, systemd, попробую этот вариант. Пока правда не понимаю как)

AndreyFrants
() автор топика
Ответ на: комментарий от AndreyFrants

Вот тут уже не подскажу. У меня всё сделано совсем по-другому.

u5er ☕☕☕☕☕
()

Ты б еще сказал, что за железо. Если старый макбук (2012-2014) с ноувидией - да, ноувидия работает в любом случае. Более того, если она отвалится, то тачка не будет показывать изображение вообще. Фиксится при отвале и нежелании греть/реболить только киданием кучи соплей из трансформаторной проволоки в обход видеочипа и gmux.

harbinger
()
Последнее исправление: harbinger (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.