[РЕШЕНО] suspend-then-hibernate и как оно работает

Привет! Когда-то давно это работало буквально, сначало устройство уходит в сон (suspend), затем спустя время (HibernateDelaySec) выходило из сна и уходило в режим гибернации (hibernate). Сейчас оно так не сработало (настроено по вики). В документации говорится что-то про заряд батареи, если я правильно понимаю то теперь в гибернацию устройство уходит только при разраженном (до 5%) аккумуляторе, верно?

Ссылка на доку
Цитата из неё:
The amount of time the system spends in suspend mode before the RTC alarm wakes the system, before the battery discharge rate can be estimated and used instead to calculate the suspension interval. systemd-suspend-then-hibernate.service(8). Defaults to 2h.

Ответ:
Поведение изменилось в systemd 252. Теперь переход в режим гибернации выполняется только если уровень заряда меньше или равен 5%
Обсуждение проблемы на Github
Обсуждение на bbs.archlinux.org

К счастью, разработчики обещали вернуть эту функцию. Текущее состояние можно отслеживать здесь (GitHub)
Pooh
Когда-то давно это работало буквально, сначало устройство уходит в сон (suspend), затем спустя время (HibernateDelaySec) выходило из сна и уходило в режим гибернации (hibernate).
Как работало, так и работает - в програмнном отношении существенных изменений нет, а вот в части нового железа и новых технологий измения имеются.
В части ссылки из DOC - просто там много написано о ситуации с низким зарядом батареи, точнее поясняется как это работает.
Простому юзеру это и знать особо не нужно - он просто не должен отправлять ноут в suspend при низком заряде батареи, а если ему это иногда и приходится делать, то он должен изменить эти дефолтные 2 часа на приемлемое значение, например, 20 мин, по истечении которых ноут перейдет в режим hibernate ... при условии, что ноут настроен на suspend-then-hibernate.

Старое железо в этом отношении мне больше нравится, так как оно поддерживает настояший режим Suspend-To-RAM (deep mode), а в новых ноутах в основном используется Suspend-to-Idle (s2idle mode) и Standby (shallow mode).
Ошибки не исчезают с опытом - они просто умнеют
Спасибо за развёрнутый ответ.

Почему-то не переходит мой ноутбук в hibernate, остаётся всё время в suspend. При этом в syslog видно что срабатывает именно suspend-then-hibernate
янв 10 03:42:49 not-a-virus kernel: PM: suspend entry (deep)
янв 10 03:42:49 not-a-virus systemd-sleep[357979]: Entering sleep state 'suspend'…
янв 10 03:42:49 not-a-virus systemd[1]: Starting Suspend; Hibernate if not used for a period of time…

➜ cat /etc/systemd/sleep.conf
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it under the
# terms of the GNU Lesser General Public License as published by the Free
# Software Foundation; either version 2.1 of the License, or (at your option)
# any later version.
#
# Entries in this file show the compile time defaults. Local configuration
# should be created by either modifying this file, or by creating "drop-ins" in
# the sleep.conf.d/ subdirectory. The latter is generally recommended.
# Defaults can be restored by simply deleting this file and all drop-ins.
#
# See systemd-sleep.conf(5) for details.

[Sleep]
#AllowSuspend=yes
#AllowHibernation=yes
#AllowSuspendThenHibernate=yes
#AllowHybridSleep=yes
#SuspendMode=
#SuspendState=mem standby freeze
#HibernateMode=platform shutdown
#HibernateState=disk
#HybridSleepMode=suspend platform shutdown
#HybridSleepState=disk
HibernateDelaySec=30m
Pooh
Почему-то не переходит мой ноутбук в hibernate, остаётся всё время в suspend. При этом в syslog видно что срабатывает именно suspend-then-hibernate
Для начала рекомендуют настроить режим hibernate, убедиться что он работает нормально.
Если режим suspend работает по дефолту (не требуют настройки), то режим hibernate требует дополнительной настройки и эта настройка не такая уж и простая. И только после того как нормально заработает режим hibernate, можно приступать к настроке suspend-then-hibernate.
Следует отметить, что почти во всех системах linux режим hibernate не настроен по дефолту - считается не надежным, да и не у всех работает.

