August 12, 2022

Xorg жрет CPU на Nvidia драйверах

Попробуйте добавить в конфиг /usr/share/X11/xorg.conf.d/10-nvidia.conf новые секции или добавить:

Option "AllowEmptyInitialConfiguration"

Option "UseNvKmsCompositionPipeline" "false"

еще в панели можно выключить (Force) Full composition pipeline

Section "OutputClass"
    Identifier "nvidia"
    MatchDriver "nvidia-drm"
    Driver "nvidia"
    Option "AllowEmptyInitialConfiguration"
    Option "UseNvKmsCompositionPipeline" "false"
    ModulePath "/usr/lib/x86_64-linux-gnu/nvidia/xorg"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    Option "UseNvKmsCompositionPipeline" "false"
EndSection

Сохраняем, ребутим. Тестим:

sudo apt-get install nvtop

nvtop

Утила парсит штатную утилу nvidia-smi

nvidia-smi

Если у вас процессы не отображаются, то нужно понижать CUDA версию. По сути должна работать 11.4. Разбираемся дальше.

fuser -v /dev/nvidia*

Значит смотрим процессы, которые взаимодействуют с карточкой. Видим, тут есть. Роем дальше

sudo usermod -a -G video логин_учетки

добавляем в группу video.

echo 'ADD_EXTRA_GROUPS=1' | sudo tee -a /etc/adduser.conf
echo 'EXTRA_GROUPS=video' | sudo tee -a /etc/adduser.conf

это на всякий случай)

sudo apt install hashcat

hashcat -I

и чишо мы имеем, докидываем тулкит и молимся в /dev/null, чтоб ось не лаганула с этой кудахталкой. А такое бывало, когда видеодрайвера после нее начинают обсыпаться.

sudo apt-get -y install nvidia-cuda-toolkit

ждем эдак вечность и получаем пшелнахер!!!

Ну что, пробуем ребутить. Ну что, утилиты слетели.

Пробуем накатывать это зловоние повторно:

ubuntu-drivers devices

sudo apt-get install vidia-utils-470

от своей версии драйверов 470. И все, не помогло! классика No running processes found.

Пробуем посвежее 515:

sudo apt-get purge nvidia-utils-470

sudo apt-get install nvidia-driver-515

sudo apt-get install nvidia-utils-515

опять ребутим. Вуаля. Драйвер не стартанул с этой картой. Понятно, 470 это край для 600 серии карт и не только.

Откатываем ниже:

sudo apt-get purge nvidia-utils-515

sudo apt-get purge nvidia-driver-515

sudo apt-get install nvidia-driver-390

sudo apt-get install nvidia-utils-390

и получаем Not Supported класс.

Смотрим что на сей раз предложит:

ubuntu-drivers devices

ну давай серверную попробуем, нам же нефиг делать

sudo apt-get purge nvidia-driver-390

sudo apt-get purge nvidia-utils-390

sudo apt-get install nvidia-driver-418-server

sudo apt-get install nvidia-utils-418-server

все так же, только уже CUDA появилась 10.1

Заставляет задуматься, а есть ли тут такая функция и из-за нее ли проблема.

https://docs.nvidia.com/deploy/cuda-compatibility/index.html#binary-compatibility__table-toolkit-driver

Здрасте

нам нужен драйвер 470.57+ например и cuda 11.5 ну действуй я не знаю. А где все это взять.

sudo apt-get purge nvidia-driver-418-server

sudo apt-get purge nvidia-utils-418-server

sudo apt-get install nvidia-driver-470

sudo apt-get install nvidia-utils-470

Ну штош. Качаем

https://www.nvidia.com/Download/driverResults.aspx/177145/en-us/

sudo chmod +x ./NVIDIA-Linux-x86_64-470.57.02.run
sudo apt-get purge nvidia-driver-470
sudo apt-get purge nvidia-utils-470
sudo ./NVIDIA-Linux-x86_64-470.57.02.run

Ожидаемо получаем что хер тебе:

ctrl+alt+f1

входим под учетку

sudo service lightdm stop
запускаем установку и ловим ошибку по DKMS

make[2]: *** [scripts/Makefile.build:297: /var/lib/dkms/nvidia/470.57.02/build/nvidia/nv-memdbg.o] Error 1
make[2]: *** [scripts/Makefile.build:297: /var/lib/dkms/nvidia/470.57.02/build/nvidia/nv.o] Error 1
In file included from /var/lib/dkms/nvidia/470.57.02/build/common/inc/nv-linux.h:25,
                 from /var/lib/dkms/nvidia/470.57.02/build/nvidia/nv-rsync.c:24:
/var/lib/dkms/nvidia/470.57.02/build/common/inc/nv-time.h: In function 'nv_sleep_ms':
/var/lib/dkms/nvidia/470.57.02/build/common/inc/nv-time.h:217:18: error: 'struct task_struct' has no member named 'state'; did you mean '__state'?
  217 |         current->state = TASK_INTERRUPTIBLE;
      |                  ^~~~~
      |                  __state
In file included from /var/lib/dkms/nvidia/470.57.02/build/common/inc/nv-linux.h:25,
                 from /var/lib/dkms/nvidia/470.57.02/build/common/inc/nv-msi.h:14,
                 from /var/lib/dkms/nvidia/470.57.02/build/nvidia/nv-msi.c:11:
/var/lib/dkms/nvidia/470.57.02/build/common/inc/nv-time.h: In function 'nv_sleep_ms':
/var/lib/dkms/nvidia/470.57.02/build/common/inc/nv-time.h:217:18: error: 'struct task_struct' has no member named 'state'; did you mean '__state'?
  217 |         current->state = TASK_INTERRUPTIBLE;
      |                  ^~~~~
      |                  __state
make[2]: *** [scripts/Makefile.build:297: /var/lib/dkms/nvidia/470.57.02/build/nvidia/nv-report-err.o] Error 1
make[2]: *** [scripts/Makefile.build:297: /var/lib/dkms/nvidia/470.57.02/build/nvidia/nv-rsync.o] Error 1
make[2]: *** [scripts/Makefile.build:297: /var/lib/dkms/nvidia/470.57.02/build/nvidia/nv-msi.o] Error 1
make[1]: *** [Makefile:1881: /var/lib/dkms/nvidia/470.57.02/build] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-5.15.0-46-generic'
make: *** [Makefile:80: modules] Error 2

Короче сносим все дрова nvidia и сначала ставим cuda посвежее, к 470 пойдет 11.7

https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=deb_local

установил, поимел проблемы. Замусорил ядрами, дальше все стало собираться и откатываться с ядрами oracle и с ними намертво отлетала сеть. Посидел без интернета и плюнул на эту затею, откатился на 470 пока и поудалял все лишние собранные ядра.

Вот зараза. Но с настроек в самом начале полегче стало.