Se as informações forem trocadas para o disco e depois lidas de volta na memória, elas geralmente ficarão alocadas na área de troca até o espaço de troca ficar baixo. Isso significa que, se as mesmas informações precisarem ser trocadas novamente mais tarde e não tiverem sido alteradas, o sistema operacional poderá soltar as páginas da RAM alocada sem precisar gravar nada no disco para economizar tempo.
O swap alocado para material que foi lido de volta na memória será liberado
- quando as páginas relevantes não são mais necessárias (ou seja, são liberadas pelo aplicativo)
- quando as páginas relevantes são alteradas (por isso, a cópia no disco não está mais atualizada)
- a máquina fica com pouco espaço de troca, portanto, limpa algumas coisas que já estão na RAM para liberar espaço
Procure em /proc/meminfo
por uma linha chamada "SwapCached". Essa entrada conta as páginas encontradas na RAM e nas partições de troca. Por exemplo, escolhendo uma pequena VM aleatoriamente, o arquivo /proc/meminfo
virtual de uma das minhas VMs mostra:
SwapTotal: 698816 kB
SwapFree: 624520 kB
SwapCached: 17232 kB
indicando que 74268K de espaço de troca estão alocados, mas que 17232K dessas páginas também estão atualmente mapeadas na RAM também (portanto, pode ser desalocada a partir da troca a qualquer momento se o espaço for necessário por outra coisa).
Além disso, sem dúvida haverá páginas que foram trocadas há séculos e nunca mais foram usadas desde então. O kernel não irá recarregar as páginas do swap apenas porque há alguma RAM livre para ser lida de novo, já que a RAM livre pode ser melhor usada para cache ou buffers - páginas escritas para swap são geralmente relidas somente quando forem necessárias.
Se você deseja limpar o que está em swap, contanto que você tenha bastante livre e / ou livre (isto é, buffers gratuitos + cache + (menos as partes das contagens c + b que não são Freight RightThisInstant)), basta desligá-lo e ligá-lo novamente com swapoff -a && swapon -a
.
É claro que você também pode ter um vazamento de memória em algum lugar, mas essa não é a única explicação para o comportamento que você está vendo.