Tenho lido muito conteúdo na web sobre os modos de suspensão, hibernação e suspensão de um computador, mas não encontrei nenhuma discussão sobre esta questão aparentemente simples:
Qual é a diferença, se houver, entre
- apenas saindo de um computador Linux , executando, digamos, Ubuntu 22.4 LTS, mas realmente poderia ser qualquer distribuição e versão, e
- invocando explicitamente o comando suspend , seja pela linha de comando ou por uma interface gráfica?
Ambos os casos devem permitir que você volte ao computador mais tarde, clique com o mouse ou digite uma tecla e "acorde-o".
Se há uma diferença, qual é? Se não há diferença, por que o comando suspend é necessário?
E, a propósito, existe um nome para "simplesmente ir embora"? É isso que "dormir" significa?
Vejo esses termos sendo usados sem nenhuma definição precisa do que cada um significa.
Atualização: Por que estou perguntando isso?
A maioria do material que encontro em relação às diferentes formas de sono, suspensão ou hibernação do computador assume que a principal preocupação de qualquer um que pergunte é o consumo de energia. Essa não é minha preocupação.
Minha preocupação é que quando eu sair do computador, eu possa voltar a ele com segurança e não precise reiniciá-lo.
Minha preocupação é que comprei um laptop bem caro da Lenovo, com uma placa de vídeo nVidia (não vou entrar em detalhes técnicos aqui) da qual não posso me afastar e assumir com segurança que o sistema acordará quando eu voltar a ele e pressionar uma tecla ou clicar com o mouse. Às vezes funciona, às vezes não. Parece que invocar explicitamente a suspensão é um pouco mais confiável, não trava com tanta frequência, mas não é 100% confiável, talvez 90%. No meu computador anterior, um laptop Lenovo de 10 anos, eu não precisava me preocupar com nada disso.
Atualização 2: corrigindo o original para mencionar "livrar-se do Secure Boot no UEFI" em vez de "livrar-se do UEFI" como um pré-requisito para atingir a hibernação.
A hibernação se sugere como a maneira mais confiável de conseguir o que estou procurando, mas não está disponível no meu computador que usa Secure Boot sob UEFI. Então uma opção é desabilitar o Secure Boot. Eu estava relutante em fazer isso, mas parece ser o caminho que tenho que seguir.
Minha principal preocupação é a confiabilidade, não o consumo de energia.
"Suspender" no Linux tem um significado bem definido , especialmente (mas não exclusivamente) na plataforma x86_64. Quando as pessoas dizem "suspender", elas querem dizer "suspender para RAM"; somente em plataformas onde isso não é suportado pelo hardware "suspender para ocioso" seria algo que alguém poderia considerar. Não estou ciente de nenhuma plataforma Linux atual que não suporte suspender para RAM; elas podem existir, mas para o seu PC, não há dúvidas sobre "suspender" significar "suspender para RAM", conforme descrito abaixo.
Isso significa que você interrompe todos os núcleos da CPU, depois de salvar todos os estados dos dispositivos na RAM, colocando todos os dispositivos em um estado em que eles podem ser colocados em hibernação e despertados consistentemente mais tarde, colocando-os em hibernação e, finalmente, colocando os registros de todos os núcleos da CPU em um estado bem definido, antes de colocar cada núcleo da CPU em um estado de hibernação específico.
Nesse estado de hibernação, a CPU na verdade é parada; apenas o controlador de memória continua funcionando para atualizar a RAM, para que o estado que você armazenou na RAM não seja perdido. Apenas as unidades necessárias para poder acordar (por exemplo, o controlador USB para que você possa pressionar um botão no seu teclado para acordar) são energizadas e operam de forma autônoma. Coisas como discos rígidos e SSDs são literalmente instruídos a desligar.
(Esses estados de sono são coisas bem definidas no x86 e na maioria das outras plataformas que você pode encontrar na realidade. Entrar nesses estados é um procedimento bem documentado, e você tem que fazer coisas específicas para acordar. Não é nada indefinido o que isso significa!)
Se você simplesmente se afastar, pelo menos um núcleo da CPU continuará funcionando, e mesmo que um sistema Linux em execução não tivesse coisas para fazer regularmente (atualizar a tela 60 vezes por segundo, manter a placa de som alimentada com amostras, atualizar contadores, manter a mídia de armazenamento e, geralmente, fazer muitas coisas em segundo plano), ele nunca desligaria completamente.
Dessa forma, quando você se afastar, sua fonte de alimentação ainda estará alimentando toda a sua CPU, todos os seus dispositivos e estará pronta para fornecer grandes quantidades de energia de repente.
No outro lado dessa grande economia de energia da suspensão está o fato de que, bem, você está realmente parando sua CPU! Nenhum software está mais em execução. Se você simplesmente se afastasse e alguém escrevesse para você no chat, e você tivesse deixado seu programa de chat aberto, você ouviria um som. Na suspensão, nada disso poderia acontecer, porque não há mais nada "conversando" com nada.
Para parar de agendar processos de userland, para terminar de escrever coisas no armazenamento, para colocar componentes de hardware em um estado de desligamento, para desligá-los, para salvar estados de CPU na RAM e, finalmente, colocar os núcleos de CPU no modo de hibernação correto. (Você descobrirá que coisas como
systemctl suspend
fazem muitas coisas para deixar seu computador bem preparado.)Claro, na ausência de bugs de driver e hardware, isso é confiável. Na prática, isso não tem sido um problema nos últimos ~ 13 anos ou mais em hardware de laptop e desktop bem suportado. Há exceções irritantes para isso – drivers de kernel proprietários para placas de vídeo vêm à mente. Mas isso melhorou! Então, em geral, sim, você pode esperar isso.
Parece que você é afetado por isso e, francamente, a Nvidia, que está literalmente ganhando bilhões vendendo GPUs para usuários Linux (principalmente para fins de aprendizado de máquina, o mercado de GPUs para gamers/laptops é relativamente pequeno, comparativamente a isso), é a culpada por isso.
não é assim que funciona: a hibernação funciona bem em máquinas UEFI. Na verdade, o estado de inicialização mais bem definido que sai dos carregadores de inicialização UEFI é mais agradável para sair da hibernação do que a bagunça que era o BIOS. Além disso, se a hibernação funcionasse apenas em máquinas "BIOS", ela simplesmente não existiria mais. "BIOS" hoje em dia é emulado pelo mesmo firmware que implementa a interface UEFI. Então, seja lá o que for que o impeça de hibernar: não é o fato de você estar executando em uma máquina UEFI.
não é uma opção, é isso que inicializa seu computador :)
A principal diferença é o consumo de energia. Qualquer um dos seguintes pontos pode ou não se aplicar ao seu sistema:
Hibernação do disco rígido: discos rígidos clássicos (aqueles com discos giratórios) usam energia para manter os pratos girando durante o tempo de atividade. Alguns têm eletrônicos de conservação de energia, o que os faz parar de girar após um certo tempo sem uso, mas alguns não, e o SO os desligará ao suspender.
Ciclos de clock da CPU: especialmente versões móveis de CPUs podem usar uma variedade muito ampla de taxas de clock. Como regra geral, o consumo de energia de uma CPU se correlaciona com o quadrado de sua taxa de clock (é por isso que os computadores modernos precisam de todos esses mecanismos elaborados de transferência de calor - suas taxas de clock são absurdamente altas), portanto, uma quantidade significativa de energia pode ser conservada quando a taxa de clock é reduzida a quase zero.
desligue o monitor: laptops/notebooks normalmente usam ~30% da energia para alimentar seu monitor interno - se ele for usado. Desligá-lo é especialmente útil para que esses computadores móveis durem mais com a bateria.
desligue hardware não essencial: há alguns dispositivos que um computador suspenso não precisa, por exemplo, o adaptador WLAN. Desligar esses dispositivos não essenciais também economiza energia e prolonga o tempo de execução da bateria. Basicamente, no modo suspenso, você precisa apenas de RAM (que precisa ser constantemente atualizada para manter seu conteúdo) e talvez algumas partes do chipset, talvez o conteúdo da memória local das GPUs - a maioria das outras coisas pode ser desligada e rapidamente ligada quando a operação normal for retomada.
Atualização, após a pergunta ter sido reformulada
Não conheço muito bem o hardware de PC, pois trabalho principalmente com sistemas POWER e System-Z (também conhecidos como mainframe), então posso lhe dar apenas dicas gerais:
Normalmente, o problema com modos de suspensão com falha é a reinicialização do hardware gráfico. Muitos laptops têm GPUs integradas ao conjunto de chips e, quando ele é ligado novamente, restaurar os registros/status da GPU não é tão fácil quanto restaurar o estado da CPU.
Primeiro, determine qual é exatamente o status após um retorno malsucedido da suspensão: sistema completamente inativo, GPU inativa, mas sistema ativo, sistema e GPU ativos, mas X inativo, etc. Tente
ping
isso e/oussh
isso.Se você puder se conectar a ele: examine
/var/log/kern.log
e/var/log/Xorg.0.log
, pode haver algumas informações úteis.Você também pode tentar conectar um terminal serial (via USB). Talvez o sistema esteja funcionando, mas o hardware de rede esteja tão inativo quanto os gráficos.
Uma palavra sobre hibernação, também conhecida como suspend-to-disk: isso é frequentemente desabilitado em muitas distribuições e tem que ser explicitamente reabilitado se você quiser usá-lo. Eu não uso nenhum Ubuntu, mas aqui está um link que pode ajudar.