O Kubuntu 20.04 no Macbook Air suspende perfeitamente, mas leva muito tempo para acordar a cada vez, cerca de 20 segundos.
Parece ser um caso de suspensão/suspensão normal, não de hibernação, visto que systemctl suspend
desencadeia o mesmo comportamento.
executando isso, acordando e depois correndo
journalctl -b --since "1min ago"
eu receboesse(no Pastebin). não há hibernação mencionada lá.
Quanto à memória e swap, acho que há RAM suficiente:
~$ 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
Responder1
Resposta curta:
Em 22.04:
echo deep | sudo tee -a /sys/power/mem_sleep
Se o procedimento acima não funcionar em 22.04 ou se acontecer em 22.10, 23.04 ou posterior:
echo s2idle | sudo tee -a /sys/power/mem_sleep
A solução pode parar de funcionar após atualizações do kernel e mesmo após reinicializações, entãoum script com o comando necessário pode ser executado na reinicialização.
A primeira parte é um pouco contraditória, pois deep
deve sempre desencadear o despertar longo e s2idle
o curto, como ditoaqui. Provavelmente havia algo de errado no meu 22.04, onde pelo menos aparentemente o oposto às vezes acontecia.
Resposta longa:
Logo depois de postar esta pergunta me deparei com uma solução que parecia funcionar: no ubuntuforumsaqui, com mais conselhos em resposta a isso,aqui.
Eu realmente não entendo como isso funcionou, um bug pode estar envolvido. Esse post diz que a solução é mudar /sys/power/mem_sleep
de s2idle
para deep
. Isso não ficou claro para mim porque, ao procurar esse arquivo, ele continha esta única linha:
s2idle [deep]
o que significa quedeep
já foi selecionado(!!) — sem contar que, como dito acima, era de se esperar o comportamento contrário. -
Eu entendi o que o comando faz depois de perguntar sobre issoaqui.
Conforme instruído nos comentários iniciais do ubuntuforums, não tentei alterar esse arquivo como tal, mas usei o comando (com base também no segundo comentário):
echo deep | sudo tee -a /sys/power/mem_sleep
Olhando novamente para aquele arquivo, ele parecia inalterado. Mesmo depois de reiniciar ainda estava s2idle [deep]
, mas naquele ponto oa ativação da suspensão foi instantânea! (O que, pelo que sei em retrospectiva, foi, como dito, o oposto do que se esperava: deep
deveria significar um longo despertar!)
Parece que o arquivo não foi alterado por esse comando, masalgofoi alterado - relacionado a esse arquivo ou não.
Mudando isso para [s2idle] deep
um comando correspondente echo s2idle | sudo tee -a /sys/power/mem_sleep
(para investigar um pouco isso, conforme discutido nos comentários relacionados à pergunta vinculada), o problema de vigília prolongada de 20 segundos feznãoreaparecer.
Talvez algum bug que não consigo rastrear esteja em jogo.
Após alguma atualização do kernel, o problema inicial reapareceu e foi corrigido da mesma forma. (Na verdade, o arquivo /sys/power/mem_sleep
já estava na forma que o comando deveria acionar, mas o último é necessário mesmo assim.)
Atualização (24 de outubro de 2022):
Após uma nova atualização, a solução acima não funcionou mais - mas a solução oposta funcionou: echo s2idle | sudo tee -a /sys/power/mem_sleep
, o que equivale a fazer ocontrárioao que minhas fontes me levaram a fazer.
Isso me pareceu bizarro naquele momento, mas agora entendo que na verdade esse era o comportamento esperado o tempo todo: o que aconteceu antes foi estranho e cheio de erros, e a nova atualização corrigiu isso; s2idle
deveria provar o despertar rápido.
Depois de atualizar para a versão "normal" 22.10, o problema pareceu resolvido por um tempo, enquanto o arquivo /sys/power/mem_sleep
parecia redefinido para deep
. Mas o problema de atraso de ativação de 20 segundos reapareceu e foi corrigido como dito acima na Atualização 2. Novamente confirmado após uma instalação limpa do Kubuntu 22.10: depois de tolerar o problema por um mês (só para ver se isso pode ser corrigido caso contrário), o primeiro comando não ajudou, o segundo sim (fevereiro de 2023).
Como esse problema continua (por exemplo, na versão 23.04 - e reaparece com bastante frequência entre as atualizações), configurei um procedimento mais rápido para executar esse comando no Disparador de Aplicativos, criando um arquivo de script fix_suspend
no formato:
#!/bin/sh
echo s2idle | sudo tee -a /sys/power/mem_sleep
e um arquivo ~/.local/share/applications/Fix suspend.desktop
contendo a linha (adaptada para Plasma):
Exec=pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY KDE_SESSION_VERSION=5 KDE_FULL_SESSION=true /path/to/fix_suspend
Depois de um tempo, a solução parou de funcionar após a reinicialização, então tive que executar o script na reinicialização, conforme indicado na resposta curta no início.