martes, 31 de marzo de 2009

Memoria en Linux

Últimamente, el aumento de tráfico en una aplicación nos ha llevado a migrar de servidores para poder escalar con más facilidad.

Ayer por la tarde, mirando el estado de los nuevos servidores me encontré con esto en un free

$ free -m
total used free shared buffers cached
Mem: 2048 1996 51 0 599 364
-/+ buffers/cache: 1032 1015
Swap: 0 0 0

Y entré en modo semi-pánico porque tenía menos de un 5% de memoría libre y estos servidores virtualizados no tienen swap... pero investigando un poco y con la ayuda de Jacobo, encontré que la máquina está perfectamente, no estaba interpretando bien los datos.

buffers es la cantidad de memoria usada por el kernel para cachear I/O de disco y cached indica la memoría usada recientemente, pero que actualmente no está en uso y que está cacheada.

Así que la cantidad de memoría disponible en el servidor para aplicaciones es la suma de free + buffers + cached (la cantidad que pone en la columna free en la segunda fila), en el ejemplo 1.015 MBytes, casi el 50% de la RAM total.

Por último un enlace a un HowTo sobre la memoría en Linux, tiene sus añitos, pero es perfectamente válido