Implicações da desativação da swap

Sim, todo SO é concebido prevendo um mínimo de swap para trabalhar, vc pode desativar totalmente, pode mudar a forma como ele gerencia o uso do swap, mas ao chegar ao limite de RAM da máquina, não havendo o swap, ele vai travar.

Não consegui mudar o swappiness:

Screenshot_20210217_163643

Eu teria que ter um arquivo já montado e substituir. Mas não sei como montar esse arquivo.

Honestamente pode ser uma boa ideia procurar mais evidências. A maioria dos programas de fato aloca memória que raramente será acessada, por N motivos, o principal deles é que, é melhor guardar do que gastar novamente tempo de CPU regerando estes dados, ou arriscar ser pego com as mãos nas calças e engasgar regerando dados exatamente no momento mais sensível, quando o usuário está interagindo e atento a engasgos.

1 Não obrigatoriamente seu sistema irá travar, depende.
2 Você não poderá suspender para o disco.
3 Você não irá poder armazenar kernel dumps.
4 Programas podem, dependendo das circunstâncias, falhar de forma silenciosa ou com erros pouco elucidativos do porquê.

Ainda assim não usar swap não é uma boa ideia, a swap ajuda numa manutenção saudável da paginação e tem inclusive impacto na fragmentação de referências na RAM, o que não é terrível mas também não é legal.

OBS: Faltou café na hora de revisar :joy:

2 curtidas

Acontece a mesma coisa quando a memória enche e o swap enche: O kernel congela todos os processos, analisa quem está demandando maior memória, e finaliza o processo.

Como no geral é o navegador que está usando mais, o computador vai travar por uns segundos e o navegador vai fechar. Se estiver jogando, o jogo vai travar alguns segundos e vai ser finalizado.

1 curtida

Essa imagem que você colocou é somente uma versão comentada das configurações, explicando que é uma boa prática separar as configurações em múltiplos arquivos ou substituílos em uma pasta *.d, em vez de editar /etc/sysctl.conf.

crie um arquivo /etc/sysctl.d/40-swap.conf e vai ficar tudo ok. Colocando como foi indicado:

vm.swappiness=10

Um exemplo de porque isso é uma boa prática por exemplo é que você não corre o risco de uma atualização sobrescrever suas mudanças.

1 curtida

Entendi, pessoal. Obrigado.

Eu consegui colocar o swappiness=90 Escolhi os 90%, não sei se é uma boa. Minha ideia foi evitar que o sistema congele mas também evitar que memória seja paginada sem necessidade.

O que acham?

Se puderem, comentem algo lá nesse meu post: Grenciamento de memória Linux vs MacOs

1 curtida

Eu acho que houve uma confusão, quanto maior o valor mais agressivamente o sistema irá realizar o swap. Pelo que deu para entender você quer diminuir o uso da swap, não? Você pode ver inclusive na documentação do kernel:

https://www.kernel.org/doc/Documentation/sysctl/vm.txt

Eita, fiz ao contrário. Não tinha percebido. Já alterei para 10.

Obrigado pelo link da documentação. =)

1 curtida

Eu já fiz muito o procedimento abaixo:

Reduzir-swap

Mas a Swap era sempre ativada em apenas 40% de uso da RAM , ai troquei o HD por um SSD , como meu PC dificilmente é submetido ao outo conssumo de RAM decidir desativar e remover a Swap, o programa mais pesado em meu PC é o Chrome e o Pitivi e mesmo com varios outros programas abertos o uso da RAM nunca ultrapassa 1.35GB. sendo que atualmente ele tem 4GB

1 curtida

Pode colocar “0” o zero vai continuar fazendo uso de Swap.
Antigamente em versão muito antiga do kernel o “0” desativava a Swap mais agora não é mais assim.
E outra esse caso que você relata não acontece comigo.
Essa documentação que o @romulopb passou é do kernel 2.6 pode colocar “0” nos kernels LTS atuais.

2 curtidas

Acho que aconteceu alguma confusão, esse sempre foi o comportamento, você pode ver isso no commit fe35004fbf… que foi quando o comportamento foi alterado.

Anteriormente swappiness sofria um incremento de 1 independente de quanto fosse. Então, pelo contrário, atualmente o valor zero definitivamente desativa a swap.

Mesmo assim não é tão simples, o watermark ainda é respeitado e portanto se a RAM for esgotada, será feito uso do espaço de swap se existir. O melhor se esse for o desejo, é usar o swapoff.

Na verdade não, essa documentação é mais fiel a versão atual. A documentação sempre foi assim, você vai encontrar os comentários da versão 2.6 também na doc do último release:

https://www.kernel.org/doc/html/latest/admin-guide/sysctl/vm.html?highlight=swappiness

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/admin-guide/sysctl/vm.rst?h=v5.11

Bom, é meio que como dizem, a documentação do kernel é algo em constante construção, assim como o kernel. :joy:

swappiness==0, the kernel does not swap out completely (for global reclaim
until the amount of free pages and filebacked pages in a zone has been
reduced to something very very small (nr_free + nr_filebacked < high
watermark)).

Traduzido:

troca == 0, o kernel não troca completamente (para recuperação global
até que a quantidade de páginas livres e páginas armazenadas em arquivo em uma zona tenha sido
reduzido a algo muito pequeno (nr_free + nr_filebacked <high
marca d'água)). 

Esta vendo “A quantidade de páginas livres e páginas armazenadas em arquivo em zona tenha sido reduzido a algo muito pequeno”
Que dizer que faz swap com uma quantidade muito pequena.
“o kernel não troca completamente” Quer dizer que o kernel troca parcial.
Isso é interpretação de texto.
Agora já aviso que se colocar “0” e precisar de Swap vai dar uns lag insuportável.
O kernel vai ficar tentando gerenciar a RAM para evitando a Swap só que não tem o que gerenciar, Não tem RAM isso gera um atraso no processamento da CPU.
É por isso que deixo o meu a 100.
Para acabar com o atraso caso eu fique sem Swap.
E mesmo assim o que o @anon76266952 relata não acontece comigo.
Tem alguma coisa errada.

Sim, porque a pressão de memória vai ser grande. Com pouco espaço de RAM o Kernel vai engasgar mesmo, até procurar por páginas para '‘swappar’ consome memória, não é exatamente que não tem RAM, é que tem uma quantia muito pequena, o Kernel vai tomar a CPU para si (é uma “emergência”) mas com a pouca RAM que tem, vai demorar para fazer o trabalho. O mesmo acontece em OOMs, só é mais severo, o sistema congela até por minutos.

Mas se existir uma partição ou arquivo swap ativo, ele vai recorrer a esse espaço. De qualquer forma o antigo comportamento não desativava a swap ao definir swappiness=0, swappiness=0 terminava sendo swappiness=1.

Não é uma boa ideia, você está dizendo para o Kernel preferir fazer swap das páginas em vez de liberar páginas do cache (que já estão no disco de qualquer forma). Isso pode contribuir em alguns cenários para piorar sua performance mantendo coisas pouco acessadas na RAM e mesmo assim no caso de um OOM você vai passar pela mesma coisa, existem outras soluções melhores para isso.

É mas apenas com mais informações para saber o que é

Nada olha só se ver:

jca@jca-31:~$ free
              total        used        free      shared  buff/cache   available
Mem:       16308840     1929172     7034504      284852     7345164    13677616
Swap:      16777212           0    16777212

Nem uso Swap.
Porque eu tenho RAM d+.
De vez em quando eu eu uso 12GB de RAM ai faz 200MB de Swap.
To de boa.


Falam d+ só que quando testo a Swap do Linux ela é perfeita.
Eu quero teste, eu testo o que eu leio e ouço porque falar papagaio também fala.

Lógico, pois no momento você tem muito espaço disponível, nesse cenário tanto faz quanto é sua swappiness. Continua não fazendo sentido usar o valor 100, o kernel nunca fez swapping oportunista ou preemptivo.

Apenas quis aconselhar que não resolve estouros de memória e que também não é uma boa ideia, nos cenários onde você estiver realmente usando swap, provavelmente não precisaria, ou não precisaria ser tão agressivo, não necessariamente vai ser um impacto que afete sua percepção nem muito menos vai sempre afetar a performance, mas você está facilitando para o kernel fazer mas escolhas e ter que fazer mais trabalho para recuperar uma página quando não precisa disso para não sofrer o atraso que você descreveu.

Final da historia 4mb de swap e nada faz diferença nenhuma.
O que sera que tem gravado nesses 4MB uma coisa que vai ou não ser acessada só deus sabe quando.
Então não tem prioridade em usar Swap a prioridade é usar RAM.
@anon76266952 O seu caso é anormal.
Ninguém a que sabe te ajudar tanto que eles estão perdendo tempo com swappingness.

Poxa não posso nem dar um conselho mais para a pessoa ter o melhor resultado possível. :face_with_raised_eyebrow:

Poder pode só que isso não resolve o problema e ele pode colocar ate “0” que só vai ter atraso quando ele precisar da troca e ele vai precisar já que ele diz que o sistema dele não usa a RAM ate o talo.
Se o sistema dele não esta usando a RAM como deveria e o esperado a Swap é a única coisa que esta salvando o sistema dele e ainda por cima quer piorar ainda mais fazendo o kernel atrasar a troca inevitável.

Isto está me parecendo ser overclock feito errado. @anon76266952 Você chegou a fazer overclock no seu computador? O CPU e a RAM estão tendo “desacordo”, falta de sincronia, então o Kernel usa o SSD para se proteger… É um palpite…

Sim mas a princípio essa pergunta é:

**

isso foi respondido.

De resto nem swappiness = 100 ou 0 ou 10 vai resolver porque não está claro qual é o problema, 7 GB de memória livre e 100% de swap tem mais chance de ser comportamento normal que algum problema.

Um programa usou muita memória, muita coisa foi para a swap e então recentemente o programa comilão terminou, como kernel também não reclama blocos de memória da swap preemptivamente, apenas quando houver um hit eles voltarão para a RAM, e assim eles vão ficar na SWAP até o kernel precisar deles, independente de quanta RAM esteja livre.