В части
Pooh
Почему-то не переходит мой ноутбук в hibernate
Кстати, а как запускаешь suspend-then-hibernate или просто hibernate???
Ошибки не исчезают с опытом - они просто умнеют
vasek
Для начала рекомендуют настроить режим hibernate, убедиться что он работает нормально.
Если режим suspend работает по дефолту (не требуют настройки), то режим hibernate требует дополнительной настройки и эта настройка не такая уж и простая. И только после того как нормально заработает режим hibernate, можно приступать к настроке suspend-then-hibernate.
Следует отметить, что почти во всех системах linux режим hibernate не настроен по дефолту - считается не надежным, да и не у всех работает.
hibernate настроен и работает корректно, если я его вызываю вручную (systemctl hibernate).

vasek
Кстати, а как запускаешь suspend-then-hibernate или просто hibernate???
В случае, когда я вызываю вручную suspend-then-hibernate, ноутбук засыпает (suspend) и ждёт меня :)

UPD.
Кое что по теме удалось найти (github issue), похоже это перестало работать в ядре версии 6+ в systemd 252

UPD. UPD.
Будет более точным, если я скажу что поведение изменилось в systemd 252 как и документация к функции.

251:
suspend-then-hibernate
A low power state where the system is initially suspended (the state is stored in RAM).
If not interrupted within the delay specified by HibernateDelaySec=, the system will be
woken using an RTC alarm and hibernated (the state is then stored on disk).

В принципе, тему можно пометить как решённую.
Pooh
Будет более точным, если я скажу что поведение изменилось в systemd 252 как и документация к функции.
Возможно в системе и изменилось, а вот в BIOS возможно и нет. Если есть желание, то можешь проверить работу hibernate, реализованную BIOS, для чего измени параметр
echo 1 | sudo tee /proc/sys/kernel/acpi_video_flags
( 0 - реализация OS, установлено по дефолту …. 1 - реализация BIOS)
Имей ввиду, что может и не сработать при выходе.


EDID -1 - нет смыла и пробовать, забыл, что нужен не hibernate, а suspend-then-hibernate ... а это системная фича и к тому же начинается с suspend.

EDID -2 - бегло покапалься на BBS и попался этот топик. Для ликбеза - приведи вывод systemd-inhibit --list
У меня задействован только suspend и вывод следующий
WHO    UID USER PID  COMM    WHAT  WHY                  MODE
UPower 0   root 1168 upowerd sleep Pause device polling delay
Насколько понял это UPower и отслеживает заряд батареи
Кстати, уже не 1-ый раз встречается использование симлинка
ln -s /usr/lib/systemd/system/systemd-suspend-then-hibernate.service /etc/systemd/system/systemd-suspend.service
... не пробовал? ...
Ошибки не исчезают с опытом - они просто умнеют
… не пробовал? …
Я в первом посте дополнил всю информацию по проблеме. Пока откатился до systemd 251, здесь это работает как нужно.
В 253 разработчики обещали исправить это.

Ещё раз спасибо за желание помочь :)
Pooh
Я в первом посте дополнил всю информацию по проблеме. Пока откатился до systemd 251, здесь это работает как нужно.
В 253 разработчики обещали исправить это.
Виноват, это я не видел, так как в 1-ый пост повторно не заглянул ... то есть проблема все-таки системная.
Ошибки не исчезают с опытом - они просто умнеют
А у меня, традиционно, не все как у людей. ГИбернайт работает на ура. Суспенд - по нажатию кнопки уходит в этот режим, о чем моргает лампочка. Но не выходит. Точнее вместо выхода из суспенда имеем чистую загрузку, с нуля. По идее он даже загрузку и груб не должен дергать, но .... Куда копать?
wau
Куда копать?
есть дурная идея потыкать режимы acpi в биосе
 
Зарегистрироваться или войдите чтобы оставить сообщение.