Solaris: Introducción a Resource Management (II)

En el post anterior, sobre Resource Management, vimos las posibilidades que ofrece este conjunto de herramientas para la gestión de los recursos. Principalmente vimos la forma en la que podemos gestionar ciertos parámetros del Kernel y como crear grupos de CPUs. En este post vamos a ver la herramienta RCAP (Resource Capping Daemon) que nos permite controlar la cantidad de memoria física a la que tiene acceso un proceso. Continue reading

Linux: Importante vulnerabilidad encontrada en Linux

Se ha encontrado una vulneravilidad en Linux que afecta a todos los kernel de las ramas 2.4 y 2.6, la vulnerabilidad puede ser aprovechada en cualquier arquitectura, por lo que es URGENTE aplicar el parche enviado por Linus el pasado 13 de agosto. Toda la información sobre esta vulnerabilidad la podéis encontrar en el blog de Julien Tinnes y en la web de SecurityFocus.com

El parche de Linus, ya podían haber hecho esto antes…programadores!!! jejejeje!!

diff --git a/net/socket.c b/net/socket.c
index 791d71a..6d47165 100644 (file)
--- a/net/socket.c
+++ b/net/socket.c
@@ -736,7 +736,7 @@ static ssize_t sock_sendpage(struct file *file, struct page *page,
        if (more)
                flags |= MSG_MORE;

-       return sock->ops->sendpage(sock, page, offset, size, flags);
+       return kernel_sendpage(sock, page, offset, size, flags);
 }

 static ssize_t sock_splice_read(struct file *file, loff_t *ppos,

Ahora solo hay que esperar que las distintas distribuciones comiencen a distribuir el parche, como primera acción os recomiendo que desactivéis todas aquellas cuentas de usuarios que consideréis sospechosas, ya que la vulnerabilidad solo puede ser explotada localmente.

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

Solaris: Memory Leak o ZFS usando cache ARC.

Si estas apuntado a la lista perf-discuss@opensolaris.org, habrás podido ver el revuelo que se ha generado durante esta semana debido a un posible problema de fuga de memoria en el Kernel de Solaris 10, todo ha sido un mal entendido, debido a que ZFS utiliza la cache ARC (Adaptive replacement cache). El este tipo de algoritmo de remplazo de cache mejora al clásico LRU (Least Recently Used), ZFS hace uso de la cache ARC para mejorar el rendimiento en el acceso a los datos de los distintos pools. La implementación de ARC en Solaris utiliza memoria del Kernel, esto puede llevarnos a una confusión, haciendonos creer que se está produciendo una fuga de memoria en el propio Kernel. Continue reading

SPARC: Rendimiento del T2+

Hace algún tiempo que Sun ha puesto en escena el procesador UltraSPARC T2+, puedes leer una pequeña descripción de este procesador en el siguiente link. El procesador dispone de varios cores (dependiendo del modelo que compres) y cada uno de los cores es capaz de gestionar 8 threads hardware. Solaris trata cada uno de los threads hardware de los cores como si se tratasen de CPUs, en realidad, podemos pensar en CPUs virtuales. Continue reading

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

Libros : Solaris Internals (Jim Mauro – Richard McDougall)

La semana pasada estuve dando una charla sobre DTrace, en la Universidad Politecnica de Madrid. Durante la charla surgieron varias cuestiones y comentarios sobre el conocimiento que los administradores de sistema tienen sobre los sistemas que administran e hice referencia a uno de los libros que, al menos yo, considero imprescidible para conocer la entrañas del Kernel de un SO como es Solaris, se trata de Solaris Internals de Jim Mauro y Richard McDougall.

La lectura de este libro aporta una visión del SO un tanto alejada de la perspectiva que muchos administradores tienen del SO hoy en dia, como ya he comentado alguna vez, creo que un administrador debe aportar más valor del que aporta un script de arranque/parada. Este libro nos enseña las entrañas de Solaris, el gestor de memoria, el slab allocator, como trabaja el scheluder, las estrutucturas de datos de los procesos y threads, la gestión de los FS, el control de recursos, Zonas, etc. Creo que es un libro imprescindible para aquellos que tengan la necesidad de conocer cómo funciona la tecnología con la que trabajan y en el que se pueden obtener muchas respuestas.

¿ Sabías que… en Solaris existe un fichero con todas las syscall ?

En Solaris existe el fichero /etc/name_to_sysnum, donde aparece la lista de todas las llamadas a sistema y sus identificadores, que son utilizadas en el sistema. De una versión del SO a otra versión del mismo SO pueden cambiar los IDs de las llamadas a sistema, por lo que es interesante conocer estos IDs y a qué syscall está asociada, sobre todo si desarrollamos aplicaciones que interactuen con el sistema, al estilo de truss. Continue reading

Solaris: Introducción a DTrace

Hace tiempo que estoy detrás de intentar escribir una pequeña entrada en el blog sobre DTrace, pienso que ha sido una de las herramientas más interesante que han aparecido para el estudio del rendimiento de los sistemas y no solo para eso, tambien puede ayudar a todos aquellos que deseen profundizar en la compresión de cómo funciona el Kernel de Solaris. Creo que cualquier persona que bien vaya a desarrollar, bien administre sistemas Solaris, debería conocer DTrace, sino en profundidad, al menos conocer las posibilidades que nos ofrece. En este artículo veremos una breve introducción a DTrace, de todas formas es imprescindible, para todos aquellos que deseen profundizar más, la lectura de Solaris Dynamic Tracing Guide.

Continue reading

Solaris: Buceando en el Kernel con libkvm

En la serie de artículos, que comenzó con Solaris: Buceando en el Kernel con mdb(I), analizamos cómo podemos utilizar la herramienta MDB para conocer qué está haciendo el Kernel, utilizando los distintos comandos y walkers podemos obtener una idea de qué esta ocurriendo en el sistema, en otro artículo veremos como podemos implementar nuestros propios comandos en MDB, pero ahora, vamos a ver qué otra herramienta está disponible en nuestro sistema, que nos ayudará para que podamos bucear en el Kernel. En este artículo no vamos a ver una herramienta propiamente dicha, analizaremos una de las librerías del sistema /usr/lib/libkvm.so.1, con la cual, podremos construir nuestros propios comandos o simplemente pequeños programas para identificar elementos en nuestro sistema.

Continue reading

Solaris: Navegando en el /proc (IV)

Hasta ahora hemos visto, la estructura básica del sistema de archivos /proc, la estructura de algunos de los fichero que lo forman y como podemos acceder al espacio de direcciones de un proceso simplemente utilizando las llamadas open() y read(), hasta hemos visto como cambiar el valor de una variable de un proceso. Este artículo nació de la charla que tuvimos algunos compañeros con los que trabajo, sobre la razón de que una de las aplicaciones con las que trabajamos estaba continuamente realizando llamadas poll() y necesitabamos conocer cuales son los descriptores de ficheros que están utilizando las distintas llamadas a poll().

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