Analizar el arranque con Bootchart

Interesante artículo de Tincho en Debian Package of the Day, que nos explica como recopilar la información de arranque en GNU/Linux con Bootchart.

A veces el arranque del sistema se ralentiza y mucho, aunque podemos estar atentos a lo que sucede en la pantalla para ver si algo esta fallando, si tenemos algunos procesos que hacen un uso intensivo de disco u otras operaciones puede ser difícil detectar donde están los problemas.

Bootchart no va a hacer nuestro arranque más rápido ni nos va a dar consejos para la optimización del arranque, pero si que nos proporciona interesantes detalles sobre como se emplea el tiempo.

Bootchart está en dos paquetes, bootchart, el demonio profiler que coge datos de los recursos de /proc durante el arranque y bootchart-view que crea una imagen a partir de los datos recolectados.

bootchartd empieza a medir tan pronto como se monta /proc. Desde /proc recolecciona una cantidad ajustable de datos sobre procesos, incluyendo (en los kernels 2.6) el uso de disco y throughput.

La documentación recomienda usar accounting de procesos BSD para reconstruir exactamente el árbol de procesos. La funcionalidad CONFIG_BSD_PROCESS_ACCT_V3 está habilitada en los kernels por defecto de Debian, por tanto para usarla, tan solo necesitamos instalar el paquete acct.

En Debian o Ubuntu podemos instalar los tres paquetes con apt-get, coser y cantar:

sudo apt-get install bootchart bootchart-view acct

Habilitar el profiling del arranque es mucho más sencillo de lo que uno pude llegar a pensar. El boot profiler se inicia como una opción de la línea de comandos del boot/loader del kernel.

Aunque funciona con LILO el arranque interactivo de Grub lo hace muy sencillo:

  1. Seleccionamos una entrada del menu boot
  2. Pulsamos ‘e‘ para editar la entrada
  3. Añadimos ‘init=/sbin/bootchartd‘ a la línea de comandos
    del kernel
  4. 4. Pulsamos ‘b‘ y ha estamos arrancando con profiling bootchart activado bootchartd se inicia a si mismo y entonces lanza /sbin/init.

No vamos a ver ninguna indicación de que el registro tiene efecto, la salida en la consola aparece como de costumbre.

Una vez hayamos iniciado sesión veremos todos los datos almacenados en un tar comprimido, /var/log/bootchartd.tgz.

Para ver los datos ejecutamos bootchart-view (o bootchart a secas en lenny). Por defecto crea una imagen SVG pero también permite salida en EPS y PNG con la opción --format.

Pues eso es lo que ha tardado el portátil en arrancar:

Boot Chart

Por defecto el renderizador del chart no muestra todos los procesos hijos. Así que si creemos que nos puede ayudar este nivell de detalles, bootchart-view tiene la opción --no-prune. Aunque de este modo estamos avisados de que se va a crear una imagen bastante grande.

Una buena herramienta para diagnosticar problemas en el arranque. Ahora se trata de descubrir como podemos bajar de los dos minutos y medio en observando que es lo que más nos ralentiza. Wink

URL para hacer trackback a este post:

http://bytecoders.net/trackback/560
 

Comentarios

Interesantísimo

Muchas gracias por hablar de este tema tan interesante. No lo conocía pero pienso probarlo... ¡Que yo tengo tantas cosas en el arranque que tarda una eternidad! ;-)

¡Te has ganado un bookmark! :D

Me encantan los benchmarks

La verdad es que cuando lo ví, también me pareció interesante. Son de aquellas cosas que ves y te parecen curiosas, crees que a otra gente le podría interesar también y tomas nota en tu lengua materna.

La verdad es que sí, ahora lo tengo a mano y supongo que le podremos sacar utilidad en alguna que otra ocasión.