Nvidia + режим ожидания в gnome

Системные сервисы и системы инициализации: systemd, sysvinit и другие


vlad196
Сообщения: 11
Зарегистрирован: 04.01.2023

#

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

Вроде бы и f2fs поддерживает безымянные временные файлы,
и nvidia-utils-beta есть,
прописал в /etc/modprobe.d/nvidia-power-management.conf что там рекомендуют,
в /proc/driver/nvidia/suspend suspend и resume прописано
nvidia-suspend в systemctl разрешал,
но ничего не получилось.

Кто-то может объяснить, как правильно сделать так, чтобы видеопамять записывалась на диск?
Заранее прошу прощения, если спрашиваю что-то элементарное. Я ни раз возвращаюсь к этой проблеме, ну не получается у меня понять как эту проблему решить самостоятельно
indeviral
Аватара пользователя
Сообщения: 178
Зарегистрирован: 15.08.2022

#

Вы в параметрах ядра прописали? Ну и для таких экспериментов лучше lts версии использовать.
NVreg_PreserveVideoMemoryAllocations=1 

Ошибки в тексте-неповторимый стиль автора©

vall
Аватара пользователя
Администрация
Сообщения: 552
Зарегистрирован: 09.08.2022

#

У меня под иксами в KDE тоже есть такая проблема, но до изучения и решения вопроса всё никак руки не доходят. При выходе из ждущего режима на десктопе (nvidia 1050Ti) наблюдаются артефакты и прочее.

Но ... kwin_x11 автоматически производит сброс настроек графики и всё приходит в норму. По этой причине и не вникал в тему.
RusWolf
Аватара пользователя
Сообщения: 168
Зарегистрирован: 16.08.2022

#

vall: У меня под иксами в KDE тоже есть такая проблема, но до изучения и решения вопроса всё никак руки не доходят. При выходе из ждущего режима на десктопе (nvidia 1050Ti) наблюдаются артефакты и прочее.
У меня на kde c 1050Ti в иксах нет такого, а вот на вяленой сессии такое иногда проскакивает.

Arch Linux x86-64 на BTRFS

vlad196
Сообщения: 11
Зарегистрирован: 04.01.2023

#

indeviral: Вы в параметрах ядра прописали? Ну и для таких экспериментов лучше lts версии использовать.
NVreg_PreserveVideoMemoryAllocations=1 
Не прописывал, но сейчас попробовал и не помогло, и на lts ядре тоже самое
Попробую ещё почитать комментарии nvidia, может они чего-то дельного пишут
vlad196
Сообщения: 11
Зарегистрирован: 04.01.2023

#

Вообще пишут, что этот якобы всё починили, но вот в том же топике до сих пор встречаются люди с этой проблемой. Хз, может это из-за того, что я dkms драйвер использую ради кастомного ядра (lts 2-ым ядром стоит)
https://forums.developer.nvidia.com/t/c ... /194565/20
vlad196
Сообщения: 11
Зарегистрирован: 04.01.2023

#

Я позже посмотрю логи вместе с этой опцией в ядре, что предложил @indeviral, может что-то поменялось
vasek
Сообщения: 358
Зарегистрирован: 31.08.2022

#

Выводы
systemctl status nvidia-suspend
find / -name 'setup-nvdia-suspend.sh' 2>/dev/null

PS - исправил описку во 2-ой команде (убрал лишний пробел после sh в '...suspend.sh ' )
... хотя наличие данного файла можно узнать и другими способами ...

Ошибки не исчезают с опытом - они просто умнеют

vasek
Сообщения: 358
Зарегистрирован: 31.08.2022

#

Это проблема nvidia известна и связна с драйверами nvidia. Наблюдается проблема и в Wayland.
Описана проблема и в DOC (некоторые выдержки, вольный перевод)
Объем системной памяти, доступной для драйверов во время suspend/hibernate иногда может быть недостаточен для сохранения больших объемов видео памяти. Драйверы nvidia заточены на определенный порядок действий - сохранять только необходимые распределения видео памяти. Получающаяся потеря содержимого видео памяти может привести к сбоям

