SlideShare una empresa de Scribd logo
1 de 30
Introducción a DTrace Iban Nieto Castillero Comunidad OpenSolaris OpenJavaDay - Mayo de 2007 z www.aulaunix.org
dtrace:::BEGIN Ésta presentación es una introducción a DTrace y forma parte de la documentación de AulaUnix (http://www.aulaunix.org). ¡¡ BIENVENIDOS A TOD@S !!
dtrace:::BEGIN { trace(“¿De qué vamos a hablar?”); exit(0); } - Qué es DTrace - A quien está dirigido - Como funciona - Probes, providers, modules... - CHIME, un interfaz gráfico para DTrace - Preguntas iniciales - Referencias
¿Qué es DTrace? - DTrace es una herramienta de depuración introducida en los sistemas operativos Solaris 10 y OpenSolaris que nos puede ayudar a depurar problemas sistemáticos y/o difíciles de diagnosticar con las herramientas y mecanismos tradicionales.  - Instrumentación dinámica que examina la actividad de espacio de usuario (user-level) y del kernel de Solaris (kernel-level), ofreciéndonos una vista comprensible del comportamiento del sistema operativo y de las aplicaciones que se ejecutan sobre él.  - Permite varios cientos de miles de puntos de instrumentación ( probes ), contando ya con más de 30000 . - Poderoso lenguaje de programación D (similar a C y awk, interpretado) que nos permite instanciar  probes - Considerada actualmente como la única herramienta disponible que es lo suficientemente segura para utilizar en sistemas de producción, además con un insignificante impacto en el rendimiento (0% cuando no se emplea).
¿Qué es DTrace? - Integra en una única herramienta funciones similares a las de truss, apptrace, prex y mdb (entre otros):
¿Qué es DTrace? - Nos sirve para buscar errores en el software, probando qué es problema y qué no - Nos sirve para medir la magnitud del problema - Observación detallada: dispositivos como discos ó actividad de red - Observación de aplicaciones, tanto del sistema como de terceros - Captura de datos de profiling para análisis de rendimiento - Si existe un problema de latencia en algún lado, DTrace puede ayudar a encontrarlo
¿Qué es DTrace? - Ejemplo #1 - Probando nuevos procesos que se ejecutan en el sistema:
¿Qué es DTrace? - Ejemplo syscall con truss - truss sólo examina 1 proceso a la vez y además ralentiza el objetivo a probar
¿Qué es DTrace? - Ejemplo syscall con DTrace - DTrace permite probar todos los procesos y además NO ralentiza!
Dtrace es, en pocas palabras: - Una herramienta - Un intérprete de lenguaje de programación - Un framework de instrumentación
¿A quién está dirigido? - Cualquiera puede emplear DTrace desde el principio utilizando la documentación de los scripts ya escritos de  DTraceToolkit  ó los scripts de una única línea documentados en  Solaris Performance and Tools . Al principio no necesitaremos escribir nuestros propios scripts, pero a medida que vayan surgiendo necesidades, encontraremos que pueden probar una mayor eficacia a la hora de resolver problemas en nuestros entornos. - No es necesario tener conocimientos del kernel para estudiar el código a nivel de usuario.  - Existen muchos  providers  de alto nivel que pueden ser diseñados a medida para proveernos de una documentada abstracción del kernel. Dichos  providers  hacen  tracing  al kernel mucho mejor y más fácilmente de lo que se podamos creer inicialmente.  - Comprender el kernel de Solaris es necesario para escribir scripts DTrace avanzados para los que de momento no existe un  provider  de alto nivel. Por ejemplo,  para examinar la actividad TCP/IP en detalle.
¿A quién está dirigido? - Desarrolladores de kernel: DTrace recoge datos de casi cualquier función de kernel, en cuestión de nanosegundos, incluyendo  timestamp . También pueden analizar problemas de drivers, incluso en tiempo de arranque del sistema. - Administradores de sistemas: con DTrace pueden buscar y analizar problemáticas que antes eran imposibles ó muy difíciles de encontrar -   Administradores de bases de datos: pueden analizar el rendimiento y  throughput  entre todos los componentes del sistema - Administradores de Seguridad:   pueden auditar casi cualquier parte del sistema, así como descifrar problemas de  malware
¿Cómo funciona? - El lenguaje de programación D está basado en el lenguaje C, así que algún  conocimiento inicial de éste lenguaje puede ayudar a su entendimiento.  - D es bastante más fácil que C ya que sólo  hay que aprender un pequeño número de funciones y tipo de variables para ser capaz de escribir poderosos scripts. Además los programas en D también son similares a los programas escritos en awk, lo cual puede resultar de ayuda - En D no existen estructuras de control ( if o bucles como while, for...), aunque de todas maneras los predicados nos permiten poner condiciones para ejecutar código.
¿Cómo funciona? - Ejemplo script en D Imprimir por pantalla las llamadas al sistema que realiza la shell bash (bash.d): #!/usr/sbin/dtrace -s syscall:::entry /execname==?bash?/ { printf(?%s llamada?,probefunc); } Descripción del código: syscall:::entry  descripción del probe / predicado / { printf(?%s llamada?,probefunc);  acciones } Cuando un probe comienza la acción es ejecutado si el predicado se evalúa como true
¿Cómo funciona? En ésta figura se ilustra el funcionamiento de DTrace: el comando dtrace(1M) utiliza una librería llamada libdtrace como punto de entrada de varios proveedores ( providers ) dentro del kernel de Solaris; cada uno de ellos nos ofrece una vista lógica de algunos subsistemas del kernel.
¿Cómo funciona? - Cuando se ejecutan los programas escritos en D son compilados “al vuelo” en  bytecodes  que pueden ser interpretados dentro del kernel.  - La máquina virtual de DTrace ejecuta  los  bytecodes  para garantizar que sean seguros.  - Si el código es seguro y tenemos los suficientes privilegios, el código se parchea dentro del kernel dinámicamente y  es ejecutado como código de kernel .  - Éste es el por qué los probes que no están activos no pueden crear ninguna sobrecarga.
¿ Qué son los  probes  y  providers ? - Un  probe  es un punto de instrumentación que puede ser seguido por DTrace.  Por ejemplo, llamamos el probe "syscall:read:entry" cuando invocamos la llamada del sistema (syscall) read(2) y se llama a "syscall::read::return" cuando se completa la syscall read(2).  Algunos ejemplo de probes: -  syscall::read::entry Comienzo de llamada al sistema read() -  proc:::exec-success Un proceso ha sido creado correctamente -  io:::start Se ha producido una E/S -  io:::done Se ha terminado una E/S - Ejecutando la instrucción  dtrace -l  podremos ver la lista de  probes . - Con  dtrace -n  tomamos el nombre de la prueba y comienza a realizar el trace: dtrace -n syscall::exece:return
¿ Qué son los  probes  y  providers ? (continuación) - Existen 4 componentes para el nombre del  probe :  provider:module:function:name  (proveedor:módulo:función:nombre), de manera que posteriormente podamos reconocer fácilmente los  probes  que puedan ser de nuestro interés. - El  provider  ó proveedor es una colección de ciertos  probes , muy similar a una colección de funciones. Por ejemplo, el  provider  syscall nos ofrece una serie  de  probes  para la entrada y retorno de todas las llamadas al sistema.  - Los módulos corresponden a los módulos de kernel de Solaris. En caso de crear nuestros propios  probes  dentro de las aplicaciones, el módulo puede ser la clase ó el código del módulo en el que definimos el  probe . Si el  probe  corresponde a una ubicación específica, el nombre del módulo es donde se localiza. - Las funciones son los nombres de las funciones del código en las que están situados los  probes .  - El nombre es el componente final del probe nos da una idea de cuando se ejecuta el  probe , como por ejemplo BEGIN ó END
¿Es seguro DTrace? Principios de diseño: - Sólo se pueden realizar probes seguros - No hay recursividad para los probes - Máquina virtual en kernel - Previene almacenar en memoria arbitraria del kernel - No hay loops en el kernel - No se permite ejecutar instrucciones ilegales mientras se esté en kernel - No hay división por cero - Protección E/S de espacio de memoria - Previene cargas desde memoria sin mapear
¿Es seguro DTrace? (continuación) Para poder emplear DTrace tenemos que tener al menos uno de los siguientes  privilegios (sólo ciertos grupos de privilegios permiten funcionar a Dtrace) : -  dtrace_kernel  permite acceso a nivel de kernel - dtrace_proc  permite realizar  probes  en los procesos en los que el usuario tiene permisos. -  dtrace_user  permite a un usuario tener acceso a llamadas al sistema ( syscall ) y a ciertos perfiles de proveedores ( providers ) Si no estás seguro de los privilegios que tienes actualmente, ejecutando el comando 'ppriv $$'  , obtendrás los privilegios que te ha proporcionado tu  shell . Una forma de obtener permisos DTrace es añadir la siguiente línea a /etc/user_attr (reemplaza <user> con tu usuario): iban::::defaultpriv=basic,dtrace_proc,dtrace_kernel
Ejemplos - La mejor colección de ejemplos la podemos encontrar en DTraceToolkit.  Brendan Gregg, -su autor- ha documentado la mayor colección de scripts hasta el momento. - Si tienes instalado Solaris Express Developer Edition, en el directorio /usr/demo/dtrace encontrarás más scripts.  - También puedes usar tu navegador web para verlos todos, escribiendo la URL:  file:///usr/demo/dtrace/index.html  en la barra de dirección. NOTA: Al final de la ponencia podremos ver algunos ejemplos con DtraceToolkit, pues es la mayor colección a todos los niveles de scripts DTrace
CHIME – Un interfaz gráfico para DTrace CHIME  es una herramienta gráfica que nos permite revisar visualmente lo que hace DTrace. Es una alternativa a las utilidades de línea de comandos (como por ejemplo intrstat) CHIME es más intuitivo y potencialmente más útil que la interfaz de comandos; en particular, la habilidad de visualizar los datos en tiempo real (de forma visual) añade una dimensión que nos faltaba para la observación del sistema:
CHIME – Un interfaz gráfico para DTrace
CHIME – Un interfaz gráfico para DTrace - Para ejecutar CHIME es necesario tener al menos el build 35 de Solaris Nevada. - La ubicación de los binarios de CHIME es  /opt/OSOL0chime/bin/chime - Debemos tener suficientes privilegios DTrace. Ésto no es problema si somos root, sin embargo quizás necesitemos ejecutar la instrucción  xhost +a  para que la aplicación Java de CHIME puede funcionar sobre nuestro DISPLAY. Una mejor forma de obtener permisos DTrace es añadir la siguiente línea a  /etc/user_attr  (reemplaza <user> con tu usuario): iban::::defaultpriv=basic,dtrace_proc,dtrace_kernel El privilegio  dtrace_kernel  nos dará acceso de sólo lectura a la máquina. Necesitaremos volver a logearnos en el sistema si queremos que los efectos se apliquen.
CHIME – Un interfaz gráfico para DTrace Una característica importante de CHIME es la habilidad de añadir nuevos  displays  (vistas) sin tener que recompilar (las vistas se describen en ficheros XML). Su sintaxis nos permite que los valores de cada programa DTrace puedan ser sustituidos detrás de cada escenario, permitiendo al usuario de CHIME seleccionar de una gama descrita las modificaciones del programa sin tener que saber nada sobre DTrace.  CHIME se puede bajar desde la  página del proyecto chime-project .  Si creas una vista útil para CHIME, por favor compártela en  dtrace-discuss  junto con cualquier anécdota relacionada y así podrán agregarla a la página del proyecto para que otros puedan usarla :-)
CHIME – Un interfaz gráfico para DTrace Ejemplos de llamadas al sistema y E/S de dispositivos:
Preguntas iniciales - ¿Existe DTrace para otros sistemas operativos? No, de momento no. DTrace fue inventado por los ingenieros de Sun Microsystems  Bryan Cantrill ,  Mike Shapiro  y  Adam Leventhal  únicamente para Solaris 10 y OpenSolaris. Hay un proyecto en vía de desarrollo para portar DTrace a FreeBSD, que además ya está a un nivel avanzado, ejecutando algunas de las principales características. A muchos de los ingenieros de DTrace les gustaría verlo en funcionamiento en otros sistemas operativos, de hecho apoyan que DTrace sea portado a otras plataformas.  De todas maneras, Apple ya  anunció  que DTrace tendrá mucha influencia en las herramientas de desarrollo para Mac OS X 10.5, más conocido como &quot;Leopard&quot;, previsto para Otoño del 2007. Dtrace NO está disponible para Solaris 9 y no hay planes de que lo esté en el futuro
Preguntas iniciales - ¿No se había inventado ya algo similar hace 20 años para los mainframes? No, DTrace puede probar dinámicamente cualquier función de entrada/retorno en un kernel en funcionamiento (unos 36.000 probes); incluso cualquier función en el código de espacio de usuario y librerías (por ejemplo, mozilla y sus librerías suman unas 100.000 probes); instrucciones a nivel de usuario (sobre los 200.000 probes solo para la shell Bourne) y sin perder rendimiento. - ¿Existen libros sobre DTrace? Sí, existen de momento dos libros excelentes sobre Dtrace: “ The DTrace Guide” es la mejor referencia para DTrace que cubre el lenguaje, providers y montones de ejemplos más. Fue escrito por los ingenieros de DTrace y es una referencia obligada.  “ Solaris Performance and Tools“ demuestra el uso de DTrace para la observación y el depurado del rendimiento. Fué escrito por Brendan Gregg (autor del DTraceToolkit), Richard McDougall y Jim Mauro (autor de “Solaris Internals”) .
Referencias Puedes encontrar extensa información sobre DTrace en los siguientes enlaces: Comunidad OpenSolaris - DTrace http://www.opensolaris.org/os/community/dtrace/ Sun BigAdmin http://www.sun.com/bigadmin/content/dtrace/ DTraceToolkit http://www.opensolaris.org/os/community/dtrace/FAQ/dtracetoolkit
dtrace:::END Muchas gracias por asistir a ésta presentación

