Recentemente vi uma caixa (na verdade, VM de servidor web) que possui exatos 0 (zero) bytes não utilizados em seu swap, enquanto a memória RAM disponível (que não é gratuita, mas a soma de free+buffers+cache) está em 60% do total RAM da VM. Nunca vi isso antes, então me perguntei se essa configuração é boa (para a caixa e aplicativos).
O administrador da VM me disse que trata isso como perfeitamente normal e que essa é sua maneira comum de ajustar as caixas.
Sua idéia era que, se o box tivesse muitas páginas de memória RAM fria, o kernel as separaria para liberar páginas de memória RAM “reais” para que pudessem ser usadas para armazenar dados em cache.
Quanto a mim, eu conhecia o swap se fosse a última coisa a usar se gostamos de ter fast box. Então, eu costumava definir a troca para valores mais baixos (para que o kernel não gostasse de trocar páginas), mas essa abordagem pessoal era que é bom trocar tantos dados quanto tivermos espaço de troca, tendo assim mais cache. E sim, ele disse, o kernel também pode armazenar páginas trocadas em cache, então não adianta manter a troca livre.
Por favor, acalme-me: o seap da VM deve ser usado da melhor forma e a memória RAM deve ser liberada dessa maneira para que o cache do disco do kernel possa ser usado de maneira mais eficaz?
Para ser exato, havia no momento: 1 Gb de espaço swap (utilizado a 100%), a VM possui 32 Gb de memória RAM e a memória RAM disponível era de 13 Gb.
Responder1
Uma pequena quantidade de swap (1GiB é pequeno em comparação com 32GiB de RAM) usada inteiramente é adequada. O que isso significa é exatamente como o administrador da VM descreveu: dada a disponibilidade de RAM, qualquer coisa que acabe em swap não é utilizada, e é melhor mantê-la lá e usar a memória física correspondente para fins mais urgentes - sejam cargas de trabalho ativas ou cache de disco.
O uso excessivo de troca só é preocupante se a quantidade de troca for grande ou se as páginas estiverem sendo trocadas devido à pressão da memória e, mais importante, se a trocaatividadeé importante,ou sejaif vmstat
mostra páginas sendo trocadas o tempo todo. Isso indica que o sistema está se debatendo, gastando seu tempo removendo páginas apenas para ter que trocá-las novamente; isso acontece quando a quantidade de RAM é muito pequena para a carga de trabalho do sistema.
O sistema no qual estou escrevendo tem um pouco mais de troca e está em uma situação semelhante à sua VM:
$ free -m
total used free shared buff/cache available
Mem: 32054 19405 1098 2365 11550 9827
Swap: 6410 6410 0
O desempenho interativo é bom e vmstat
não mostra atividade de troca.