Solaris: Slab allocator

La gestión de memoria que hace el Kernel de un sistema operativo no se diferencia mucho de la que se debería hacer con cualquier otro software, excepto en una cosa, es difícil realizar una predicción sobre las necesidades de memoria que van a tener los distintos procesos que se estén ejecutando en el sistema, para ellos el Kernel debe estar continuamente reservando pedazos de memoria para la gestión del sistema, Continue reading

¿ Sabías que con mdb puedes ver la memoria del sistema?

La forma más rápida de ver el uso de la memoria física de nuestro sistema es ejecutando la siguiente línea de comando, que le pasa al debugger del kernel el comando “::memstat”

# echo "::memstat" | mdb -k
Page Summary                Pages                MB  %Tot
------------     ----------------  ----------------  ----
Kernel                      50136               391    3%
Anon                       356935              2788   20%
Exec and libs                4787                37    0%
Page cache                 160492              1253    9%
Free (cachelist)          1135937              8874   65%
Free (freelist)             52792               412    3%

Total                     1761079             13758

Con esta salida obtenemos una visión rápida del estado de nuestra memoria física, con 3 columnas, una en páginas, otra en MB y la última en prociento, de cuanta memoria está utilizando el Kernel, cuanta memoria está asignada como Anónima, cuanta se ha usado para el Page Cache y cuanta memoria está marcada como libre.

Si quieres saber exactamente la memoria disponible en el sistema utiliza este método, no use comandos como el vmstat.

Solaris: Analizando ficheros Core Dump (II)

En el post Solaris: Analizando ficheros Core Dump vimos en un sencillo ejemplo como podemos analizar los ficheros core generados por alguna de nuestras aplicaciones y cómo podemos intentar averiguar la causa de que se haya producido el fichero core. En este post veremos de una forma rápida, cómo podemos analizar el fichero core generado por el sistema después de que se haya producido un panic. Continue reading

Solaris: Buceando en el Kernel con mdb (I)

MDB (Modular Debugger) es una herramienta igual de potente que desconocida para la gran mayoría de administradores de sistemas, mucha gente desconoce la potencia de este debugger, ya que la asocian con una herramienta de desarrollo y nada más lejos de la realidad, una de las funcionalidades de este debugger es que trabaja con los ficheros core que generan las aplicaciones, tal como pudimos ver en el artículo Solaris: Analizando ficheros Core Dump, el debugger nos puede ayudar a conocer las causan que provocaron el fallo, recordemos que MDB trabaja con los ficheros core, que son una imagen de memoria del proceso que ha sufrido el fallo, esto nos permitía averiguar cuales fueron la causa de dicho fallo.

MDB no solo puede trabajar con los volcados de memoria de los procesos, sino que también lo puede hacer con las imágenes de memoria del kernel mientras este está ejecutándose, esto nos permite poder acceder a toda la información, si sabemos como leerla, con la que trabaja el kernel, lista de procesos, páginas de memoria, ficheros abiertos, listas de espera, conexiones de red, bloqueos, etc.

Continue reading