Más contenido relacionado

La actualidad más candente

Administración básica de ubuntu server parte 2
Administración básica de ubuntu server   parte 2Administración básica de ubuntu server   parte 2
Administración básica de ubuntu server parte 2Santiago Márquez Solís
 
Linux basico-6.PDF
Linux basico-6.PDFLinux basico-6.PDF
Linux basico-6.PDFULEAM
 
Linux basico-2.PDF
Linux basico-2.PDFLinux basico-2.PDF
Linux basico-2.PDFULEAM
 
Como instalar Unix(Johanna)
Como instalar Unix(Johanna)Como instalar Unix(Johanna)
Como instalar Unix(Johanna)JohannaCamila
 
Programando en java
Programando en javaProgramando en java
Programando en javajulianbm60
 
Tema 12 hilos en java por gio
Tema 12   hilos en java por gioTema 12   hilos en java por gio
Tema 12 hilos en java por gioRobert Wolf
 
41 parámetros y módulos generales
41  parámetros y módulos generales41  parámetros y módulos generales
41 parámetros y módulos generalesAprende Viendo
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas OperativosUCC
 
Monousuarios y multiusuarios
Monousuarios y multiusuariosMonousuarios y multiusuarios
Monousuarios y multiusuariospaonenajessi
 

La actualidad más candente (19)

