O valor é aplicado dinamicamente, mas há algumas coisas que você deve considerar além desse valor, a saber:
-
Embora o Linux troque dados oportunisticamente (isto é, ele começará a empurrar dados para swap antes que a RAM esteja cheia), ele apenas troca os dados sob demanda (portanto, apenas extrai o que realmente é necessário) .
-
Mesmo depois que os dados são trocados novamente, uma cópia ainda é mantida no swap até que o programa termine. Isso teoricamente melhora o desempenho do sistema quando o subsistema de memória virtual está se debatendo (isto é, constantemente arrastando dados para dentro e para fora do swap porque tudo que está rodando não caberá inteiramente na memória) porque evita a necessidade de gravar os dados para trocar novamente se seria trocado.
-
Mesmo que o 1 e o 2 não fossem o caso, o sistema não reagiria de forma visível à alteração imediatamente, simplesmente porque leva tempo para mover os dados de volta do swap.
Agora, tudo isso de lado, há outra coisa a considerar, a saber, que sua máquina estava trocando bem antes que a exaustão da memória fosse uma preocupação razoável. Isso significa uma das três coisas na maioria dos casos:
- Você está usando grupos de controle de memória para limitar o uso de memória de certos programas, e alguns deles estão atingindo os limites nos grupos de controle.
- Você tem uma quantidade insana de arquivos armazenados em cache que, por algum motivo, o sistema não está disposto a despejar do cache para liberar memória.
- Algo que é muito ativo tem uma quantidade enorme de memória alocada (possivelmente usando páginas enormes) que não está realmente usando.
No primeiro caso, o ajuste /proc/sys/vm/swappiness
não ajuda, você precisa verificar os limites de memória configurados nos grupos de controle e ajustá-los (ou veja os aplicativos que estão sendo executados e descubra qual deles está usando mais RAM do que você achou necessário).
No segundo caso, você provavelmente terá melhores resultados aumentando /proc/sys/vm/vfs_cache_pressure
do que reduzindo /proc/sys/vm/swappiness
O vfs_cache_pressure
sysctl controla a agressividade com que o sistema recupera espaço do cache de páginas. É expresso como uma porcentagem, com o padrão sendo 100. Acho que aumentar para 200 normalmente convencerá o kernel de que você realmente se importa mais com o uso de memória. Definir isso muito alto, porém, terá um impacto negativo no desempenho geral (porque perderá tempo tentando diminuir o cache quando ele não puder ser diminuído).
O terceiro caso é um problema com o programa em questão, e você não pode fazer muito na maioria dos casos além de reclamar para os desenvolvedores.