Aumento na utilização de swap sem alta taxa de swap

Aumento na utilização de swap sem alta taxa de swap

Todos os sábados, por razões que desconheço, um dos meus servidores experimenta um aumento na utilização de swap. Não é necessariamente um problema, pois há bastante memória livre disponível, mas ainda assim gostaria de entender o que está acontecendo.

Em particular, estou perplexo com uma situação em que o swap passa de 2% usado para 100% usado durante um período de cerca de 20 minutos. Porém, quando isso acontece, não parece haver nenhum aumento na taxa de swap. O servidor tem uma partição swap de 8 GB, então eu esperaria uma taxa de saída de página de milhares de páginas por segundo para preencher o espaço disponível.

Além disso, não parece haver nenhum aumento na utilização da memória no momento que faça com que o servidor troque.

Alguém pode dar uma explicação para o comportamento observado? O servidor é RHEL 4.8 (antigo, eu sei) com kernel 2.6.9. Incluí algumas saídas do sar abaixo.

A utilização de swap salta de 2% para 100% em cerca de 20 minutos:

$ sar -r -f sa12
....
06:00:01 PM kbmemfree kbmemused  %memused kbbuffers  kbcached kbswpfree kbswpused  %swpused  kbswpcad
06:10:01 PM   4583856  11847032     72.10     79676    319804   8178056    207864      2.48     19816
06:20:01 PM   4720904  11709984     71.27     38840    225108   8178400    207520      2.47     19124
06:30:02 PM   4839160  11591728     70.55      1404    144948   1968152   6417768     76.53   6227068
06:40:02 PM   4827016  11603872     70.62      1640    145484     10232   8375688     99.88   8182968
06:50:02 PM   4836376  11594512     70.57       844    123304        60   8385860    100.00   8193044
07:00:01 PM   4825764  11605124     70.63       920    128108      4516   8381404     99.95   8188680
....

Aqui estão as estatísticas de troca para o mesmo período.

$ sar -W -f sa12
....
06:00:01 PM  pswpin/s pswpout/s
06:10:01 PM      0.00      0.00
06:20:01 PM      0.00      0.00
06:30:02 PM      0.68      0.00
06:40:02 PM      1.85      0.00
06:50:02 PM      5.07      0.00
07:00:01 PM      8.62      0.00
....

Responder1

Fato interessante: o uso de swap aumentou de 0 para 8 GB... enquanto isso, nem um único byte foi gravado no disco (o sar pswpout/smostra 0). Portanto, minha suposição é que o swap foi alocado/reservado, mas não consumido/usado.

Meu melhor palpite é que seu servidor usa vm.overcommit_memory=2(leiaDocumentação vm.overcommit_memory,vm overcommit-accounting). Nesse caso, cada byte alocado é contado como usado. [Eu não verifiquei].

Você também pode querer ler o tópicoLinux: Troca total usada = troca usada pelos processos + ??.

Responder2

Isso não responde diretamente à sua pergunta, mas o script a seguir pode ser útil na sua investigação. Ele permite saber quanto espaço de troca cada processo individual está usando:

Descubra quais processos estão usando swap

Se você tiver uma ideia aproximada de quando a troca começa, você pode configurar o cron para executar esse script nesse horário.

informação relacionada