Erro -12 imagem de hibernação. Não há memória livre suficiente (às vezes)

1

Estou tendo um problema com a hibernação no Ubuntu 12.10, ele funcionou bem em 12.04. Quando eu tento e hibernar às vezes parece hibernar gera um erro e me retorna para a área de trabalho. O erro que recebo é este:

PM: Creating hibernation image:
PM: Need to copy 375021 pages
PM: Normal pages needed: 117957 + 1024, available pages: 110205
PM: Not enough free memory
PM: Error -12 creating hibernation image

Agora eu entendo o que o erro significa, mas não faz sentido. Meu arquivo de troca é de 5 GB e raramente é usado já que tenho 4 GB de RAM. Eu sei que é recomendado ter 1.5 vezes mais swap do que RAM, etc, mas o espaço não parece ser o problema, apesar do erro.

Por exemplo, raramente uso mais de 25% -30% da minha RAM, mas ainda tenho o problema acima.

Além disso, em um novo boot e login, sem programas abertos e usando apenas cerca de 12% de RAM, eu posso obter o erro acima - ainda em outras vezes eu posso hibernar enquanto estiver usando 25% da minha memória RAM.

Além disso, se eu continuar tentando hibernar, isso eventualmente acontece depois de lançar o erro acima quatro ou cinco vezes. Uma hibernação bem-sucedida se parece com isso:

PM: Creating hibernation image:
PM: Need to copy 295511 pages
PM: Normal pages needed: 95534 + 1024, available pages: 132627

Existe alguma configuração que eu preciso ajustar ou algo que eu preciso fazer antes de hibernar para evitar esse problema?

Eu acho que a pergunta poderia ser melhor interpretada como: Existe alguma maneira de liberar com segurança os buffers e o cache antes da hibernação? Além de tentar hibernar várias vezes até que seja bem sucedido!

Obrigado antecipadamente.

    
por user99306 31.10.2012 / 01:46

2 respostas

1

Acredito que encontrei uma solução parcial aqui . Se eu digitar o comando:

sudo sync && sudo sysctl -w vm.drop_caches=3

Antes de tentar hibernar, eu não tenho mais problemas e hibrava a primeira vez, todas as vezes. Isso parece esvaziar o cache, deixando bastante memória (RAM) livre para criar a imagem.

Eu não sou programador, mas parece ilógico que o Ubuntu não faça isso antes da hibernação, afinal? Obviamente, faz algo semelhante, uma vez que tentativas de hibernação repetidas têm o mesmo resultado, mas claramente não o fazem antes de tentarem hibernar. Certamente, é ineficiente quando hibernando escrever também todos os buffers e cache no disco, já que eles também terão que ser recarregados no reinício, mesmo que eles não sejam mais necessários. Certamente seria mais eficiente se o Ubuntu despejasse o cache, ou pelo menos partes que não foram usadas por algum tempo, antes da hibernação?

O fato de não fazer isso é provavelmente a razão pela qual é recomendado ter o dobro do tamanho da RAM para o espaço de swap; terrivelmente ineficiente, especialmente nos dias de SSDs, onde se você tem 16GB de RAM, você perderia 32GB (potencialmente metade do seu espaço HD) de espaço para um arquivo de troca que só é usado para hibernar.

Com os tamanhos cada vez maiores de RAM, eu diria que esta é uma área que precisa ser analisada. O espaço HD pode ser barato, mas isso não é desculpa para desperdiçá-lo devido a ineficiências.

    
por user99306 03.11.2012 / 13:50
0

Descobri que meu problema pode estar relacionado a algo totalmente diferente e não ao fato de os buffers e o cache estarem cheios.

Alguns dias depois da minha última postagem, não consegui inicializar sem uma verificação de disco em execução, mas as verificações de disco pararam de funcionar e nunca foram concluídas. Eu finalmente consegui obter as verificações de disco concluídas manualmente e descobri muitos erros, que foram corrigidos.

Por um capricho eu tentei a hibernação novamente sem o comando abaixo para esvaziar o cache e foi bem-sucedido. Eu tenho hibernado pela primeira vez desde então sem problemas, mesmo com 30-40% de RAM em uso, e sem a necessidade de limpar o cache primeiro, e é sempre bem-sucedido.

Portanto, parece que o erro inicial estava relacionado a erros no disco e não a memória livre e, assim que esses erros foram corrigidos, o problema desapareceu. Então, se você receber o erro acima, você pode querer verificar todas as suas partições por erros antes de tentar qualquer outra coisa.

Espero que isso seja útil para alguém.

    
por user99306 07.11.2012 / 01:50