Zenmap
ZenmapZenmap
Zenmap
 
16.10.24 robots jus intro ros s4-5
16.10.24 robots jus intro ros s4-516.10.24 robots jus intro ros s4-5
16.10.24 robots jus intro ros s4-5
 
Administración básica de ubuntu server parte 2
Administración básica de ubuntu server   parte 2Administración básica de ubuntu server   parte 2
Administración básica de ubuntu server parte 2
 
ZENMAP
ZENMAPZENMAP
ZENMAP
 
Multitarea e hilos en java con ejemplos
Multitarea e hilos en java con ejemplosMultitarea e hilos en java con ejemplos
Multitarea e hilos en java con ejemplos
 
Comandos linux
Comandos linuxComandos linux
Comandos linux
 
Linux basico-6.PDF
Linux basico-6.PDFLinux basico-6.PDF
Linux basico-6.PDF
 
Linux basico-2.PDF
Linux basico-2.PDFLinux basico-2.PDF
Linux basico-2.PDF
 
Curso básico linux
Curso básico linuxCurso básico linux
Curso básico linux
 
Como instalar Unix(Johanna)
Como instalar Unix(Johanna)Como instalar Unix(Johanna)
Como instalar Unix(Johanna)
 
37 reunir información del sistema
37  reunir información del sistema37  reunir información del sistema
37 reunir información del sistema
 