Этим в основном страдают карты optimus и ноуты имеющие дополнительно интегрированую карту Intel.
Разработчики даже предусмотрели в драйверах nvidia определенный механизм для решения данной проблемы, но на 100% проблема не решается, зависит от железа.

EDID - решил дополнить для ясности ...
Драйвер NVIDIA Linux поддерживает suspend и hibernate с помощью двух различных механизмов:
Kernel driver callback (включен по дефолту и используется без явной конфигурации) - при использовании этого механизма драйвер ядра nvidia получает/использует обратные вызовы (callbacks) от ядра Linux для suspend/hibernate и возобновления каждого графического процессора.
Хотя этот механизм не имеет особых требований, но дает хорошие результаты со многими рабочими нагрузками, он страдает от нескольких ограничений - он может надежно сохранить относительно небольшой объем видео памяти, и не может поддерживать управление питанием, когда используются расширенные функции CUDA.

/proc/driver/nvidia/suspend - этот механизм опирается на инструмент systemd - работает через интерфейс /proc/nvidia/suspend. Считается экспериментальным и требует явной конфигурации для использования ... то есть требует дополнительной настройки.
Механизм предназначен для удаления ограничений, присущих механизму обратных вызовов драйвера ядра - способен сохранять и восстанавливать все распределения видео памяти.

Ошибки не исчезают с опытом - они просто умнеют

vall
Аватара пользователя
Администрация
Сообщения: 552
Зарегистрирован: 09.08.2022

#

vasek:Это проблема nvidia известна и связна с драйверами nvidia.
И в очередной раз спасибо за поучительный разбор проблемы. Некоторые моменты прояснил для себя с большей ясностью.

Буду опираться на этот пост, когда всё же руки дойдут до попытки решить вопрос не за счёт возможностей DE (сброс графики).
vasek
Сообщения: 358
Зарегистрирован: 31.08.2022

#

vall, просьба, если не сложно, привести выводы
systemctl status nvidia-suspend
find / -name 'setup-nvdia-suspend.sh' 2>/dev/null
Сам nvidia не использую, а поэтому интресно узнать состояние дел на сегодня - наличие в системе nvidia-suspend.service и файла setup-nvdia-suspend.sh

Ошибки не исчезают с опытом - они просто умнеют

vall
Аватара пользователя
Администрация
Сообщения: 552
Зарегистрирован: 09.08.2022

#

Вывод:
➜  systemctl status nvidia-suspend
○ nvidia-suspend.service - NVIDIA system suspend actions
     Loaded: loaded (/usr/lib/systemd/system/nvidia-suspend.service; disabled; preset: disabled)
     Active: inactive (dead)

~
[🔴 3] ✗  find / -name 'setup-nvdia-suspend.sh' 2>/dev/null

~ 🕙 выполнено за 1m26s
[🔴 ERROR] ✗
Сервис systemd в нерабочем состоянии. А скрипт не найден.
indeviral
Аватара пользователя
Сообщения: 178
Зарегистрирован: 15.08.2022

#

vall:Сервис systemd в нерабочем состоянии.
$ cat /etc/modprobe.d/nvidia-power-management.conf
options nvidia NVreg_PreserveVideoMemoryAllocations=1 
И потом это сервис должен запуститься.

Ошибки в тексте-неповторимый стиль автора©

vasek
Сообщения: 358
Зарегистрирован: 31.08.2022

#

vall:А скрипт не найден
Спасибо ... возможно не много изменилось и скрипт стал не нужен ... но желательно убедиться до конца, тогда выполнить такой поиск
find / -name '*.sh' 2>/dev/null | grep -i nvidia

Ошибки не исчезают с опытом - они просто умнеют

vall
Аватара пользователя
Администрация
Сообщения: 552
Зарегистрирован: 09.08.2022

#

