Linux: la memoria es libre pero se usa el intercambio. ¿Por qué?

11

Aquí están los diagramas de Munin.

Uso de memoria: http://koryagin.com/w/q/memory-day.png

Intercambiar entrada / salida: http://koryagin.com/w/q/swap-day.png

¿Por qué Linux decide aumentar la memoria caché y usar el intercambio cuando el tamaño de RAM es mucho mayor que la memoria utilizada por los programas?

Pavel Koryagin
fuente
2
El subsistema Linux VM en los últimos años se ha ajustado mucho para favorecer el espacio de búfer y el espacio de caché; las aplicaciones que ocupan memoria pero no hacen nada se barajan en el disco. Esto aumenta la capacidad de respuesta y el rendimiento. A menos que vea problemas de rendimiento, realmente no debería tener que preocuparse por ello.
Bart Silverstrim

Respuestas:

17

Su servidor probablemente tiene algunos procesos inactivos y / o de consumo de memoria que tienen muchas páginas inactivas. El kernel de Linux prefiere intercambiar porciones inactivas de programas para intercambiar, ya que lo más probable es que la memoria se use mejor como caché.

Si desea cambiar este comportamiento, juegue con vm.swappinesssysctl sintonizable pero tenga cuidado, burlar a los desarrolladores del núcleo / mantenedores de distribución no es tan fácil. :-)

¿Tiene problemas de rendimiento en su servidor durante ese pico de intercambio o preguntó por curiosidad?

Janne Pikkarainen
fuente
No tengo problemas de rendimiento en este servidor en particular. Pero en otro, donde la situación no es tan clara, estoy pensando en qué hacer. ¿No puede alguna lógica de administración de memoria de Linux ser la razón de las fallas seguras de PHP-FPM, si no coinciden con ninguno de los problemas conocidos de PHP? Entonces, generalmente a favor de la curiosidad.
Pavel Koryagin
Por cierto, este servidor maneja intensamente una cantidad muy pequeña de datos con un conjunto fijo de secuencias de comandos, por lo que no debería tener E / S intensiva. Entonces, ¿por qué Linux quiere tener un caché tan grande?
Pavel Koryagin
Linux almacena en caché archivos, metadatos de archivo, entradas de directorio, etc. Prueba el comando slabtop.
Janne Pikkarainen
Muchas gracias. Tomará un tiempo entender qué hacer con la slabtopinformación.
Pavel Koryagin
Deja que se ejecute a pantalla completa cuando tu jefe pase por tu cubículo y conviértete en un gurú a sus ojos. :-) Otro buen comando "ooh, eso parece difícil de entender" está systat -vmstaten FreeBSD (probablemente también otros BSD).
Janne Pikkarainen
1

Debes intentar jugar con el parámetro swappiness . Como puede ver, su sistema comenzó a intercambiarse cuando intentó aumentar el tamaño de la memoria caché de archivos, esto es normal si swappines no es 0.

Alex
fuente