Esta é uma má ideia. Se isso fosse útil, o kernel do Linux iria implementá-lo dessa maneira. Eu não acredito que haja uma razão para mudar mais do que alguns parâmetros de ajuste, já que um simples shell script 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ê quer puxá-los de volta para a RAM?
- Há pouca RAM, então eles são trocados e você os coloca de volta na RAM. Então o seu sistema irá colocá-los em swap novamente o mais rápido possível.
Portanto, há dois pontos principais:
- Primeiro, seu sistema ficará lento quando houver pouca memória RAM para executar todos os seus programas de uma só vez. Swap irá ajudá-lo a executar mais programas, mas não a mudar rapidamente para um raramente usado, que pode ser trocado. Nenhuma troca pode fazer com que a pessoa raramente usada seja eliminada ou envie uma exceção de falta de memória usada atualmente.
- Em segundo lugar, o swap é uma coisa boa e, portanto, está tendo trocas de coisas, já que você tem RAM livre ao custo de programas que não está usando atualmente.
Apesar de não ter 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ê pode navegar mais rápido) e o kernel pode usar RAM livre para cache de disco e otimizações semelhantes. Quando você força o seu swap a ficar vazio, o kernel irá eliminar o seu cache de leitura e, por exemplo, iniciar uma nova instância do Firefox levará mais tempo do que quando o Firefox ainda estiver no cache de disco.
Se você quiser ajustar o comportamento do kernel, consulte o parâmetro swappiness .
Dois recursos adicionais contribuem com @ peter-cordes:
Se você realmente deseja ter um swap vazio, pode desativar o swap permanentemente. Não vejo por que tê-lo por uma hora e depois esvaziá-lo tem vantagens sobre não ter swap.