vasek:find / -name '*.sh' 2>/dev/null | grep -i nvidia
➜  find / -name '*.sh' 2>/dev/null | grep -i nvidia
/usr/bin/nvidia-sleep.sh
/usr/bin/nvidia-bug-report.sh
vall
Аватара пользователя
Администрация
Сообщения: 552
Зарегистрирован: 09.08.2022

#

indeviral:$ cat /etc/modprobe.d/nvidia-power-management.conf
➜  cat /etc/modprobe.d/nvidia-power-management.conf
cat: /etc/modprobe.d/nvidia-power-management.conf: Нет такого файла или каталога
P.S. Топикстартер отдыхает, работаю за него (не без пользы для себя). Но в иксовой сессии KDE )))
vasek
Сообщения: 358
Зарегистрирован: 31.08.2022

#

vall:/usr/bin/nvidia-sleep.sh
Еще раз спасибо - моя забывчивость - писал по памяти и имя файла указал не правильно .... соглано DOC это nvidia-sleep.sh, в котором должно быть отражено и suspend и hibernate.
В общем рекомендаций на эту тему несколько, но более полный и приближенный к DOC следующий (кому то помогает только выполнение пункта 1, кому то выполнение пунктов 1+2, кому то выполнение пунктов 1+2+3):
1. Активировать сервисы systemd (все или только нужный ... хотя логичнее делать все как прописано ...)
... все-таки, думаю, что для suspend обязательна активация nvidia-suspend и nvidia-resume - но это требуют проверки
sudo systemctl enable nvidia-suspend.service
sudo systemctl enable nvidia-hibernate.service 
sudo systemctl enable nvidia-resume.service
2. Создать файл /etc/modprobe.d/nvidia-power-management.conf и прописать в нем
options nvidia NVreg_PreserveVideoMemoryAllocations=1 Nvreg_TemporaryFilePath=/var/tmp
PS - вместо одной строчки, можно прописать и в две строчки
options nvidia Nvreg_PreserveVideoMemoryAllocations=1
options nvidia NVreg_TemporaryFilePath=/var/tmp
Насколько понимаю, параметр Nvreg_TemporaryFilePath=/var/tmp нужен только для hibernate

PS - параметр Nvreg_TemporaryFilePath=/var/tmp можно и не прописывать - файл создается по дефолту в /tmp ... .... перевод из DOC в части этого параметра приведен на следующей странице

3. Прописать парамерт ядра nvidia_drm.modeset=1

Повторюсь, кому то помогает только выполнение пункта 1, кому то выполнение пунктов 1+2, кому то выполнение пунктов 1+2+3 ... но возможно, что кому то и не поможет вообще. ... но есть менение и отдельных спецов, которые не очень то поддерживают эту настройку ...

PS - будет интересно узнать - решает ли это проблему ... поэтому просьба отписаться ...
Последний раз редактировалось vasek 08.01.2023 08:51, всего редактировалось 5 раз.

Ошибки не исчезают с опытом - они просто умнеют

vall
Аватара пользователя
Администрация
Сообщения: 552
Зарегистрирован: 09.08.2022

#

vasek:.. поэтому просьба отписаться ...
Во-первых, благодарю за рекомендации.
Во-вторых, обязательно сделаю вышеперечисленное, но только уже в воскресенье скорее всего. Предпраздничные хлопоты и завтрашний день просто не дают возможности сразу всё проверить. Сообщение пишу под голоса -- давай там бросай всё )

Если только случайно не возникнет "окно". Либо ТС подключится для поддержки.
indeviral
Аватара пользователя
Сообщения: 178
Зарегистрирован: 15.08.2022

#

vall:
indeviral:$ cat /etc/modprobe.d/nvidia-power-management.conf
➜  cat /etc/modprobe.d/nvidia-power-management.conf
cat: /etc/modprobe.d/nvidia-power-management.conf: Нет такого файла или каталога
P.S. Топикстартер отдыхает, работаю за него (не без пользы для себя). Но в иксовой сессии KDE )))
Создайте.

Ошибки в тексте-неповторимый стиль автора©

