Macbook требуется 20 секунд, чтобы выйти из спящего режима

Macbook требуется 20 секунд, чтобы выйти из спящего режима

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

Через некоторое время решение перестало работать после перезагрузки, поэтому мне пришлось запустить скрипт при перезагрузке, как указано в коротком ответе в начале.

Связанный контент