LINUX.ORG.RU

Тормоза при выходе из длительной блокировки экрана

 , , ,


0

1

Есть два компа. На одном Linux Mint Cinnamon. На другом Debian 11 с доустановленными x11, lightdm и cinnamon. Оба компа работают круглосуточно, но я не работаю за ними постоянно. При отсутствии активности рабочий стол на обоих компах блокируется.

Возвращаясь к компу с Mint, я двигаю мышкой, монитор просыпается, я ввожу пароль и практически сразу продолжаю работу.

На компе с Debian, если я возвращаюсь через несколько минут после блокировки рабочего стола, он тоже откликается бодро. Но после 12-часовой неактивности окно ввода пароля появляется через несколько минут. По моим субъективным ощущениям пауза длится больше 10 минут. Можно ввести пароль вслепую, не дожидаясь появления поля для его ввода. Тогда спустя несколько минут может появиться рабочий стол с программами, открытыми на момент моего ухода. Но новая картинка на мониторе продолжает оставаться неподвижной несколько минут, независимо от нажатий клавиш. При этом виртуальные терминалы не тормозят. Работа приложений тоже фактически не приостанавливается, просто изменения не отображаются на экране.

Я пробовал перезагружать lightdm через виртуальные консоли и по SSH. Это позволяет приступить к работе, минуя долгое ожидание, но теряется состояние открытых приложений.

Как найти причину подвисания при выходе из блокировки экрана?

Ответ на: комментарий от kirill_rrr

Насчёт видеодрайвера выяснил?

Установлены пакеты:

  • xserver-xorg-video-amdgpu
  • firmware-amd-graphics

Вопросы:

  • Проприетарный драйвер - это firmware-amd-graphics?
  • Как понять, что система использует именно его? Где это включается и отключается?
  • Если его удалить, будет использоваться открытая версия драйвера?
newbie24
() автор топика
Ответ на: комментарий от newbie24

