Bootchart : Analizando el arranque de GNU/Linux
Introducción
Bootchart es una herramienta para analizar el rendimiento y visualizar el proceso de arranque de un sistema GNU/Linux. Se dedica a recolectar información de los procesos y datos referentes a la utilización de recursos, para finalmente generar unas útiles gráficas en formato PNG, SVG o EPS. Esta aplicación está disponible en el repositorio oficial de Debian, así que la instalación será de lo más sencilla a través de cualquiera de los frontends para Apt.
Arranque
El analizador del arranque (/sbin/bootchartd) es ejecutado por el kernel, en lugar de /sbin/init. Esto se logra modificando los parámetros de arranque de Grub o Lilo:
/boot/grub/menu.lst
[...]
title Debian GNU/Linux, kernel 2.6.18-4-686
root (hd1,0)
kernel /boot/vmlinuz-2.6.18-4-686 root=/dev/hdb1 ro init=/sbin/bootchartd
initrd /boot/initrd.img-2.6.18-4-686De esta forma, bootchart se iniciará en segundo plano e inmediatamente ejecutará al proceso init original, /sbin/init. El arranque del sistema continuará normalmente.
Recolección de datos
Debido a que la partición raíz es montada como sólo-lectura durante el arranque, el analizador necesita almacenar la información en memoria, usando un sistema de archivos virtual (tmpfs).
Tan pronto como el sistema de archivos /proc sea montado -normalmente al inicio en el script sysinit- el analizador comenzará a recolectar la salida de varios archivos (no olvidemos que /proc mantiene información referente a los procesos en ejecución):
- /proc/stat
- estadísticas generales de la CPU: tiempo ocupado por usuario, tiempo ocupado por el sistema, tiempo en inactividad y tiempo en espera por entrada/salida
- /proc/diskstats
- estadísticas generales de los discos: uso y rendimiento del disco (sólo disponible en el kernel 2.6)
- /proc/[PID]/stat
- información sobre los procesos en ejecución: tiempo de inicio, PID del proceso padre, estado del proceso, uso de la CPU, etc
Los contenidos de estos archivos son agregados periódicamente a sus archivos log correspondientes, por defecto cada 0.2 segundos.
Bootchart intentará detectar el fin del arranque mediante la búsqueda de procesos específicos. Por ejemplo, cuando esté en runlevel 5 (modo gráfico multiusuario), buscará gdmgreeter, kdm_greet, etc. En cuanto alguno de estos procesos sea encontrado en ejecución, se detendrá la recolección de datos, empaquetando los archivos log y almacenándolos en /var/log/bootchart.tgz.
Configuración
En /etc/bootchart.conf podemos realizar los ajustes que creamos necesarios. Son 8 parámetros los que podemos configurar, los primeros 4 se pueden considerar opciones avanzadas, mientras que las demás pueden ser fácilmente manipuladas por cualquier usuario, pues básicamente se refieren a la ubicación del paquete tar con los archivos log y la opción de generar automáticamente las gráficas después de cada arranque, siendo posible configurar el formato y la ubicación de la imagen creada.
Visualización
El paquete tar generado es pasado a la aplicación en Java para la lectura y renderizado de los datos. Las estadísticas sobre el uso de CPU y disco son utilizadas para generar un diagrama de áreas y líneas. La información de los procesos es usada para crear un diagrama de Gantt mostrando las dependencias, estados y uso de CPU de los procesos.
Una típica secuencia de arranque consiste en cientos de procesos. Debido a que sería difícil visualizar tal cantidad de datos en una manera comprensible, el árbol de procesos es sintetizado, por decirlo de alguna forma. Los procesos en segundo plano y aquellos con una corta duración son eliminados. Los procesos similares que se ejecuten en paralelo son asimilados como uno solo.
Finalmente, los diagramas de rendimiento y dependencia son generados como una imagen en formato PNG, SVG o EPS.
Ejecución
El comportamiento predeterminado de bootchart es no crear automáticamente las gráficas, así que para hacer esto, basta con ejecutar:
$ bootchart
Al ejecutar este comando también podemos especificar el formato y el directorio destino de la imagen, elegir el archivo log a procesar e indicar si deseamos que se lleve a cabo la reducción o síntesis de la información del árbol de procesos.
Para mayor información consulta las páginas del manual de bootchart, bootchartd y bootchart.conf.
Una muestra de la imagen generada.
Este artículo es en su mayor parte una traducción de la información disponible en: http://www.bootchart.org
- 400 lecturas
- Responder