Swap com o dobro da RAM ainda é válido?

A regra de usar o dobro da RAM como swap era comum em tempos onde a memória RAM era um recurso mais escasso.

A ideia era garantir que o sistema tivesse espaço suficiente para continuar funcionando mesmo quando a memória RAM estivesse completamente ocupada.

Antigamente, os computadores tinham pouca memória RAM, e o swap era essencial para evitar travamentos.

Dobrar a quantidade de swap garantia uma margem de segurança para lidar com picos de uso de memória.

Ainda é válida?

Hoje em dia, a memória RAM é mais barata e os computadores possuem quantidades significativas de RAM.

Os sistemas operacionais modernos, como o Linux, são mais eficientes em gerenciar a memória, reduzindo a necessidade de swap.

Em servidores e máquinas virtuais, onde a carga de trabalho pode variar muito, o swap pode ser útil para o correto funcionamento dos aplicativos.

Então?

Não há uma regra rígida. A quantidade ideal de swap varia de acordo com o hardware, o sistema operacional e o perfil de uso. Se você tem muita RAM, pode não precisar de swap ou até mesmo dispensá-lo.

Utilize os vomandos free e vmstat para monitorar o uso do swap e ajustar a configuração se necessário.

E na hibernação?

A hibernação no Linux é um recurso que permite que você “congele” o estado atual do seu sistema e salve-o num arquivo em disco.

Quando você religa o computador, ele carrega esse arquivo e volta exatamente para onde você parou, como se não tivesse sido desligado.

Ao hibernar, o Linux copia todo o conteúdo da memória RAM (onde os programas em execução estão armazenados) para um arquivo de hibernação no disco.

Após salvar o estado, o computador é desligado completamente, consumindo praticamente nenhuma energia.

Ao religar o computador, ele lê o arquivo de hibernação e restaura todos os programas e configurações para o estado em que estavam antes da hibernação.

Você pode continuar trabalhando exatamente de onde parou, sem perder nenhum dado ou progresso.

O arquivo de hibernação pode ocupar bastante espaço, especialmente se você tiver muita memória RAM.

A quantidade ideal de swap para habilitar a hibernação, no Linux, não é fixa e depende de diversos fatores.

Com mais RAM, você precisará de mais swap para hibernar todo o estado do sistema. Desktops, servidores e máquinas tem necessidades diferentes.

O kernel Linux pode comprimir a imagem de hibernação, reduzindo a quantidade de espaço em disco necessária.

Para garantir que todo o estado do sistema seja salvo durante a hibernação, é recomendado ter pelo menos a mesma quantidade de swap que a RAM.

Algumas distribuições utilizam a proporção de 2/5 da RAM como padrão, pois a compressão da hibernação pode reduzir significativamente o tamanho da imagem.

Regra geral…

Desconsideraremos os computadores antigos, que ainda estejam em uso, para cálculo da swap. Como regra geral, temos:

O mínimo recomendado é a raiz quadrada da RAM, arredondada para cima. Para incluir a hibernação, some a quantidade de RAM ao valor mínimo (nesse caso, o máximo recomendado é o dobro da RAM). Exemplo:

Com 2GB de RAM:

Mínimo sem hibernação: 2GB
Máximo com hibernação: 4GB

Com 8GB de RAM:

Mínimo sem hibernação: √8 ≈ 3GB
Mínimo com hibernação: 3GB + 8GB = 11GB
Máximo: 16GB

Observe que num SSD de 120GB, por exemplo, com 8GB de RAM e 11-16GB de swap, você “perde” entre 9-13% do espaço em disco (swap + hibernação).

Se tiver 16GB de RAM, pelos cálculos acima, você reservará entre 20-36GB do disco, representando 17-30% deste. Um espaço que o fará pensar muito bem no que instalar.

Uma saída, antes de comprar seu computador, é avaliar o custo benefício de SSD’s/HD’s maiores, reduzindo o valor percentual do espaço necessário para o swap+hibernação.

Mas se tiver um hardware muito limitado ou a expansão for economicamente inviável, atentar para a possibilidade de não utilizar a hibernação.

Conclusão

Nosso objetivo não é dizer quais cálculos são certos ou errados, mas que o tema é complexo e nada definido.

Certamente os seus também são válidos e chegarão a um resultado semelhante ao que mostramos aqui…

…evidenciando que o tema continua interessante e quantas dúvidas persistem, quando se fala da partição swap.

10 curtidas

Bom dia rapaz, pode me esclarecer uma dúvida ?
Digamos que criamos uma swap de 8GB no HDD um exemplo e todo mundo sabe que o acesso da swap é mais lenta que a memória ram mas isso ocorreria no SSD por ser mais rápido que o HDD ?

Lembrando que a velocidade do HDD é pelos RPM e o SSD é pelos MiB/s
Se fosse feito uma swap no M.2 NVME o acesso dela também seria lenta ?

1 curtida

