Esta é uma má ideia. Se isso fosse útil, o kernel do Linux implementaria dessa maneira. Não acredito que haja uma razão para alterar mais do que alguns parâmetros de ajuste, pois um simples script de shell provavelmente não é mais inteligente que os algoritmos dos desenvolvedores do kernel.
Você basicamente tem dois casos:
- Os processos no espaço de troca não são usados de qualquer maneira. Por que você deseja colocá-los de volta na RAM?
- Há pouca RAM, então eles são trocados e você os coloca de volta na RAM. Em seguida, seu sistema os trocará novamente o mais rápido possível.
Portanto, existem dois pontos principais:
- Primeiro, seu sistema ficará lento quando houver pouca RAM para executar todos os seus programas ao mesmo tempo. A troca o ajudará a executar mais programas, mas não a mudar rapidamente para um raramente usado, que pode ser trocado. Nenhuma troca pode matar o raramente usado ou enviar ao atualmente usado uma exceção de falta de memória.
- Segundo, a troca é uma coisa boa e o fato de ter coisas em troca, já que você tem RAM grátis a custo de programas que atualmente não está usando.
Apesar de não haver problemas de falta de memória com muitos programas, alguns programas podem alocar memória com base na RAM atualmente livre (talvez seu navegador use mais memcache e você possa navegar mais rapidamente) e o kernel pode usar RAM livre para cache de disco e otimizações semelhantes. Quando você força a troca a ficar vazia, o kernel reduz o cache de leitura e, por exemplo, iniciar uma nova instância do Firefox leva mais tempo do que quando o Firefox ainda está no cache do disco.
Se você deseja ajustar o comportamento do kernel, consulte o parâmetro swappiness .
Dois recursos adicionais contribuem com @ peter-cordes:
Se você realmente deseja ter uma troca vazia, pode desativar a troca permanentemente. Eu não vejo por que tê-lo ligado por uma hora e depois esvaziá-lo tem vantagens sobre não ter swap.