Porque a maioria acredita que trocar = ruim e que, se você não reduzir o swappiness, o sistema irá trocar quando realmente não precisar. Nenhum desses é realmente verdade. As pessoas associam a troca com os horários em que o sistema está se atolando - no entanto, é principalmente trocar porque o sistema está se atolando, e não o contrário. Quando o sistema trocar, ele já terá fatorado o custo de desempenho em sua decisão de trocar, e decidiu que não fazer isso teria uma penalidade maior no desempenho do sistema ou na estabilidade que mais tarde se tornaria perceptível.
Em geral, as configurações padrão resultam em bom desempenho geral e estabilidade. Eu recomendaria deixá-lo no padrão. Existem melhorias que podem ser feitas em como a troca funciona em sistemas interativos / de desktop, mas em geral o controle de swappiness não é a melhor correção - ajuste-a em uma direção e você pode corrigir um problema e criar outros problemas. Ele empalidece em comparação com a simples instalação de mais RAM.
Como o Linux usa RAM
Qualquer RAM que não esteja sendo usada por aplicativos pode ser usada como "cache". O cache é importante para um sistema de execução rápido e suave, acelerando as leituras e gravações no disco.
Se seus aplicativos aumentarem o uso de memória até o ponto em que estão usando quase toda a sua RAM, o cache diminuirá e, em média, as operações de disco diminuirão como resultado.
Se os aplicativos aumentarem ainda mais o uso de memória - supondo que você não tenha espaço de troca -, eventualmente, ficará sem memória e seu sistema terá que eliminar processos. Processos de morte são piores que desacelerar, pois resulta em instabilidade.
Como o Linux usa swap
Para combater esses dois problemas, o sistema pode realocar algumas memórias de aplicativos raramente usadas no espaço de troca do disco, liberando mais memória RAM. Isso pode evitar que os processos acabem devido à falta de memória e pode recuperar um pouco de cache para que as operações do disco possam funcionar sem problemas.
Esta reatribuição não é feita de acordo com um corte definido. Você não alcança uma certa porcentagem de alocação, então o Linux começa a trocar. Tem um algoritmo "fuzzy". São necessárias muitas coisas, que podem ser melhor descritas por "quanta pressão existe para alocação de memória". Se houver muita "pressão" para alocar nova memória, aumentará as chances de que alguns sejam trocados para ganhar mais espaço. Se houver menos "pressão", diminuirá essas chances.
Seu sistema tem uma configuração "swappiness" que ajuda a ajustar como essa "pressão" é calculada. Normalmente não é recomendado alterar isso. A troca é, em geral, uma coisa muito boa - qualquer penalidade de desempenho ocasional deve ser compensada por um ganho na capacidade de resposta geral do sistema e estabilidade para uma ampla gama de tarefas. Se você reduzir o swappiness, você deixará a quantidade de memória cache encolher um pouco mais do que seria de outra forma, mesmo quando realmente for útil. Portanto, você corre o risco de desacelerar seu computador no geral. Se você for tão longe a ponto de desabilitar completamente a troca, você corre o risco de ser morto devido a não conseguir alocar memória.
O que está acontecendo quando o sistema está sobrecarregado e trocando muito?
A troca é uma operação lenta e dispendiosa, então o sistema evita isso, a menos que calcule que o trade-off no desempenho do cache irá compensá-la globalmente, ou se é necessário evitar o abate de processos.
Muitas das vezes as pessoas olham para o sistema que está sobrecarregando o disco pesadamente e usando muito espaço de swap e troca de culpa por ele. Essa é a abordagem errada a seguir. Se a troca chegar a esse extremo, isso significa que a troca é a tentativa do seu sistema de lidar com problemas de pouca memória, e não a causa do problema.
E os sistemas de desktop? Eles não exigem uma abordagem diferente?
Os usuários de um sistema de desktop realmente esperam que o sistema "sinta-se responsivo" em resposta a ações iniciadas pelo usuário, como abrir um aplicativo, que é o tipo de ação que pode disparar uma troca devido ao aumento de memória necessário .
Uma maneira de tentar e ajustar isso é reduzir o parâmetro swappiness, que pode aumentar a tolerância do sistema a aplicativos usando memória e com pouco espaço de cache.
No entanto, até certo ponto, isso está apenas mudando as metas. O aplicativo agora pode ser carregado sem uma operação de troca, mas deixará menos folga para o próximo aplicativo que é carregado. A mesma troca pode ocorrer apenas mais tarde, quando você abrir um aplicativo em seguida. Enquanto isso, o desempenho do sistema é um pouco mais baixo devido ao tamanho reduzido do cache. Assim, qualquer benefício da configuração de swap reduzida pode ser difícil de medir, reduzindo o atraso de troca em alguns momentos, mas causando outro desempenho lento em outros momentos.Reduzir um pouco a permutabilidade pode ser justificado se você souber o que está fazendo, mas reduzi-lo para apenas 10% deve ser feito com cautela, pois isso pode deixar o sistema tolerante a tamanhos de cache muito baixos e deixar o sistema mais sujeito a tem que trocar a curto prazo.
Desabilitar completamente a troca deve ser evitada, pois você perde a proteção adicional contra condições de falta de memória que podem causar a falha ou a morte de processos.
O remédio mais eficaz, de longe, é instalar mais RAM, se puder pagar.
A troca pode ser desabilitada em um sistema com muita RAM?
Se você tiver muito mais memória RAM do que é provável que você precise para aplicativos, raramente precisará de swap. Desativar o swap provavelmente não fará diferença na maior parte do tempo. Mas se você tiver muita memória RAM, deixar a troca ativada também não terá nenhuma penalidade porque o sistema não troca quando não precisa.
As únicas situações em que seria fazer a diferença estariam na improvável situação em que o sistema está ficando sem memória e, consequentemente, o sistema de cache está ficando prejudicado, e é nesse tipo de situação onde você deseja trocar mais. Assim, você pode deixar a swap com segurança em suas configurações normais para ter mais tranquilidade sem ter um efeito negativo quando tiver bastante memória.
Mas como pode a troca acelerar o meu sistema? Não troca coisas lentas?
O ato de transferir dados da memória RAM para o swap é uma operação lenta, mas só é tomada quando o kernel tem certeza de que o benefício geral como resultado de manter um tamanho razoável de cache irá compensar isso.
Quando os dados estão em swap, quando são lançados novamente?
Qualquer parte da memória retornará do swap assim que for usada - lida ou gravada. No entanto, normalmente a memória que é trocada é a memória que não foi acessada há muito tempo e não é esperado que seja necessária em breve.
A transferência de dados para fora do swap é tão demorada quanto colocá-lo lá. Seu kernel não irá remover dados dele se não precisar. Enquanto os dados estão em swap e não estão sendo usados, ele deixa mais memória para outras coisas que estão sendo usadas, e mais cache do sistema.