Вот во всех этих вопросах тебе желательно разобраться самому. У меня ноут с видеокартами radeon HD8450G+HD8750M и для него есть свободный драйвер radeon (r600)(включён в mesa, ставится пакетом xserver-xorg-video-radeon и пропиретарный catalyst (fglrx), причём какая то из версий 15.* работала хорошо, а более новые 16.* давали утечку памяти и падение в пределах 2-3 дней использования. Установка каталиста не совсем тривиальная потому что без сбоя и бубна в системе может быть только один из них. Всю эту информацию я собирал и учился довольно немало времени, а по твоей карте я просто не знаю.

https://wiki.archlinux.org/title/AMDGPU_PRO https://www.amd.com/en/resources/support-articles/release-notes/RN-PRORAD-LIN... https://help.ubuntu.ru/wiki/драйвер_видеокарт_amd

Если кратко - amdgpu-pro существует и скорее всего подходит к твоей видеокарте в какой то из версий. Если есть свободное время - стоит изучить, порыться, научиться ставить и посмотреть. Если нет времени то меняй циннамон.

kirill_rrr ★★★★★
()
Ответ на: комментарий от newbie24

firmware-amd-graphics

Предположу что подойдёт для обоих версий драйвера. Но если amdgpu-pro начнёт раскладывать свои версии, то может начать ругаться что файлы уже существуют.

Проприетарный драйвер - это firmware-amd-graphics?

Не, в случае с catalyst (fglrx) можно было взять .run пакет на сайте амд или в некоторых дистрибутивах уже лежали собранные пакеты. Но например вдебиане нет xserver-xorg-video-amdgpu-pro. А firmware это всего лишь микропрограммы, которые должны быть загружены в видеокарту чтобы она заработала.

Как понять, что система использует именно его? Где это включается и отключается?
Если его удалить, будет использоваться открытая версия драйвера?

Во первых glxinfo даёт немного инфы. Потом lsmod (от root'а) показывает список загруженных модулей ядра и там должно быть что то соответствующее. dmesg это лог ядра, там есть кое-что про оборудование и подключенные драйвера, но без гарантий и рыться там сложно. lspci должен выдавать кучу инфы по pci-устройствам, но я крайне слабо умею ей пользоваться.

Фактически важна загрузка одного или другого модуля ядра. Есть механизм добавления ненужного модуля в блэклист чтобы методом исключения загрузился нужный, но надёжней удалить ненужный. Это потому что вместе с модулем ещё идёт пакет библиотек с реализациями OpenGL/Vulcan и прочих api и есть шансы что одни файлы и ссылки на них будут конфликтовать с другими.

Хороший индикатор например для Нвидия - для неё устанавливается или xserver-xorg-video-nvidia, или xserver-xorg-video-nouveau, и они конфликтуют. Для своего радеона я вроде тоже удалял один и ставил другой. Да, это всё делалось через ядерную консоль без возможности запустить ДЕ, так что если что то шло не так... Ну, короче бэкапы обязательно!

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

amdgpu-pro существует и скорее всего подходит к твоей видеокарте в какой то из версий

Я попытался установить amdgpu-pro, но не осилил. Попробую позже на более свежей версии Debian.

Кроме этого я удалил пакет xserver-xorg-video-amdgpu. Но после перезагрузки я не обнаружил изменений в выводе lsmod и glxinfo. Шестерни в glxgears крутятся как и раньше с частотой 60 FPS. Cinnamon не выдал предупреждений о программном рендеринге. На мою проблему это никак не повлияло.

Получается, что удалить xserver-xorg-video-amdgpu недостаточно? Что еще нужно удалить для отключения amdgpu?

# lsmod | egrep '^(Module|amd)'
  Module                  Size  Used by
  amdgpu               6713344  19

Обнаружил, что проблему можно решить, удалив процесс csd-background. Без него тормоза пропадают. Но, возможно, я столкнусь с проблемами в будущем. Я не нашел информации об этом процессе кроме того, что это фоновый плагин демона настроек Cinnamon. Как это понимать?

Простого способа его отключения я тоже не нашел. После уничтожения процесса csd-background его перезапускает родительский cinnamon-session. Его удается удалить, несколько раз сделав killall csd-background и перезапустив cinnamon.

Вопросы:

  • Как правильно отключить csd-background?
  • К каким проблемам это может привести?
  • Что конкретно этот процесс делает?
newbie24
() автор топика
Ответ на: комментарий от newbie24

Как правильно отключить csd-background?

Если у него есть свой собственный пакет (как здесь, например), то можно попробовать удалить этот пакет. Если он за собой при удалении ничего лишнего не потянет, то это будет солидное решение.

Что конкретно этот процесс делает?

Судя по коду, он устанавливает/меняет обои на рабочем столе в каких-то ситуациях.

К каким проблемам это может привести?

Не будут меняться обои при выборе картинки в настройках, или если обои зависят от времени суток, то эта фишка отвалится. А может, вообще обои пропадут.

annulen ★★★★★
()
Ответ на: комментарий от newbie24

кроме того, что это фоновый плагин демона настроек Cinnamon. Как это понимать?

Короче хрень полная, особенно если при убивании ничего не отваливается.

annulen всё правильно написал, но на случай если его советы не помогут, есть жестокие, бессмысленные и беспощадные способы убивания неугодных программ.

Во первых в cron (конфиг /etc/crontab) пишется что то вроде 0,5,10,15,20,25,30,35,40,45,50,55 * * * * rrr killall csd-background - это значит убивать csd-background от пользователя rrr каждую 0-ю, 5-ю, 10-ю и т.д. минуту каждого часа каждого дня идалее по синтаксису (см справку разумеется).

Во вторых можно найти бинарник csd-background, удилить его и заменить пустым файлом (а потом отобрать право на запись) или ссылкой на /dev/null (иногда /dev/zero или какую нибудь безобидную програмку). Правда это будет давать конфликт файлов при обновлениях (можно разрулить вручную). А если всё таки обновится - бдет заменять правильным запускаемым бинарником.

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

Во вторых можно найти бинарник csd-background, удилить его и заменить пустым файлом (а потом отобрать право на запись)

Просто снять бит исполнения не прокатит разве? Вот только у всякой НЁХ отдельного бинарника может и не быть. Вон как в гноме всё запихнули в монолит гномощели.

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

можно попробовать удалить этот пакет.

В Debian 11 такого пакета нет.

Судя по коду, он устанавливает/меняет обои на рабочем столе в каких-то ситуациях.

Пройдя по ссылке на код, я узнал, что CSD это не только client side decoration, но и cinnamon settings daemon. Это знание привело меня к файлу /etc/xdg/autostart/cinnamon-settings-daemon-background.desktop, в который можно добавить параметр Hidden=true.

После перезагрузки csd-background в списке процессов не появился. Старые обои отображаются, новые установить невозможно. Результат меня удовлетворяет.

Решение, скорее всего, найдено, но для окончательных выводов требуется понаблюдать несколько дней.

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

После перезагрузки csd-background в списке процессов не появился. Старые обои отображаются, новые установить невозможно. Результат меня удовлетворяет.

Обои всегда можно поменять другими иксовыми способами, например, с помощью feh. У утилит из DE нет никаких привелегий, в иксах любой желающий может рисовать в корневом окне)

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

Пакет по имени файла можно определить командой dpkg -S путь

В Debian 11 это большой пакет cinnamon-settings-daemon, который я не планирую удалять полностью.

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

Решение, скорее всего, найдено, но для окончательных выводов требуется понаблюдать несколько дней.

Решение с отключением csd-background сработало, но я продолжаю поиск более чистого решения, поэтому вернул csd-background на место.

Помогло снятие всех галочек в настройках скринсейвера. Возврат галочек возвращает проблему. Осталось найти среди этих галочек злополучную.

Эксперименты замедляются тем, что проблема проявляется лишь при длительной работе скринсейвера.

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

Помогло снятие всех галочек в настройках скринсейвера. Возврат галочек возвращает проблему. Осталось найти среди этих галочек злополучную.

Но повторное снятие галочек не улучшило ситуацию. Не понимаю, почему это помогло с прошлый раз, и не сработало в этот.

В прошлый раз я разрешил автозапуск csd-background и перезагрузил компьютер. Затем снял все галки в настройках скринсейвера и стал наблюдать за уровнем нагрузки. Она была на минимальном уровне.

В этот раз никаких манипуляций с csd-background я не выполнял, а просто снял галки. Нагрузка во время работы скринсейвера начала расти.

Лучшее решение на данный момент заключается в отключении csd-background.

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

В прошлый раз я разрешил автозапуск csd-background и перезагрузил компьютер. Затем снял все галки в настройках скринсейвера и стал наблюдать за уровнем нагрузки. Она была на минимальном уровне.

Повторить этот результат мне не удалось. Я снова отключил csd-background, перезагрузил компьютер, выждал 60 часов: нагрузка не выросла. Включил csd-background, перезагрузил компьютер: нагрузка начала экспоненциально расти даже при всех отключенных галках скринсейвера.

Как теперь выяснить, почему нагрузка не росла в прошлый раз?

newbie24
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.