eu pesquisei na www e encontrei que o swap no ssd é mais rápido que no disco. mas se há uma percepção visual, desconheço. como a swap é para a escrita de processos que estão ociosos, lá em segundo plano, não sei se essa escrita faz alguma diferença pra nós, meros mortais. mas estou especulando.

2 curtidas

Acho que a única diferença perceptível seria quando o computador retornasse da hibernação, realocando tudo que ele armazenou no HD ou SSD novamente para a memória.
De resto creio que seria apena placebo.

1 curtida

Reconheço que métricas sejam interessantes, mas, como tudo na vida, o bom senso deve existir.

No fim das contas, o que realmente importa é se o “recurso” está sendo utilizado ou se há razoável expectativa de utilizá-lo.

Não adianta nada seguir uma métrica e separar 32GB de swap se, na prática, o sistema mal irá utilizá-la ou usará 1…2GB.

E, como mencionado em outro post, se o sistema começar a demandar valores altos de swap com frequência, é hora de ter mais RAM.

4 curtidas

Acho que é por isso que não tenho visto a hibernação ser recomendada em sistemas Linux.

1 curtida

Por via das dúvidas é sempre bom ter pelo menos uns 2 ou 4GB de swap para o sistema ou se o usuário quiser pode usar o Nobreak+Swap ou sem swap+Nobreak.

1 curtida

Regra simples: 1Gb de SWAP para cada 2Gb de RAM até 16Gb de RAM, ou seja, um máximo de 8Gb de SWAP.

Se seu sistema está usando 50% ou mais de SWAP, lamento, você precisa é fazer um upgrade!

SWAP em HDD é punição para crimes hediondos, não faça isso(se possível, claro).

Hibernação é algo desnecessário, vejam:

  • Em um notebook(afins) o sistema, em teoria, sempre estará energizado(bateria), então o que faz mais sentido e suspender e não hibernar;
  • Em um desktop(afins), em teoria, você não tira o computador da tomada, então o sistema estará sempre energizado, sendo melhor a suspensão(claro, nem todos desfrutam de uma estabilidade na distribuição de energia, mas vcs pegaram a ideia).

A hibernação tem a vantagem de poupar mais energia, mas será que compensa mesmo?

No caso de um HDD então, pode ser que a hibernação demore minutos para voltar.

É claro, existem casos e casos. No fim, sempre tenha ao menos 1Gb de swap ativo, vc não perde nada com isso.

2 curtidas

Talvez, hibernação faça sentido pra alguém que vive em trânsito, com o note “pra lá e pra cá”, não é o meu caso e também nunca testei.

2 curtidas

Sendo bem sincero, eu nao sei qual a diferenca entre suspender e hibernar, apenas me parece que a hibernacao precise de mais recursos e seja algo mais profundo, a dizer pela palavra em si. Mas sinceramente, em um sistema de 32GB de RAM, sera que eu vou mesmo me preocupar em usar Swap? Para o que eu faco, eh meio dificil chegar aos 16GB de uso, acredito que mesmo com todos os software que eu costumo usar abertos (salvo VMs e jogos pesados, coisa que naturalmente nao se faz ao mesmo tempo exceto se o game estiver nessa propria VM). Se eu usasse o swap do tamanho da RAM eu ja teria 32GB de perda, por que com a lerderza que eh, pra mim seria uma perda enorme. Se for o dobro disso entao, estamos falando de 64GB de jogos e VSTs de piano que eu nao vou poder utilizar por que eu tenho medo de faltar RAM e o sistema travar e eu ter que forcar o desligamento.

No geral, eu acho que alguem nao deve querer usar Swap, mas nao sendo possivel fazer o upgrade (dinheiro custa muito trabalho), mais do que 8GB me parece desnecessario. No ponto de voce usar 8GB ja fica claro que precisara do upgrade sim ou sim, mais do que isso entao seria totalmente obvio. Alem disso, o sistema ja ia comecar a ficar bem pouco responsivo nessas alturas… yikes.

1 curtida

Se não me engano, a ZRAM vem definida por padrão de 1/4 da memória RAM, o que para quem tem uns 8GB (+2GB) já é mais que suficiente a meu ver.

De 16GB em diante, talvez seja até desnecessário colocar Swap dependendo do uso, mas ainda acho que não faz mal colocar.

3 curtidas

Eu tenho 32GB de RAM e meu Swap está com 4GB

2 curtidas

Boa noite rapaz, eu tenho o mesmo que o seu.
Mas no meu BigLinux ele fez 8GB de swap automático mas no Peppermint a situação foi outra, na instalação diz " Hibernar 32GB swap/ Sem Hibernar 16GB/ Sem swap, escolhi sem swap na instalação e depois do mesmo criei um padrão de 4GB

1 curtida

Ele não apenas lê, ele copia do armazenamento de massa para a RAM, restaurando o conteúdo da RAM ao estado que era no momento em que foi cessado o processamento dos processos para copiar para o armazenamento em massa.

