Kubuntu 20.04 на Macbook Air прекрасно переходит в спящий режим, но каждый раз для выхода из него требуется слишком много времени, около 20 секунд.
Похоже, это случай обычного режима ожидания/сна, а не гибернации, поскольку systemctl suspend
вызывает одно и то же поведение.
запустив это, проснувшись и затем запустив
journalctl -b --since "1min ago"
я получилэтот(на Pastebin). Там не упоминается гибернация.
Что касается памяти и подкачки, то я думаю, что оперативной памяти достаточно:
~$ free -h
total used free shared buff/cache available
Mem: 3,8Gi 703Mi 1,7Gi 162Mi 1,4Gi 2,7Gi
Swap: 2,0Gi 440Mi 1,6Gi
решение1
Короткий ответ:
В 22.04:
echo deep | sudo tee -a /sys/power/mem_sleep
Если вышеизложенное не работает в версии 22.04 или если это происходит в версии 22.10, 23.04 или более поздней:
echo s2idle | sudo tee -a /sys/power/mem_sleep
Решение может перестать работать после обновлений ядра и даже после перезагрузок, поэтомускрипт с нужной командой можно запустить при перезагрузке.
Первая часть немного противоречива, потому что deep
всегда должна вызывать долгое пробуждение и s2idle
короткое, как уже было сказаноздесь. Вероятно, что-то было не так в моем 22.04, где, по крайней мере, иногда наблюдалось обратное.
Длинный ответ:
Вскоре после того, как я опубликовал этот вопрос, я наткнулся на решение, которое, как мне показалось, сработало: на ubuntuforumsздесь, с большим количеством советов в ответ на это,здесь.
Я не совсем понимаю, как это работает, возможно, это ошибка. В этом посте говорится, что решение — переключиться /sys/power/mem_sleep
с s2idle
на deep
. Мне это было непонятно, потому что при поиске в этом файле он содержал одну строку:
s2idle [deep]
Который означает, чтоdeep
уже был выбран(!!) — не говоря уже о том, что, как было сказано выше, следовало ожидать противоположного поведения. —
Я понял, что делает эта команда, после того, как спросил об этом.здесь.
Как указано в первых комментариях на ubuntuforums, я не пытался изменить этот файл как таковой, но я использовал команду (также основанную на втором комментарии):
echo deep | sudo tee -a /sys/power/mem_sleep
Снова взглянув на этот файл, он, похоже, не изменился. Даже после перезапуска он был по-прежнему s2idle [deep]
, но в тот моментвыход из спящего режима был мгновенным! (Что, насколько я знаю в ретроспективе, было, как уже говорилось, противоположностью тому, что ожидалось: deep
должно было означать долгое пробуждение!)
Похоже, что файл не был изменен этой командой, ночто-нибудьбыл изменен — связанный с этим файлом или нет.
Изменив это на [s2idle] deep
соответствующую команду echo s2idle | sudo tee -a /sys/power/mem_sleep
(чтобы немного разобраться в этом, как обсуждалось в комментариях, связанных со связанным вопросом), проблема с 20-секундным длительным бодрствованием не исчезла.нетпоявляются снова.
Возможно, имел место какой-то баг, который я не могу отследить.
После некоторого обновления ядра первоначальная проблема появилась снова и была исправлена тем же способом. (Действительно, файл /sys/power/mem_sleep
уже был в той форме, которую должна вызывать команда, но последняя тем не менее необходима.)
Обновление (24 октября 2022 г.):
После нового обновления указанное выше решение больше не работало, но противоположное решение сработало: echo s2idle | sudo tee -a /sys/power/mem_sleep
, что равносильно выполнениювопрекик чему меня подтолкнули мои источники.
В тот момент это показалось мне странным, но теперь я понимаю, что на самом деле это было ожидаемое поведение с самого начала: то, что происходило раньше, было странным и глючным, а новое обновление это исправило; s2idle
должно было доказать быстрое пробуждение.
После обновления до «обычной» версии 22.10 проблема на некоторое время, казалось, была устранена, в то время как файл /sys/power/mem_sleep
выглядел сброшенным до deep
. Но проблема с задержкой пробуждения в 20 секунд появилась снова и была исправлена, как сказано выше в Обновлении 2. Снова подтвердилось после чистой установки Kubuntu 22.10: после того, как я терпел проблему в течение месяца (просто чтобы посмотреть, можно ли это исправить иным образом), первая команда не помогла, вторая помогла (февраль 2023 г.).
Поскольку эта проблема сохраняется (например, в версии 23.04 и довольно часто появляется между обновлениями), я настроил более быструю процедуру для запуска этой команды из Application Launcher, создав файл скрипта fix_suspend
в следующем виде:
#!/bin/sh
echo s2idle | sudo tee -a /sys/power/mem_sleep
и файл, ~/.local/share/applications/Fix suspend.desktop
содержащий строку (адаптированную для Plasma):
Exec=pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY KDE_SESSION_VERSION=5 KDE_FULL_SESSION=true /path/to/fix_suspend
Через некоторое время решение перестало работать после перезагрузки, поэтому мне пришлось запустить скрипт при перезагрузке, как указано в коротком ответе в начале.