vlad196
Сообщения: 11
Зарегистрирован: 04.01.2023

#

Спасибо большое, что помогаете в этом!
Извините, я вчера был занят другими делами, а Вы тут в активную без меня пытаетесь разобраться в системе :fear:
Попытаюсь по порядку:
vasek: Выводы
systemctl status nvidia-suspend
find / -name 'setup-nvdia-suspend.sh' 2>/dev/null

PS - исправил описку во 2-ой команде (убрал лишний пробел после sh в '...suspend.sh ' )
... хотя наличие данного файла можно узнать и другими способами ...
○ nvidia-suspend.service - NVIDIA system suspend actions
     Loaded: loaded (/usr/lib/systemd/system/nvidia-suspend.service; enabled; p>
     Active: inactive (dead)
suspend.sh не найден (Но как Вы тут уже выяснили, он может находиться в другом месте)

Причём:
vasek: 2. Создать файл /etc/modprobe.d/nvidia-power-management.conf и прописать в нем
options nvidia NVreg_PreserveVideoMemoryAllocations=1 Nvreg_TemporaryFilePath=/var/tmp
PS - вместо одной строчки, можно прописать и в две строчки
options nvidia Nvreg_PreserveVideoMemoryAllocations=1
options nvidia NVreg_TemporaryFilePath=/var/tmp
Насколько понимаю, параметр Nvreg_TemporaryFilePath=/var/tmp нужен только для hibernate
3. Прописать парамерт ядра nvidia_drm.modeset=1
было уже изначально прописано мною и тестировалась до этого
Проблема не решилась
vall:
vasek:find / -name '*.sh' 2>/dev/null | grep -i nvidia
➜  find / -name '*.sh' 2>/dev/null | grep -i nvidia
/usr/bin/nvidia-sleep.sh
/usr/bin/nvidia-bug-report.sh
Вот весь вывод включая кэш менеджера пакетов:
/usr/bin/nvidia-bug-report.sh
/usr/bin/nvidia-sleep.sh
/usr/src/nvidia-525.60.11/conftest.sh
/home/vlad/.cache/yay/nvidia-utils-beta/src/NVIDIA-Linux-x86_64-525.60.11/makeself-help-script.sh
/home/vlad/.cache/yay/nvidia-utils-beta/src/NVIDIA-Linux-x86_64-525.60.11/makeself.sh
/home/vlad/.cache/yay/nvidia-utils-beta/src/NVIDIA-Linux-x86_64-525.60.11/kernel/conftest.sh
/home/vlad/.cache/yay/nvidia-utils-beta/src/NVIDIA-Linux-x86_64-525.60.11/nvidia-bug-report.sh
/home/vlad/.cache/yay/nvidia-utils-beta/src/NVIDIA-Linux-x86_64-525.60.11/libglvnd_install_checker/check-libglvnd-install.sh
/home/vlad/.cache/yay/nvidia-utils-beta/src/NVIDIA-Linux-x86_64-525.60.11/kernel-open/conftest.sh
/home/vlad/.cache/yay/nvidia-utils-beta/src/NVIDIA-Linux-x86_64-525.60.11/systemd/nvidia-sleep.sh
/home/vlad/.cache/yay/nvidia-utils-beta/src/NVIDIA-Linux-x86_64-525.60.11/nvidia-persistenced-init/install.sh
/home/vlad/.cache/yay/nvidia-tweaks/patch.sh
/home/vlad/.cache/yay/nvidia-tweaks/patch-fbc.sh
/opt/cuda/usr/src/nvidia-fs-2.13/create_nv.symvers.sh

Следующее что я попробую, это вместо beta-dkms драйвера установить обычный не бета и без сборки на системе, может с этими драйверами заработают изменённые параметры
Это вдвойне интересно, потому что у меня никакой встроенной 2-ой графики в процессор нет, ровно? как и видеокарта не является мобильной - RTX2070

Ещё раз спасибо за внимание и извините, что не так активно вчера участвовал
Ответить