Estou executando o XUbuntu 16.04 com kernel 4.4.0-116-generic (mas o mesmo vale para versões anteriores) e 16 GB de RAM. Estou usando um disco rígido "tradicional" (sem SSD) e meu swappiness é 0 (a RAM raramente está cheia).
Tenho experimentado o seguinte com a hibernação: a hibernação propriamente dita leva menos de 2 minutos, mas a retomada leva muito, muito mais tempo até que os aplicativos respondam (hoje demorou mais de 10 minutos para chegar ao prompt do light-locker).
Não acho que isso seja utilizável (leva mais tempo para sair da hibernação do que inicializar para uma nova sessão e reabrir os programas).
Como posso melhorar o desempenho? Eu sou o único enfrentando esses problemas?
É verdade que o uso de memória agora é de 8,8 GB, mas o que me incomoda é a discrepância entre os tempos de hibernação e retomada. Eu entendo de outras perguntas que pode ser porque durante a hibernação, o kernel congela todos os processos e despeja a RAM em bloco para trocar, enquanto ao retomá-lo apenas permite que os processos solicitem suas páginas na troca.
Esta é uma explicação válida? Em caso afirmativo, por que isso é feito, já que a leitura de grandes blocos de discos rígidos é mais rápida que os acessos aleatórios? Posso configurar a hibernação para não proceder desta forma? A pergunta "Restaurando o estado da página trocada/na memória ao retornar da hibernação" parece relacionada, mas não conheço o suficiente das páginas para realmente entender se o que elas fazem ("observe as tags que rotulam quais páginas estão no disco e em RAM, então restaure este estado exato ao retomar") é útil e também não sei como fazê-lo.
Acho que suas experiências são muito comuns para o aka hibernação . suspend-to-disk , especialmente ao usar um disco rotativo.
Na documentação do kernel , há uma solução alternativa mencionada que parece estar relacionada à ideia do link que você postou. Se eu acertasse, isso apenas esvaziaria a troca de uma vez, em vez de passo a passo no currículo. Mas ainda precisa ler todo o swap usado e pode levar algum tempo.
O que você pode querer testar é suspender para ram ou suspender para ambos, o que é muito bem explicado no Arch Wiki . Basicamente:
Dependendo do seu ambiente, como o método de suspensão/hibernação é iniciado, você pode configurar isso, por exemplo, no XFCE com a GUI xfce4-power-manager .
Depois de ler os links úteis compartilhados neste tópico e tentar algumas coisas, abaixo está o que funcionou para mim.
Por padrão
/sys/power/image_size
, é definido como 2/5 da RAM. A RAM do meu sistema é de 12 Gb e o tamanho do arquivo de troca é de 8 Gb. Neste caso/sys/power/image_size
foi em torno de 5 Gb.Ao hibernar, se o uso da memória estiver acima desse limite, o sistema demora muito para reiniciar. Ao aumentar
/sys/power/image_size
para 8 Gb (tamanho da memória de troca), o tempo de retomada melhorou muito!A documentação do kernel diz que é seguro aumentar
/sys/power/image_size
. O limite padrão de 2/5 da RAM do sistema parece ser muito baixo.