/proc/meminfo explicado

«free», «buffer», «swap», «dirty». ¿Qué significan? Si has contestado «un campamento hippy», necesitas un cursillo sobre meminfo.

El contenido de /proc/meminfo ayuda a explicar qué se cuece con el uso de tu memoria, si sabes cómo leerlo.

  $ cat /proc/meminfo
  root:	total:    	used:    	free:  		shared:	buffers:	cached:
  Mem:  	1055760384	1041887232	13873152	0	100417536 	711233536
  Swap: 	1077501952  	8540160 	1068961792

  MemTotal:		1031016 kB
  MemFree:		13548 kB
  MemShared:		0 kB
  Buffers:		98064 kB
  Cached:			692320 kB
  SwapCached:		2244 kB
  Active:			563112 kB
  Inact_dirty:		309584 kB
  Inact_clean:		79508 kB
  Inact_target:		190440 kB
  HighTotal:		130992 kB
  HighFree:		1876 kB
  LowTotal:		900024 kB
  LowFree:		11672 kB
  SwapTotal:		1052248 kB
  SwapFree:		1043908 kB
  Committed_AS:		332340 kB
  

Se aporta la información tanto a alto nivel como en forma de estadísticas de bajo nivel. En la parte superior ves un resumen rápido de los valores más comunes a los que deberías prestar atención. Debajo están los valores individuales que vamos a explicar. Vayamos primero con las estadísticas a alto nivel.

Estadísticas a alto nivel

  • MemTotal: La RAM total utilizable, es decir, la RAM física menos cierto espacio reservado y el tamaño del binario del kernel
  • MemFree: La suma de LowFree y HighFree
  • MemShared: Siempre 0 por motivos de compatibilidad
  • Buffers: La memoria del buffer cache, hoy en día un dato poco útil
  • Cached: La memoria en el caché de disco menos SwapCache
  • SwapCache: La memoria que, una vez enviada al swap fue recuperada pero permanece en el fichero temporal, de forma que si es necesario volver a enviarla al swap ya está allí, ahorrandose E/S

Estadísticas detalladas

Estadísticas VM —máquina virtual—

La VM divide las páginas de caché en memoria activa e inactiva. La idea es que si necesitas memoria y hay que sacrificar caché para obtenerla, la tomas de la región inactiva, dado que es aquella cuyo contenido no se espera que sea necesario. La VM comprueba continuamente lo que se está utilizando y mueve de un lado para otro.

Cuando usas memoria, la CPU activa un big en la tabla de páginas. La VM comprueba ese bit ocasionalmente y basándose en ello devuelve páginas a la región activa. Hay una especie de orden «hace mucho que no se usa» —en realidad por supuesto es más complejo—. Las marcadas así pueden ser movidas a la región inactiva. Dicha región se divide en dos en el kernel utilizado. A veces en tres.

  • Active: Memoria que ha sido utilizada recientemente y que no va a ser reclamada a no ser que sea absolutamente necesario
  • Inact_dirty: Sucio significa «podría necesitar pasar a swap en disco— Es más difícil de liberar. Por ejemplo, ficheros que aún no han sido volcados a disco. No se escriben en memoria demasiado pronto para ahorrar E/S. De nuevo un ejemplo, los ficheros de log no deben ser volcados a disco demasiado pronto, hasta que se tenga la traza completa.
  • Inact_clean: Se asume que es fácilmente liberable, el kernel deja por aquí material limpio para asegurarse algo de espacio
  • Inact_target: Una medida que utiliza el kernel para asegurarse de que hay las suficientes páginas inactivas disponibles. Al pasarse, el kernel no va a hacer trabajo alguno para mover páginas de activas a inactivas. Hay otras formas en las que una página llega a ser inactiva. Por ejemplo, si practicas una E/S secuencial larga el kernel presume que no vas a usar esa memoria y la marca como inactiva preventivamente. De esta forma siempre hay más páginas inactivas de las necesarias dado que el kernel las marca como «probablemente no se usarán nunca—. Es una forma de hacer trampa en el mecanismo explicado de las «últimas utilizadas».

Estadísticas de memoria

  • HighTotal: La cantidad total de memoria en la región alta. Es toda la memoria sobre aprox. 860 MB de RAM física. El kernel utiliza trucos indirectos para acceder a esta región de memoria. Es donde se almacena la caché de datos.
  • LowTotal: La cantidad total de memoria fuera de la región alta
  • LowFree: La cantidad de memoria libre fuera de la región alta. Se trata de la memoria a la que el kernel puede acceder directamente. Todas sus estructuras de datos van aquí, fuera de la región alta.The amount of free memory of the low memory region. This is the memory the kernel can address directly. All kernel datastructures need to go into low memory.
  • SwapTotal: Cantidad total de memoria física en la región de swap.
  • SwapFree: Candidad de memoria libre en la región de swap.
  • Committed_AS: Una estimación de cuánta RAM necesitarías para tener la garantía al 99,9% de que nunca te quedarás sin memoria para la carga de trabajo actual. Normalmente el kernel comprometerá memoria de más. Esto significa que si haces p.ej. un malloc de 1 GB, no ocurre en realidad nada. Sólo cuando empiezas a usar esa memoria se demandará para ti memoria real, y tanta como uses. Es como contratar una hipoteca y esperar que el banco no quiebre. Otros ejemplos son hacer mmap con un fichero compartido sólo cuando escribes en el y obtienes así una copia privada de los datos. Es memoria normalmente compartida entre procesos. La cifra Committed_AS es una estimación de cuanta RAM y swap necesitas en el peor de los casos.

Visto en redhat.com. Gracias, @interslice.

¿Te pareció interesante? Sé tan amable de menear este artículo en Linuxfera y también en Linux Rank.

Artículos relacionados

cache Linux malloc meminfo proc ram swap vm

Bookmark and Share

3 Respuestas to “/proc/meminfo explicado”


  1. Warning: array_keys(): The first argument should be an array in /home/chs/linuxav.net/home/html/wp-content/plugins/WP-SEO-Master/modules/seo-master.php on line 462
    David.L el Miércoles, 3 de Junio de 2009 a las 16:55

    Excelente post, Ayuda a comprender un poco mas esos en principio tan complicados numeros, Y es muy util saber cuando flojeas de memoria

  2. Hola. Muy buen artículo. Llegué aquí desde Planeta Linux. ¿ Podrías hacer un artículo similar sobre el comando top, por favor ?. Gracias, hasta la próxima.

  3. Información Bitacoras.com…

    Valora en Bitacoras.com: «free», «buffer», «swap», «dirty». ¿Qué significan? Si has contestado «un campamento hippy», necesitas un cursillo sobre meminfo. El contenido de /proc/meminfo ayuda a explicar qué se cuece con el uso de tu memoria…

Deja una Respuesta

Sólo tres días tras tu tercer comentario en el sitio identificándote utilizando la misma información, el enlace de tu firma pasará a ser válido para los buscadores.