
Todos los sábados, por razones que desconozco, uno de mis servidores experimenta un aumento en la utilización de swap. No es necesariamente un problema ya que hay mucha memoria libre disponible, pero aun así me gustaría entender qué está pasando.
En particular, me desconcierta una situación en la que el swap pasa del 2% utilizado al 100% utilizado en un período de aproximadamente 20 minutos. Sin embargo, cuando esto sucede, no parece haber ningún aumento en el tipo swap. El servidor tiene una partición de intercambio de 8 GB, por lo que esperaría una velocidad de salida de miles de páginas por segundo para llenar el espacio disponible.
Además, no parece haber ningún aumento en la utilización de la memoria en el momento que provoque el intercambio del servidor.
¿Alguien puede dar una explicación del comportamiento observado? El servidor es RHEL 4.8 (antiguo, lo sé) con un Kernel 2.6.9. He incluido algunos resultados de sar a continuación.
La utilización del swap salta del 2% al 100% en unos 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
....
Aquí están las estadísticas de intercambio para el mismo 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
....
Respuesta1
Dato interesante: el uso de swap aumentó de 0 a 8 GB... mientras tanto, no se escribió ni un solo byte en el disco (el sar pswpout/s
muestra 0). Entonces mi suposición es que el swap fue asignado/reservado, pero no consumido/usado.
Mi mejor suposición es que su servidor usa vm.overcommit_memory=2
(leerdocumentación vm.overcommit_memory,contabilidad excesiva de compromiso de vm). En cuyo caso, cada byte asignado se cuenta como utilizado. [No lo marqué].
Quizás también quieras leer el hilo.Linux: intercambio total utilizado = intercambio utilizado por procesos + ??.
Respuesta2
Esto no responde directamente a su pregunta, pero el siguiente guión puede resultar útil en su investigación. Le permite saber cuánto espacio de intercambio está utilizando cada proceso individual:
Descubra qué procesos utilizan swap
Si tiene una idea aproximada de cuándo comienza el intercambio, puede configurar cron para que ejecute este script en ese momento.