Espacio de tecnologia, software libre y sus derivados. Una horda de monos entrenados escriben de vez en cuando por aqui algunas noticias, opiniones e incluso alguna que otra cosa fuera del tema. Maqueros, favor de abstenerse que no somos lo suficientemente guapos.

Piano daemon

Explicando DTrace

DTrace es una de las características mas novedosas e importantes introducidas a partir de Solaris 10. Tanto es así que ya se han anunciado ports del sistema DTrace para otros sistemas operativos

Existen tanto en la pagina de BigAdmin como en la comunidad opensolaris sobre DTrace numerosos recursos de introducción a DTrace, pero quiero introducir mi punto de vista a la par que vengo leyendo e investigando un poco mas del uso de este juguetito.

¿ Que es DTrace ?

DTrace es un sistema, que permite obtener información de utilidad sobre virtualmente cualquier cosa que haga tanto el sistema operativo como los programas que se ejecutan encima de el.

DTrace es una aplicacion ligera que podran entender un poco mejor, todos aquellos que alguna vez programaron en “C” cosas triviales, como algun acceso a archivos mediante “file descriptors”, o que invocaron a la API de algun UNIX/LINUX usando lenguaje “C”.

DTrace, es como poder tener un depurador sobre todo el sistema (tanto kernel como programas).

¿ Que tiene de especial DTrace ?

DTrace permite la depuración sea realizada sobre sistemas en producción, con un bajisimo impacto en el rendimiento (practicamente 0 si no se hace uso de el, aunque este activo).

El administrador maneja el sistema DTrace basicamente mediante el comando “dtrace”, DTrace requiere de programas en lenguaje D (que suelen tener extension .d) para realizar su magia :).

El lenguaje D es un lenguaje hibrido entre C y algo de awk ( “sabia que haber estudiado awk no habia sido en vano … :P” ) , que sirve para “enganchar” trozos de codigo a “puntos de prueba”.

Nuestro primer programa en lenguaje D implementado con DTrace

Un ejemplo de lenguaje D es el siguiente fichero (hello.d):

dtrace:::BEGIN
{
trace(”Hello Foxy Lady”);
exit(0);
}

Este programa lo que hace es cada vez que “ocurra” el probe BEGIN dentro del provider dtrace se ejecute el codigo entre corchetes, en este caso mediante el comando trace(”Hello Foxy Lady”) imprimiria en la salida estandar un bonito “Hello Foxy Lady” y saldria asi ;-)

Ejecutandolo de la siguiente manera:

root@jimmyhendrix ~ # dtrace -s hello.d
dtrace: script ‘hello.d’ matched 1 probe
CPU ID FUNCTION:NAME
0 1 :BEGIN Hello Foxy Lady

root@jimmyhendrix ~ #

En concreto este punto de prueba (”probe”) BEGIN dentro del provider dtrace ocurre cuando se inicia un programa D.

Existen mas de 30000 puntos de prueba (” en ingles se hace referencia a ellos como probes .. checalos, estan disponibles mediante un “dtrace -l ”) en el sistema Solaris 10, pudiendo un programador añadir mas cosas que comprobar (probes) implementando lo que se llama un provider dentro de sus programas.

Por ejemplo, el autor de un servidor web puede añadir codigo a este para que el administrador pueda ejecutar acciones (normalmente de información) cada vez que se solicita una pagina web, cada vez que suceda un error u otras informaciones de alto nivel sobre el programa.

No obstante, aunque no existiera ese código dentro del programa, el administrador siempre puede obtener mediante dtrace(1m) información de menor nivel sobre el proceso ( por ejemplo, cuando abre un archivo, cuando solicita mas memoria etc etc ).

Grupo de Usuarios Solaris Mexico » Explicando DTrace

June 2, 2007 @ 4:16 am

[…] sobre DTrace numerosos recursos de introducción a DTrace, pero quiero introducir mi punto de vista aqui a la par que vengo leyendo e investigando un poco mas del uso de este […]

RSS feed para comentarios en esta entrada · TrackBack URI

Comenta