Programando en java
Programando en javaProgramando en java
Programando en java
 
Tema 12 hilos en java por gio
Tema 12   hilos en java por gioTema 12   hilos en java por gio
Tema 12 hilos en java por gio
 
41 parámetros y módulos generales
41  parámetros y módulos generales41  parámetros y módulos generales
41 parámetros y módulos generales
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
 
39 o profile
39  o profile39  o profile
39 o profile
 
6 la shell bash
6 la shell bash6 la shell bash
6 la shell bash
 
Hilos En Java
Hilos En JavaHilos En Java
Hilos En Java
 
Monousuarios y multiusuarios
Monousuarios y multiusuariosMonousuarios y multiusuarios
Monousuarios y multiusuarios
 

Similar a Intro to DTrace (20)

CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)CREACION DE DLL Y USO (Ejemplo desarrollado)
CREACION DE DLL Y USO (Ejemplo desarrollado)
 
Sysinternals Suite
Sysinternals SuiteSysinternals Suite
Sysinternals Suite
 
comandos dos1.pdf
comandos dos1.pdfcomandos dos1.pdf
comandos dos1.pdf
 
CMD en Windows
CMD en WindowsCMD en Windows
CMD en Windows
 
28 el directorio sysconfig
28  el directorio sysconfig28  el directorio sysconfig
28 el directorio sysconfig
 
Present3
Present3Present3
Present3
 
arquitectura-de-linux
arquitectura-de-linuxarquitectura-de-linux
arquitectura-de-linux
 
Shellt
ShelltShellt
Shellt
 
Comandos consola-windows-xp
Comandos consola-windows-xpComandos consola-windows-xp
Comandos consola-windows-xp
 
Unix
UnixUnix
Unix
 
Unix
UnixUnix
Unix
 
Unix. (1)
Unix. (1)Unix. (1)
Unix. (1)
 
Disparadores 1213820550525607-9
Disparadores 1213820550525607-9Disparadores 1213820550525607-9
Disparadores 1213820550525607-9
 
Taller sistemas operativos
Taller sistemas operativosTaller sistemas operativos
Taller sistemas operativos
 
Presentacion Demo Open Solaris
Presentacion Demo Open SolarisPresentacion Demo Open Solaris
Presentacion Demo Open Solaris
 
Artículo - Simulador NS (Network Simulator)
Artículo - Simulador NS (Network Simulator)Artículo - Simulador NS (Network Simulator)
Artículo - Simulador NS (Network Simulator)
 
Análisis Forense Memoria RAM
Análisis Forense Memoria RAMAnálisis Forense Memoria RAM
Análisis Forense Memoria RAM
 
¿Qué es un sistema operativo?
¿Qué es un sistema operativo?¿Qué es un sistema operativo?
¿Qué es un sistema operativo?
 
Taller sistemas operativos
Taller sistemas operativosTaller sistemas operativos
Taller sistemas operativos
 
Framework .NET 3.5 09 Depuración, monitorización y pruebas
Framework .NET 3.5 09 Depuración, monitorización y pruebasFramework .NET 3.5 09 Depuración, monitorización y pruebas
Framework .NET 3.5 09 Depuración, monitorización y pruebas
 

Más de Iban Nieto Castillero (12)

OpenSolaris para la comunidad educativa
OpenSolaris para la comunidad educativaOpenSolaris para la comunidad educativa
OpenSolaris para la comunidad educativa
 
Novedades de OpenSolaris 2009.06
Novedades de OpenSolaris 2009.06Novedades de OpenSolaris 2009.06
Novedades de OpenSolaris 2009.06
 
OpenSolaris 2009.06 Workshop
OpenSolaris 2009.06 WorkshopOpenSolaris 2009.06 Workshop
OpenSolaris 2009.06 Workshop
 
Interoperabilidad con OpenSolaris
Interoperabilidad con OpenSolarisInteroperabilidad con OpenSolaris
Interoperabilidad con OpenSolaris
 
Introducción a Java FX
Introducción a Java FXIntroducción a Java FX
Introducción a Java FX
 
Sun y el software de código abierto
Sun y el software de código abiertoSun y el software de código abierto
Sun y el software de código abierto
 
OpenSolaris 2008.05 Euskal Encounter 16
OpenSolaris 2008.05 Euskal Encounter 16OpenSolaris 2008.05 Euskal Encounter 16
OpenSolaris 2008.05 Euskal Encounter 16
 
OpenSolaris 2008.05 Keynote
OpenSolaris 2008.05 KeynoteOpenSolaris 2008.05 Keynote
OpenSolaris 2008.05 Keynote
 
Tragedias Space Shuttle
Tragedias Space ShuttleTragedias Space Shuttle
Tragedias Space Shuttle
 
Termopilas
TermopilasTermopilas
Termopilas
 
Keynote OpenSolaris CUORE
Keynote OpenSolaris CUOREKeynote OpenSolaris CUORE
Keynote OpenSolaris CUORE
 
Introduccion a OpenSolaris
Introduccion a OpenSolarisIntroduccion a OpenSolaris
Introduccion a OpenSolaris
 

Último

Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024u20211198540
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxhasbleidit
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar24roberto21
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)JuanStevenTrujilloCh
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
PROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y masPROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y maslida630411
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDAVIDROBERTOGALLEGOS
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armadob7fwtwtfxf
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdfBetianaJuarez1
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointValerioIvanDePazLoja
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerenciacubillannoly
 
Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nóminacuellosameidy
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptxHugoGutierrez99
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfcristianrb0324
 

Último (20)

Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
PROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y masPROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y mas
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptx
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armado
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power Point
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerencia
 
Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nómina
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdf
 

Intro to DTrace

  • 1. Introducción a DTrace Iban Nieto Castillero Comunidad OpenSolaris OpenJavaDay - Mayo de 2007 z www.aulaunix.org
  • 2. dtrace:::BEGIN Ésta presentación es una introducción a DTrace y forma parte de la documentación de AulaUnix (http://www.aulaunix.org). ¡¡ BIENVENIDOS A TOD@S !!
  • 3. dtrace:::BEGIN { trace(“¿De qué vamos a hablar?”); exit(0); } - Qué es DTrace - A quien está dirigido - Como funciona - Probes, providers, modules... - CHIME, un interfaz gráfico para DTrace - Preguntas iniciales - Referencias
  • 4. ¿Qué es DTrace? - DTrace es una herramienta de depuración introducida en los sistemas operativos Solaris 10 y OpenSolaris que nos puede ayudar a depurar problemas sistemáticos y/o difíciles de diagnosticar con las herramientas y mecanismos tradicionales. - Instrumentación dinámica que examina la actividad de espacio de usuario (user-level) y del kernel de Solaris (kernel-level), ofreciéndonos una vista comprensible del comportamiento del sistema operativo y de las aplicaciones que se ejecutan sobre él. - Permite varios cientos de miles de puntos de instrumentación ( probes ), contando ya con más de 30000 . - Poderoso lenguaje de programación D (similar a C y awk, interpretado) que nos permite instanciar probes - Considerada actualmente como la única herramienta disponible que es lo suficientemente segura para utilizar en sistemas de producción, además con un insignificante impacto en el rendimiento (0% cuando no se emplea).
  • 5. ¿Qué es DTrace? - Integra en una única herramienta funciones similares a las de truss, apptrace, prex y mdb (entre otros):
  • 6. ¿Qué es DTrace? - Nos sirve para buscar errores en el software, probando qué es problema y qué no - Nos sirve para medir la magnitud del problema - Observación detallada: dispositivos como discos ó actividad de red - Observación de aplicaciones, tanto del sistema como de terceros - Captura de datos de profiling para análisis de rendimiento - Si existe un problema de latencia en algún lado, DTrace puede ayudar a encontrarlo
  • 7. ¿Qué es DTrace? - Ejemplo #1 - Probando nuevos procesos que se ejecutan en el sistema:
  • 8. ¿Qué es DTrace? - Ejemplo syscall con truss - truss sólo examina 1 proceso a la vez y además ralentiza el objetivo a probar
  • 9. ¿Qué es DTrace? - Ejemplo syscall con DTrace - DTrace permite probar todos los procesos y además NO ralentiza!
  • 10. Dtrace es, en pocas palabras: - Una herramienta - Un intérprete de lenguaje de programación - Un framework de instrumentación
  • 11. ¿A quién está dirigido? - Cualquiera puede emplear DTrace desde el principio utilizando la documentación de los scripts ya escritos de DTraceToolkit ó los scripts de una única línea documentados en Solaris Performance and Tools . Al principio no necesitaremos escribir nuestros propios scripts, pero a medida que vayan surgiendo necesidades, encontraremos que pueden probar una mayor eficacia a la hora de resolver problemas en nuestros entornos. - No es necesario tener conocimientos del kernel para estudiar el código a nivel de usuario. - Existen muchos providers de alto nivel que pueden ser diseñados a medida para proveernos de una documentada abstracción del kernel. Dichos providers hacen tracing al kernel mucho mejor y más fácilmente de lo que se podamos creer inicialmente. - Comprender el kernel de Solaris es necesario para escribir scripts DTrace avanzados para los que de momento no existe un provider de alto nivel. Por ejemplo, para examinar la actividad TCP/IP en detalle.
  • 12. ¿A quién está dirigido? - Desarrolladores de kernel: DTrace recoge datos de casi cualquier función de kernel, en cuestión de nanosegundos, incluyendo timestamp . También pueden analizar problemas de drivers, incluso en tiempo de arranque del sistema. - Administradores de sistemas: con DTrace pueden buscar y analizar problemáticas que antes eran imposibles ó muy difíciles de encontrar - Administradores de bases de datos: pueden analizar el rendimiento y throughput entre todos los componentes del sistema - Administradores de Seguridad: pueden auditar casi cualquier parte del sistema, así como descifrar problemas de malware
  • 13. ¿Cómo funciona? - El lenguaje de programación D está basado en el lenguaje C, así que algún conocimiento inicial de éste lenguaje puede ayudar a su entendimiento. - D es bastante más fácil que C ya que sólo hay que aprender un pequeño número de funciones y tipo de variables para ser capaz de escribir poderosos scripts. Además los programas en D también son similares a los programas escritos en awk, lo cual puede resultar de ayuda - En D no existen estructuras de control ( if o bucles como while, for...), aunque de todas maneras los predicados nos permiten poner condiciones para ejecutar código.
  • 14. ¿Cómo funciona? - Ejemplo script en D Imprimir por pantalla las llamadas al sistema que realiza la shell bash (bash.d): #!/usr/sbin/dtrace -s syscall:::entry /execname==?bash?/ { printf(?%s llamada?,probefunc); } Descripción del código: syscall:::entry descripción del probe / predicado / { printf(?%s llamada?,probefunc); acciones } Cuando un probe comienza la acción es ejecutado si el predicado se evalúa como true
  • 15. ¿Cómo funciona? En ésta figura se ilustra el funcionamiento de DTrace: el comando dtrace(1M) utiliza una librería llamada libdtrace como punto de entrada de varios proveedores ( providers ) dentro del kernel de Solaris; cada uno de ellos nos ofrece una vista lógica de algunos subsistemas del kernel.
  • 16. ¿Cómo funciona? - Cuando se ejecutan los programas escritos en D son compilados “al vuelo” en bytecodes que pueden ser interpretados dentro del kernel. - La máquina virtual de DTrace ejecuta los bytecodes para garantizar que sean seguros. - Si el código es seguro y tenemos los suficientes privilegios, el código se parchea dentro del kernel dinámicamente y es ejecutado como código de kernel . - Éste es el por qué los probes que no están activos no pueden crear ninguna sobrecarga.
  • 17. ¿ Qué son los probes y providers ? - Un probe es un punto de instrumentación que puede ser seguido por DTrace. Por ejemplo, llamamos el probe &quot;syscall:read:entry&quot; cuando invocamos la llamada del sistema (syscall) read(2) y se llama a &quot;syscall::read::return&quot; cuando se completa la syscall read(2). Algunos ejemplo de probes: - syscall::read::entry Comienzo de llamada al sistema read() - proc:::exec-success Un proceso ha sido creado correctamente - io:::start Se ha producido una E/S - io:::done Se ha terminado una E/S - Ejecutando la instrucción dtrace -l podremos ver la lista de probes . - Con dtrace -n tomamos el nombre de la prueba y comienza a realizar el trace: dtrace -n syscall::exece:return
  • 18. ¿ Qué son los probes y providers ? (continuación) - Existen 4 componentes para el nombre del probe : provider:module:function:name (proveedor:módulo:función:nombre), de manera que posteriormente podamos reconocer fácilmente los probes que puedan ser de nuestro interés. - El provider ó proveedor es una colección de ciertos probes , muy similar a una colección de funciones. Por ejemplo, el provider syscall nos ofrece una serie de probes para la entrada y retorno de todas las llamadas al sistema. - Los módulos corresponden a los módulos de kernel de Solaris. En caso de crear nuestros propios probes dentro de las aplicaciones, el módulo puede ser la clase ó el código del módulo en el que definimos el probe . Si el probe corresponde a una ubicación específica, el nombre del módulo es donde se localiza. - Las funciones son los nombres de las funciones del código en las que están situados los probes . - El nombre es el componente final del probe nos da una idea de cuando se ejecuta el probe , como por ejemplo BEGIN ó END
  • 19. ¿Es seguro DTrace? Principios de diseño: - Sólo se pueden realizar probes seguros - No hay recursividad para los probes - Máquina virtual en kernel - Previene almacenar en memoria arbitraria del kernel - No hay loops en el kernel - No se permite ejecutar instrucciones ilegales mientras se esté en kernel - No hay división por cero - Protección E/S de espacio de memoria - Previene cargas desde memoria sin mapear
  • 20. ¿Es seguro DTrace? (continuación) Para poder emplear DTrace tenemos que tener al menos uno de los siguientes privilegios (sólo ciertos grupos de privilegios permiten funcionar a Dtrace) : - dtrace_kernel permite acceso a nivel de kernel - dtrace_proc permite realizar probes en los procesos en los que el usuario tiene permisos. - dtrace_user permite a un usuario tener acceso a llamadas al sistema ( syscall ) y a ciertos perfiles de proveedores ( providers ) Si no estás seguro de los privilegios que tienes actualmente, ejecutando el comando 'ppriv $$' , obtendrás los privilegios que te ha proporcionado tu shell . Una forma de obtener permisos DTrace es añadir la siguiente línea a /etc/user_attr (reemplaza <user> con tu usuario): iban::::defaultpriv=basic,dtrace_proc,dtrace_kernel
  • 21. Ejemplos - La mejor colección de ejemplos la podemos encontrar en DTraceToolkit. Brendan Gregg, -su autor- ha documentado la mayor colección de scripts hasta el momento. - Si tienes instalado Solaris Express Developer Edition, en el directorio /usr/demo/dtrace encontrarás más scripts. - También puedes usar tu navegador web para verlos todos, escribiendo la URL: file:///usr/demo/dtrace/index.html en la barra de dirección. NOTA: Al final de la ponencia podremos ver algunos ejemplos con DtraceToolkit, pues es la mayor colección a todos los niveles de scripts DTrace
  • 22. CHIME – Un interfaz gráfico para DTrace CHIME es una herramienta gráfica que nos permite revisar visualmente lo que hace DTrace. Es una alternativa a las utilidades de línea de comandos (como por ejemplo intrstat) CHIME es más intuitivo y potencialmente más útil que la interfaz de comandos; en particular, la habilidad de visualizar los datos en tiempo real (de forma visual) añade una dimensión que nos faltaba para la observación del sistema:
  • 23. CHIME – Un interfaz gráfico para DTrace
  • 24. CHIME – Un interfaz gráfico para DTrace - Para ejecutar CHIME es necesario tener al menos el build 35 de Solaris Nevada. - La ubicación de los binarios de CHIME es /opt/OSOL0chime/bin/chime - Debemos tener suficientes privilegios DTrace. Ésto no es problema si somos root, sin embargo quizás necesitemos ejecutar la instrucción xhost +a para que la aplicación Java de CHIME puede funcionar sobre nuestro DISPLAY. Una mejor forma de obtener permisos DTrace es añadir la siguiente línea a /etc/user_attr (reemplaza <user> con tu usuario): iban::::defaultpriv=basic,dtrace_proc,dtrace_kernel El privilegio dtrace_kernel nos dará acceso de sólo lectura a la máquina. Necesitaremos volver a logearnos en el sistema si queremos que los efectos se apliquen.
  • 25. CHIME – Un interfaz gráfico para DTrace Una característica importante de CHIME es la habilidad de añadir nuevos displays (vistas) sin tener que recompilar (las vistas se describen en ficheros XML). Su sintaxis nos permite que los valores de cada programa DTrace puedan ser sustituidos detrás de cada escenario, permitiendo al usuario de CHIME seleccionar de una gama descrita las modificaciones del programa sin tener que saber nada sobre DTrace. CHIME se puede bajar desde la página del proyecto chime-project . Si creas una vista útil para CHIME, por favor compártela en dtrace-discuss junto con cualquier anécdota relacionada y así podrán agregarla a la página del proyecto para que otros puedan usarla :-)
  • 26. CHIME – Un interfaz gráfico para DTrace Ejemplos de llamadas al sistema y E/S de dispositivos:
  • 27. Preguntas iniciales - ¿Existe DTrace para otros sistemas operativos? No, de momento no. DTrace fue inventado por los ingenieros de Sun Microsystems Bryan Cantrill , Mike Shapiro y Adam Leventhal únicamente para Solaris 10 y OpenSolaris. Hay un proyecto en vía de desarrollo para portar DTrace a FreeBSD, que además ya está a un nivel avanzado, ejecutando algunas de las principales características. A muchos de los ingenieros de DTrace les gustaría verlo en funcionamiento en otros sistemas operativos, de hecho apoyan que DTrace sea portado a otras plataformas. De todas maneras, Apple ya anunció que DTrace tendrá mucha influencia en las herramientas de desarrollo para Mac OS X 10.5, más conocido como &quot;Leopard&quot;, previsto para Otoño del 2007. Dtrace NO está disponible para Solaris 9 y no hay planes de que lo esté en el futuro
  • 28. Preguntas iniciales - ¿No se había inventado ya algo similar hace 20 años para los mainframes? No, DTrace puede probar dinámicamente cualquier función de entrada/retorno en un kernel en funcionamiento (unos 36.000 probes); incluso cualquier función en el código de espacio de usuario y librerías (por ejemplo, mozilla y sus librerías suman unas 100.000 probes); instrucciones a nivel de usuario (sobre los 200.000 probes solo para la shell Bourne) y sin perder rendimiento. - ¿Existen libros sobre DTrace? Sí, existen de momento dos libros excelentes sobre Dtrace: “ The DTrace Guide” es la mejor referencia para DTrace que cubre el lenguaje, providers y montones de ejemplos más. Fue escrito por los ingenieros de DTrace y es una referencia obligada. “ Solaris Performance and Tools“ demuestra el uso de DTrace para la observación y el depurado del rendimiento. Fué escrito por Brendan Gregg (autor del DTraceToolkit), Richard McDougall y Jim Mauro (autor de “Solaris Internals”) .
  • 29. Referencias Puedes encontrar extensa información sobre DTrace en los siguientes enlaces: Comunidad OpenSolaris - DTrace http://www.opensolaris.org/os/community/dtrace/ Sun BigAdmin http://www.sun.com/bigadmin/content/dtrace/ DTraceToolkit http://www.opensolaris.org/os/community/dtrace/FAQ/dtracetoolkit
  • 30. dtrace:::END Muchas gracias por asistir a ésta presentación