Porque a maioria acredita que trocar = ruim e que, se você não reduzir a troca, o sistema será trocado quando realmente não for necessário. Nenhuma delas é realmente verdadeira. As pessoas associam a troca a momentos em que seu sistema está atolado - no entanto, é principalmente a troca porque o sistema está atolado, e não o contrário. Quando o sistema é trocado, ele já considerou o custo de desempenho em sua decisão de trocar e decidiu que não fazer isso teria uma penalidade geral maior no desempenho ou na estabilidade do sistema.
No geral, as configurações padrão resultam em bom desempenho e estabilidade geral. Eu recomendo deixá-lo no padrão. Existem outras formas de o Linux melhorar seu gerenciamento de memória para resolver alguns casos extremos, mas, em geral, o controle de swappiness não é uma boa solução alternativa - ajuste-o em uma direção e você poderá corrigir um problema e criar outros problemas. Se possível, basta instalar mais RAM física (e deixar a swappiness em paz) ofusca todos os outros remédios.
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 rápido e suave, acelerando as leituras e gravações no disco.
Se seus aplicativos aumentarem o uso de memória a ponto de usar quase toda a sua RAM, seu cache diminuirá e, em média, as operações do disco ficarão mais lentas. Não é suficiente ter apenas dezenas de megabytes, ou menos, para cache hoje em dia.
Se os aplicativos aumentarem ainda mais o uso de memória - supondo que você não tenha espaço de troca -, você não terá apenas espaço para cache, mas eventualmente ficará sem memória e seu sistema precisará interromper os processos em execução. O processo de matar é pior do que desacelerar, pois oferece um sistema instável e imprevisível.
Como o Linux usa swap
Para combater esses dois problemas, seu sistema pode realocar alguma memória de aplicativo raramente usada para o espaço de troca em seu disco, liberando RAM. A RAM adicional pode impedir a morte dos processos devido à falta de memória e recuperar um pouco de cache para que as operações do disco possam operar de maneira mais suave.
Essa realocação não é feita de acordo com um limite definido. Você não atinge uma certa porcentagem de alocação após a qual o Linux começa a trocar. Possui um algoritmo "difuso". Isso leva em consideração muitas coisas, que podem ser melhor descritas por "quanta pressão existe para a alocação de memória". Se houver muita "pressão" para alocar nova memória, aumentará as chances de que algumas sejam trocadas para criar mais espaço. Se houver menos "pressão", isso diminuirá essas chances.
Seu sistema possui uma configuração de "troca" que ajuda a ajustar como essa "pressão" é calculada. Muitas vezes, é falsamente representado como uma "porcentagem de RAM", mas não é, é apenas um valor usado como parte da fórmula. Valores em torno de 40 a 60 são os valores recomendados, 60 sendo o padrão hoje em dia.
Deixar o sistema trocar quando necessário é, no geral, uma coisa muito boa, mesmo se você tiver muita RAM. Permitir que o seu sistema troque, se necessário, garante a você que, se você se deparar com uma situação de pouca memória, mesmo que temporariamente (enquanto executa um processo curto que usa muita memória), seu sistema tem uma segunda chance de manter tudo funcionando. Se você chegar ao ponto de desabilitar completamente a troca, corre o risco de que os processos sejam mortos devido à impossibilidade de alocar memória.
O que está acontecendo quando o sistema está atolado e trocando fortemente?
A troca é uma operação lenta e dispendiosa; portanto, o sistema a evita, a menos que calcule que o trade-off no desempenho do cache o compensará em geral, ou se for necessário evitar processos de morte.
Muitas vezes, as pessoas olham para o seu sistema que está debulhando muito o disco e usando muito espaço de troca e culpa por isso. 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, não a causa do problema, e que, sem a troca, o processo em execução irá morrer aleatoriamente.
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 "se sinta responsivo" em resposta a ações iniciadas pelo usuário, como abrir um aplicativo, que é o tipo de ação que às vezes pode desencadear uma troca devido ao aumento da memória necessária.
Uma maneira de algumas pessoas tentarem ajustar isso é reduzir o parâmetro de troca, que pode aumentar a tolerância do sistema a aplicativos que usam memória e ficam com pouco espaço em cache.
No entanto, isso está apenas mudando as metas. O primeiro aplicativo agora pode carregar sem uma operação de troca, mas deixará menos folga para o próximo aplicativo que carregar. A mesma troca pode ocorrer apenas mais tarde, quando você abrir um aplicativo em seguida. Enquanto isso, o desempenho do sistema é menor em geral devido ao tamanho reduzido do cache. Portanto, qualquer benefício da configuração de troca reduzida pode ser difícil de medir, reduzindo o atraso da troca em alguns momentos, mas causando outro desempenho lento em outros momentos. Reduzir um pouco a swappiness pode ser justificado se você souber o que está fazendo, mas reduzi-la para 10% pode deixar o sistema tolerante a tamanhos de cache muito baixos e deixar o sistema mais suscetível de trocar a curto prazo.
Desabilitar completamente a troca deve ser evitado, pois você perde a proteção adicional contra condições de falta de memória que podem causar falhas ou interrupção dos processos.
O remédio mais eficaz de longe é instalar mais RAM, se você puder pagar.
A troca pode ser desativada em um sistema com muita memória RAM?
Se você tem muito mais RAM do que provavelmente precisará para aplicativos, raramente precisará trocar. Desabilitar a troca provavelmente não fará diferença na maioria das vezes. Mas se você tiver bastante RAM, deixar a troca ativada também não terá nenhuma penalidade, porque o sistema não troca quando não é necessário.
As únicas situações em que iria fazer a diferença estaria na situação improvável que o sistema encontra-se a falta de memória e, consequentemente, o sistema de cache está sendo prejudicada, e é neste tipo de situação onde você iria querer trocar mais. Assim, você pode deixar o swap com segurança em suas configurações normais para ter mais tranqüilidade, sem que isso tenha um efeito negativo quando houver muita memória.
Mas como a troca pode acelerar meu sistema? Não trocar as coisas devagar?
O ato de transferir dados da RAM para a troca é uma operação lenta, mas só é usada quando o kernel tem certeza de que o benefício geral como resultado de manter um tamanho de cache razoável superará isso.
Depois que os dados são trocados, quando são lançados novamente?
Qualquer parte da memória voltará a ser trocada assim que for usada - lida ou gravada. No entanto, normalmente a memória trocada é aquela que não é acessada há muito tempo e não é necessária em breve.
Transferir dados do swap é tão demorado quanto colocá-los lá. Seu kernel não removerá dados dele se não for necessário. Enquanto os dados estão em troca e não estão sendo usados, eles deixam mais memória para outras coisas que estão sendo usadas e mais cache do sistema.
Existem casos em que a redução da troca é apropriada?
Sim. Se você estiver executando um servidor dedicado a um aplicativo de servidor específico que não se beneficie do cache do sistema. Alguns servidores de banco de dados, como o servidor Oracle, MySQL / MariaDB recomendam, em alguns casos, reduzir a troca para 1 a 10, pois esses mecanismos de banco de dados usam seu próprio cache.
Observe que isso só é verdade se o seu sistema for dedicado a essa tarefa e, no caso do MySQL / MariaDB, apenas se você estiver usando puramente InnoDB ou XtraDB, e não MyISAM ou Aria, etc.