1 curtida

Por muito tempo usei o sistema sem swap.
Meu uso não consumia nem metade da RAM.
Não tive problemas.

Quando vi necessidade, habilitei o swap e nunca vi ser utilizado mais que 2GB.

2 curtidas

Vc não vai ter problema, como eu expliquei pode ser optado não criar swap assim como um fabricante de um computador pode decidir não implementar Swap porque o sistema é full somente leitura, ou porque ele decidiu colocar armazenamento de massa pequeno com o básico para manter o sistema operacional e nada além. Só que tem um lado negativo de se fazer isso quando se faz por meio forçado que o sistema operacional não use a swap, com a swap o SO pode decidir para melhorar a performance enviar processos que estão ocioso ou zumbi para a swap para ter mais cache de disco justamente porque o SSD e o HD é mais lento que a RAM, esses processos ocioso pode ser que eles vão passar 1 dia ou mais sem ser processados, se eles não vão ser processados não faz sentido eles ficarem carregados na RAM e ficar lendo o SSD porque a cache de disco esta 1GB reduzida porque esses processos mortos não quer sair da RAM.

Eu não sei se estão entendo, mas é isso, tem processos que ficam parado, tipo o relógio da GUI, ele só é processado a cada minuto, não tem razão para ele ficar na RAM o tempo todo.

3 curtidas

Legal o texto! Gostaria de sobrepor dois assuntos quando se trata de SSD: swap sem uso e provisionamento adicional (overprovisioning).

Como vocês já devem saber, quando um SSD está muito cheio (naqueles 90% pra mais) o processo de escrita costuma ficar mais lento em alguns modelos. Não são todos, mas geralmente os mais baratos que a gente consegue comprar são afetados. Os fabricantes já sabem disso e deixam uma área especial (overprovisioning) para evitar isso, sendo o comum ser 7% do disco. É um espaço que está lá mas fica escondido e não pode ser usado pelo usuário. Embora não seja necessário, é uma boa prática que se deixe provisionamento adicional para ajudar na saúde do disco, algo como 10% já sendo efetivo para evitar essa lentidão quando quase lotado.

Algumas pessoas optam por deixar espaço livre não particionado no disco, eu incluído. Ao descobrir que o swap descarta os dados por padrão na montagem, percebi que dava para unir o útil ao agradável: Porque não usar aquele espaço não alocado como um swap gigante que dificilmente será usado?

Foi assim que em um disco de 500 GB eu reservei 32GB (6%) para swap, sem dó de perder espaço. De quebra ganhei a opção de hibernação, que uso esporadicamente.


Outro ponto é lembrar que existe um parâmetro para indicar ao kernel quando que ele deve começar a usar o swap, o swapiness. Então, pra quem quiser ver o swap sendo usado, pode aumentar esse valor para 40, que assim que o uso de ram passar de 60% o kernel vai começar a despachar as páginas mais antigas pra lá.

2 curtidas

Isso vai acontecer mais sedo do que vc pensa, vai depender do tipo ou da forma em que o SSD funciona, isso passou a existir devido ao custo elevado do SSD, fazendo com que pessoas mais pobres pudessem ter acesso a um SSD pois diminui o custo do mesmo, mais lento mas mesmo assim um SSD.

Existe a ultima vez que eu vi 4 tipos, o SLC que é 1 bit por célula, o MLC que é 2 bit por célula, o TLC que é 3 bits por célula, e o QLC que é 4 bits por célula.
O SLC que é 1bits por célula é mais caro e tem mais vida útil e melhor desempenho.
Já o QLC que é 4 bits por célula é o mais barato, menor vida útil, pior desempenho.
O SLC mantêm o desempenho constante…
O MLC degrada o desempenho pela metade assim que atinge +50% do armazenamento gravado.
O TLC degrada o desempenho com 33% gravado, e degrada de novo com 66% gravado, ficando bem lento quando atinge +66%.
O QLC degrada o desempenho com 25% e degrada mais ainda com 50%, e degrada de novo com 75%, ficando assim mais lento que o TLC com mais de 66%.
Se foi lançado um xLC que é de mais de 4bits por célula eu não sei, mas a lógica de degradação é a mesma, quantos mais bits gravados por célula, mas degrada o tempo de vida útil e mais lento vai ficando de acordo com as porcentagem de gravação a troca de barateamento de custo.

Vcs podem ler mais detalhadamente sobre neste link da kingston:

4 curtidas

vivendo e aprendendo… vejam dó. vou guardar isso pra mim. rsrs

Não sei para quem trabalha com desenvolvimento, mas para uso normal em desktop se tiver 8GB de RAM ou mais, 4GB de SWAP é suficiente. Se não for é melhor procurar uma interface ou distro mais leve pois não acho legal o uso frequente de SWAP principalmente se a pessoa ainda estiver usando HD.

1 curtida