Qual o tamanho de uma partição swap necessária para hibernar?

11

Eu li essa pergunta , mas ela não responde definitivamente à minha pergunta.

Se eu quiser que meu computador seja capaz de hibernar, preciso ter uma partição de swap tão grande quanto minha RAM ou o Ubuntu sabiamente será capaz de hibernar se a partição de swap puder caber na RAM atualmente em uso ? Estou prestes a instalar o Ubuntu em um computador com muita RAM e um disco rígido relativamente pequeno, por isso não quero usar mais espaço no disco rígido do que o necessário.

Eu queria evitar fornecer minhas especificações reais para manter essa pergunta mais geral, embora as forneça se necessário.

Cowboy de encerramento
fonte

Respostas:

9

É difícil prever: sua troca precisa acomodar

  • o que já está na troca quando você hiberna
  • o que há na RAM quando você hiberna, mas apenas a parte que não é cache ou buffer de disco; a imagem da RAM é compactada se você usaruswsusp
  • algumas estruturas de dados do kernel

Portanto, você pode deixar de hibernar, mesmo que seu swap seja maior que sua RAM, porque a maior parte do seu swap já está em uso. E, inversamente, você pode hibernar com sucesso com uma troca menor que a RAM, se você não estiver usando muita coisa no momento.

Se você deseja evitar uma partição de troca de tamanho fixo porque seu disco é muito pequeno, você pode optar por um arquivo de troca. É mais fácil redimensionar, e a hibernação para um arquivo de troca deve ser suportada (não tenho certeza se funciona de forma corrente, isso aconteceu entre as versões do Ubuntu; o IIRC fez na 9.10, mas precisou ser configurado na 10.10 )

Gilles 'SO- parar de ser mau'
fonte
1
Cache de disco não é comprimido
psusi
1
a maneira como você o formulou fez parecer que você estava dizendo que o cache está compactado, não a imagem de hibernação. Para que a imagem de hibernação seja compactada, você precisa instalar o pacote uswsusp. A implementação padrão do kernel não é compactada.
Psusi
2

Essa pergunta continua aparecendo em consultas comuns ao dimensionar a troca para configurar a hibernação. A resposta original está correta, pois pode variar incrivelmente com base na sua carga de trabalho, mas não acho que seja uma resposta completa.

A resposta completa é que você pode dizer quanto precisa com base na sua carga de trabalho específica e pode dimensionar adequadamente.

A ferramenta básica são as mensagens do kernel durante o hibernar. Você deseja ver quanta memória foi usada com este comando:

sudo cat /var/log/syslog | grep 'PM:'|grep kbytes

Você deve obter uma saída como:

Aug 14 11:03:20 mike-XPS-15-9570 kernel: [17594.823584] PM: Allocated 11809876 kbytes in 2.65 seconds (4456.55 MB/s)
Aug 14 11:03:20 mike-XPS-15-9570 kernel: [17605.365657] PM: Wrote 11787284 kbytes in 9.09 seconds (1296.73 MB/s)

Em seguida, a estratégia é executar sua carga máxima e acionar uma hibernação, ver qual espaço de troca era necessário, possivelmente adicionar uma margem de segurança e tornar seu espaço de troca desse tamanho.

Mike Hardy
fonte