Sim, os processos podem ser trocados mesmo quando há memória disponível. Isso é controlado pelo valor swappiness
da memória virtual que, como você mostra, é definido como 60 em seu sistema (o padrão em muitas instalações). A documentação da Red Hat tem uma boa explicação (esta é aplicável a qualquer Linux):
swappiness
A value from 0 to 100 which controls the degree to which the system favors anonymous memory or the page cache. A high value improves file-system performance, while aggressively swapping less active processes out of physical memory. A low value avoids swapping processes out of memory, which usually decreases latency, at the cost of I/O performance. The default value is 60.
A low swappiness value is recommended for database workloads. For example, for Oracle databases, Red Hat recommends a swappiness value of 10.
Se você quiser configurá-lo para um valor mais baixo, 10 por exemplo, edite /etc/sysctl.conf
e adicione uma linha como esta:
vm.swappiness=10
Observe que, para versões mais recentes de systemd
, você precisa editar / criar arquivos em /etc/sysctl.d/
. Como explicado no Arch Wiki :
Note: From version 207 and 21x, systemd only applies settings from
/etc/sysctl.d/*.conf
and/usr/lib/sysctl.d/*.conf
. If you had customized/etc/sysctl.conf
, you need to rename it as/etc/sysctl.d/99-sysctl.conf
. If you had e.g./etc/sysctl.d/foo
, you need to rename it to/etc/sysctl.d/foo.conf
.
No entanto, tenha em mente que a troca não é necessariamente um problema. Tudo depende do que sua máquina está fazendo. Existe uma resposta agradável e detalhada abordando esta questão no Ask Ubuntu, que eu sugiro que você leia. Basicamente, a menos que sua máquina pareça lenta, que seja.
Leitura adicional: