Articulo de referencia

DTrace

DTrace command"},"author":{"wt":"[[Bryan Cantrill]], [[Adam Leventhal (programmer)|Adam Leventhal]], [[Mike Shapiro (programmer)|Mike Shapiro]] ([[Sun Microsystems]])"},"develop...

DTrace es un completo marco de rastreo dinámico creado originalmente por Sun Microsystems para la resolución de problemas del kernel y de las aplicaciones en sistemas de producción en tiempo real. Desarrollado inicialmente para Solaris , posteriormente se publicó bajo la licencia gratuita Common Development and Distribution License (CDDL) en OpenSolaris y su derivado illumos , y se ha adaptado a varios otros sistemas tipo Unix . Los sistemas Windows Server a partir de Windows Server 2025 incluirán DTrace como parte del sistema.

DTrace permite obtener una visión general del sistema en ejecución, como la cantidad de memoria, el tiempo de CPU, el sistema de archivos y los recursos de red utilizados por los procesos activos. También proporciona información mucho más detallada, como un registro de los argumentos con los que se llama a una función específica o una lista de los procesos que acceden a un archivo determinado.

En 2010, Oracle Corporation adquirió Sun Microsystems y anunció la descontinuación de OpenSolaris. Como un esfuerzo comunitario de algunos ingenieros centrales de Solaris para crear un Solaris verdaderamente de código abierto, el sistema operativo illumos se anunció a través de un seminario web el jueves 3 de agosto de 2010, [ 3 ] como una bifurcación de la consolidación de OpenSolaris OS/Net, incluida la tecnología DTrace.

En octubre de 2011, Oracle anunció la adaptación de DTrace a Linux , [ 4 ] y en 2019 la versión oficial de DTrace para Fedora está disponible en GitHub . Durante varios años, existió una versión no oficial de DTrace para Linux, sin cambios en los términos de la licencia. [ 5 ]

En agosto de 2017, Oracle publicó el código del kernel de DTrace bajo la licencia GPLv2+ y el código del espacio de usuario bajo las licencias GPLv2 y UPL . [ 6 ] En septiembre de 2018, Microsoft anunció que había portado DTrace de FreeBSD a Windows. [ 2 ]

En septiembre de 2016, el proyecto OpenDTrace se inició en GitHub con código fuente y documentación completa del funcionamiento interno del sistema. OpenDTrace mantiene la licencia CDDL original del código de OpenSolaris, y las contribuciones de código adicionales se rigen por la licencia BSD de 2 cláusulas . El objetivo de OpenDTrace es proporcionar una implementación portátil e independiente del sistema operativo de DTrace, compatible con todos los usuarios, incluyendo macOS, FreeBSD, OpenBSD, NetBSD y Linux, así como sistemas embebidos.

Descripción

Sun Microsystems diseñó DTrace para proporcionar información operativa que permita a los usuarios optimizar y solucionar problemas de las aplicaciones y del propio sistema operativo.

Los evaluadores escriben programas de rastreo (también llamados scripts) utilizando el lenguaje de programación D (que no debe confundirse con otros lenguajes de programación llamados "D" ). Este lenguaje, inspirado en C , incluye funciones y variables adicionales específicas para el rastreo. Los programas D se asemejan a los programas AWK en su estructura; consisten en una lista de una o más sondas (puntos de instrumentación), y cada sonda está asociada a una acción. Estas sondas son comparables a un punto de corte en la programación orientada a aspectos . Cuando se cumple la condición de la sonda, se ejecuta la acción asociada (la sonda se "dispara"). Una sonda típica podría dispararse al abrir un archivo, iniciar un proceso o ejecutar una línea de código específica. Una sonda que se dispara puede analizar la situación en tiempo de ejecución accediendo a la pila de llamadas y a las variables de contexto, y evaluando expresiones; luego puede imprimir o registrar información, guardarla en una base de datos o modificar variables de contexto. La lectura y escritura de variables de contexto permite que las sondas se pasen información entre sí, lo que les permite analizar de forma cooperativa la correlación de diferentes eventos.

Se ha prestado especial atención a la seguridad de DTrace en entornos de producción. Por ejemplo, el efecto de las sondas durante el rastreo es mínimo y no hay impacto en el rendimiento al desactivarlas; esto es importante, ya que existen decenas de miles de sondas DTrace que se pueden habilitar. Además, se pueden crear nuevas sondas de forma dinámica.

Ejemplos de línea de comandos

Los scripts de DTrace se pueden invocar directamente desde la línea de comandos, proporcionando una o más sondas y acciones como argumentos. Algunos ejemplos:

# Nuevos procesos con argumentos dtrace -n 'proc:::exec-success { trace(curpsinfo->pr_psargs); }'# Archivos abiertos por el proceso dtrace -n 'syscall::open*:entry { printf("%s %s",execname,copyinstr(arg0)); }'# Conteo de llamadas al sistema por programa dtrace -n 'syscall:::entry { @num[execname] = count(); }'# Conteo de llamadas al sistema por syscall dtrace -n 'syscall:::entry { @num[probefunc] = count(); }'# Conteo de llamadas al sistema por proceso dtrace -n 'syscall:::entry { @num[pid,execname] = count(); }'# Tamaño del disco por proceso dtrace -n 'io:::start { printf("%d %s %d",pid,execname,args[0]->b_bcount); }'# Páginas paginadas por el proceso dtrace -n 'vminfo:::pgpgin { @pg[execname] = sum(arg0); }'

También se pueden escribir scripts que pueden alcanzar cientos de líneas, aunque normalmente solo se necesitan unas pocas decenas para la resolución de problemas y el análisis avanzados. En DTraceToolkit, [ 7 ] creado por Brendan Gregg (autor del libro DTrace [ 8 ] ), se pueden encontrar más de 200 ejemplos de scripts DTrace de código abierto, que también incluye documentación y demostraciones de cada uno.

Plataformas compatibles

DTrace estuvo disponible por primera vez en noviembre de 2003 y se lanzó oficialmente como parte de Solaris 10 de Sun en enero de 2005. DTrace fue el primer componente del proyecto OpenSolaris cuyo código fuente se publicó bajo la Licencia Común de Desarrollo y Distribución (CDDL).

DTrace es una parte integral de illumos y distribuciones relacionadas.

DTrace es una parte estándar de FreeBSD [ 9 ] y NetBSD . [ 10 ]

Apple añadió soporte para DTrace en Mac OS X 10.5 "Leopard", incluyendo una GUI llamada Instruments . [ 11 ] Más de 40 scripts de DTrace del DTraceToolkit se incluyen en /usr/bin, [ 12 ] incluyendo herramientas para examinar la E/S del disco (iosnoop) y la ejecución de procesos (execsnoop). A diferencia de otras plataformas en las que se admite DTrace, Mac OS X tiene una bandera (P_LNOATTACH) que un programa puede establecer para impedir el rastreo de ese proceso por utilidades de depuración como DTrace y gdb . En la implementación original de DTrace de Mac OS X, esto podía afectar al rastreo de otra información del sistema, ya que las sondas no relacionadas que deberían activarse mientras se ejecutaba un programa con esta bandera establecida no lo harían. [ 13 ] La  actualización de OS X 10.5.3 solucionó este problema unos meses después. [ 14 ] Sin embargo, desde El Capitan, la Protección de Integridad del Sistema impide al usuario rastrear binarios protegidos con DTrace de forma predeterminada.

La versión de DTrace para Linux está disponible desde 2008; [ 15 ] se sigue trabajando activamente para mejorarla y corregir problemas. También hay una implementación activa en GitHub . Están disponibles los proveedores básicos estándar (fbt, syscall, profile), además de un proveedor especial "instr" (algunos de los proveedores de Solaris aún no están disponibles a partir de 2013).La implementación de DTrace en Linux es un módulo del kernel cargable , lo que significa que el kernel en sí no requiere ninguna modificación y, por lo tanto, permite que DTrace evite conflictos de licencias CDDL vs. GPL (al menos en su forma de código fuente). Sin embargo, una vez que se carga DTrace, la instancia del kernel se marcará como contaminada .

En 2007, un desarrollador de QNX Software Systems anunció en su blog que él y un colega estaban trabajando en la incorporación de DTrace al sistema operativo QNX . [ 16 ]

Oracle Corporation añadió soporte beta para DTrace en Oracle Linux en 2011, [ 1 ] como una vista previa tecnológica en la versión 2 del Unbreakable Enterprise Kernel , que está bajo la licencia GPLv2 (el módulo del kernel de Linux DTrace se publicó originalmente bajo la licencia CDDL). [ 17 ] Su disponibilidad general se anunció en diciembre de 2012. [ 18 ] [ 19 ]

El 11 de marzo de 2019, Microsoft lanzó una versión de DTrace para las compilaciones Insider de Windows 10. [ 20 ] Microsoft incluyó DTrace como una herramienta integrada en Windows Server 2025. [ 21 ] [ 22 ]

Proveedores de idiomas y aplicaciones

Con un proveedor de lenguaje compatible , DTrace puede recuperar el contexto del código, incluyendo la función, el archivo fuente y la ubicación del número de línea. Además, la asignación dinámica de memoria y la recolección de basura pueden estar disponibles si el lenguaje lo admite. [ 23 ] Los proveedores de lenguaje compatibles incluyen lenguaje ensamblador , C , C++ , Java , Erlang , JavaScript , Perl , PHP , Python , Ruby , script de shell y Tcl .

Los proveedores de aplicaciones permiten que DTrace siga el funcionamiento de las aplicaciones a través de llamadas al sistema y hasta el núcleo. Las aplicaciones que ofrecen proveedores de aplicaciones DTrace incluyen MySQL , PostgreSQL , Oracle Database , Oracle Grid Engine y Firefox . [ 23 ] [ 24 ] [ 25 ]

Autores y premios

DTrace fue diseñado e implementado por Bryan Cantrill , Mike Shapiro y Adam Leventhal .

Los autores recibieron reconocimiento en 2005 por las innovaciones en DTrace de InfoWorld y Technology Review . [ 26 ] [ 27 ] DTrace ganó el primer premio en el concurso de premios a la innovación tecnológica de The Wall Street Journal de 2006. [ 28 ] Los autores fueron reconocidos por USENIX con el premio Software Tools User Group (STUG) en 2008. [ 29 ]

Véase también

  • eBPF : backend de rastreo del kernel de Linux que proporciona un conjunto de características similares a DTrace [ 30 ] desde la versión 4.9 del kernel. Si bien es similar, su implementación difiere, al igual que su rendimiento [ 31 ]. 
  • ftrace : un marco de rastreo para el kernel de Linux, capaz de rastrear eventos de planificación, interrupciones, E/S mapeadas en memoria, transiciones de estado de energía de la CPU, etc. 
  • ktrace : una utilidad para sistemas BSD Unix y macOS que rastrea las interacciones entre el kernel y los programas. 
  • ltrace , una utilidad de depuración de Linux, muestra las llamadas que una aplicación de espacio de usuario realiza a las bibliotecas compartidas. 
  • strace , una utilidad de depuración para Linux, monitoriza las llamadas al sistema utilizadas por un programa y todas las señales recibidas. 
  • SystemTap : un lenguaje de scripting y una utilidad utilizada para instrumentar instalaciones de Linux. 
  • LTTng
  • IBM ProbeVue

Referencias

  • Cantrill, Bryan (febrero de 2006). "Oculto a plena vista" . ACM Queue . 4 (1): 26– 36. doi : 10.1145/1117389.1117401 . Recuperado el 19 de diciembre de 2017 .
  • Bryan M. Cantrill, Michael W. Shapiro y Adam H. Leventhal (junio de 2004). Instrumentación dinámica de sistemas de producción . Actas de la Conferencia Técnica Anual USENIX de 2004. Consultado el 8 de septiembre de 2006 .

Notas

  1. 1 2 Wim Coekaerts (09-10-2011). "Probando dtrace" . blogs.oracle.com . Consultado el 15-02-2018 .
  2. 1 2 "Aspectos internos del sistema operativo: Análisis técnico en profundidad de las innovaciones del sistema operativo - BRK3365" . Microsoft Ignite Channel . 8 de octubre de 2018.
  3. D'Amore, Garrett (3 de agosto de 2010). "Illumos - La esperanza y la luz renacen - Presentado por Garrett D'Amore" (PDF) . illumos.org . Consultado el 3 de agosto de 2010 .
  4. "Oracle llevará Dtrace a Linux" . Slashdot . 4 de octubre de 2011. Consultado el 11 de noviembre de 2020 .
  5. "El software DTrace original está licenciado bajo la licencia CDDL de Sun (ahora Oracle). Los derechos de autor originales se mantienen intactos. No se ha incorporado código GPL a esta versión para evitar conflictos legales."
  6. Wielaard, Mark J. (14 de febrero de 2018). "dtrace para Linux; Oracle hace lo correcto" . Blog de Mark J. Wielaard . Consultado el 14 de febrero de 2018 .
  7. "DTraceToolkit" . Brendan Gregg . Consultado el 8 de junio de 2014 .
  8. DTrace: Seguimiento dinámico en Oracle Solaris, Mac OS X y FreeBSD . Safari Books . 2011. ISBN 978-0132091510Archivado del original el 6 de abril de 2011. Consultado el 3 de enero de 2011 .
  9. "Anuncio de FreeBSD 7.1-RELEASE" . 6 de enero de 2009. Consultado el 6 de enero de 2009 .
  10. "Cambios en el código fuente de NetBSD, 21 de febrero de 2010" .
  11. "Mac OS X Leopard - Herramientas para desarrolladores - Instrumentos" . Apple Inc. Archivado del original el 24/10/2007 . Consultado el 19/10/2007 .
  12. "Mac OS X DTrace" . Apple Inc. Archivado del original el 5 de junio de 2022. Consultado el 31 de mayo de 2010 .
  13. "Mac OS X y las sondas faltantes" . Leventhal, Adam H. 18 de enero de 2008. Recuperado el 20 de enero de 2008 .
  14. "Apple actualiza DTrace" . Leventhal, Adam H. 7 de junio de 2008. Consultado el 16 de junio de 2008 .
  15. "Página de descarga de herramientas CRiSP" . Archivado del original el 16/11/2020 . Consultado el 02/03/2011 .
  16. "¡DTrace en QNX!" . Blog de Oracle The Observation Deck . 8 de noviembre de 2007.
  17. Zannoni, Elena; Van Hees, Kris (2012). DTrace en Linux (PDF) . Cumbre de Colaboración de la Fundación Linux. Archivado del original (PDF) el 7 de julio de 2014. Consultado el 5 de abril de 2012 .
  18. Koch, Zeynep (12 de diciembre de 2012). "Anuncio: DTrace para la disponibilidad general de Oracle Linux" . Blog de Oracle Linux .
  19. Código fuente del módulo DTrace para Linux
  20. ^ Pulapaka, Hari (11 de marzo de 2019). "DTrace en Windows" . Comunidad tecnológica de Microsoft .
  21. "DTrace" . Microsoft Learn . 19 de abril de 2024. Consultado el 7 de noviembre de 2024 .
  22. Gatlan, Sergiu (04/11/2024). "Windows Server 2025 lanzado: estas son las nuevas características" . BleepingComputer . Archivado del original el 05/11/2024 . Recuperado el 07/11/2024 .
  23. 1 2 DTrace: Seguimiento dinámico en Oracle Solaris, Mac OS X y FreeBSD . Prentice Hall . 2011. pág. 1152. ISBN  9780132091510.
  24. "Documentación de Open Grid Scheduler / Grid Engine" . Open Grid Scheduler . Consultado el 30 de diciembre de 2012 .
  25. "DTrace – MDN" . Mozilla. Archivado del original el 5 de septiembre de 2014. Consultado el 30 de diciembre de 2012 .
  26. "Seguimiento de software en tiempo real" . Technology Review . MIT. 2005. Consultado el 31 de marzo de 2007 .
  27. McAllister, Neil (agosto de 2005). "La innovación está viva y coleando en 2005" . InfoWorld . IDG. Archivado del original el 23 de noviembre de 2005. Consultado el 31 de marzo de 2007 .
  28. Totty, Michael (septiembre de 2006). "Los ganadores son..." The Wall Street Journal . Dow Jones & Company, Inc. Recuperado el 31 de marzo de 2007 .
  29. "Conferencia Técnica Anual USENIX 2008 (USENIX '08)" . 2008. Consultado el 26 de noviembre de 2008 .
  30. "DTrace Tools" . Consultado el 27 de noviembre de 2017 .
  31. "Análisis de rendimiento de DTrace en FreeBSD y eBPF en Linux" . Consultado el 17 de febrero de 2026 .
  • Herramientas DTrace Ejemplos de DTrace de Brendan Gregg (2004) 
  • DTraceToolkit : una colección de scripts de DTrace 
  • Scripts de libros de DTrace Scripts de libros de DTrace en GitHub 
  • Página de FreeBSD DTrace : página principal de FreeBSD DTrace, incluye un tutorial y comandos de una sola línea. 
  • Libro DTrace
  • Guía DTrace Libro DTrace de Illumos 
  • Rastreo dinámico con DTrace y SystemTap : libro gratuito con ejemplos y ejercicios. 
  • Laboratorio práctico de DTrace : un curso paso a paso para aprender DTrace. 
  • Tutorial de DLight : una utilidad interactiva con interfaz gráfica de usuario para desarrolladores de C/C++ basada en la tecnología DTrace; formaba parte de Oracle Solaris Studio antes de la versión 12.4. 
  • Explorando Leopard con DTrace : DTrace para depuración y exploración. 
  • Charla técnica sobre DTrace impartida por Bryan Cantrill.
  • Oculto a plena vista , Sun Microsystems, por Bryan Cantrill
  • Versión oficial de Oracle DTrace para Linux:
    • Los parches de DTrace se han integrado en las últimas versiones del kernel de Linux.
    • Parte del espacio de usuario de la adaptación de DTrace a Linux
    • Biblioteca Compact Type Format utilizada por DTrace en Linux
  • DTrace en Fedora
Obtenido de " https://en.wikipedia.org/w/index.php?title=DTrace&oldid=1343153783 "