Empresa Oracle sobre el trabajo de transferencia de los cambios relacionados con DTrace al upstream y los planes para implementar la tecnología de depuración dinámica de DTrace sobre la infraestructura del núcleo de Linux, específicamente utilizando subsistemas como eBPF. Inicialmente, el principal problema con el uso de DTrace en Linux era la incompatibilidad a nivel de licencias, pero en 2018, Oracle el código de DTrace bajo GPLv2.
DTrace ya se ofrece como parte del núcleo extendido para la distribución de Oracle Linux, pero para su uso en otras distribuciones requiere la aplicación de parches adicionales al núcleo, lo que limita el uso de esta tecnología. Como ejemplo, Oracle proporciona instrucciones detalladas para la instalación y uso de DTrace en Fedora Linux. Para la instalación se requiere compilar y aplicar un núcleo de Linux, recompilado con . Para automatizar la construcción del núcleo con los parches de Oracle y Fedora se ha propuesto un .
eBPF es un intérprete de bytecode integrado en el núcleo de Linux que permite crear controladores de operaciones de red, rastrear el funcionamiento del sistema, interceptar llamadas al sistema, controlar el acceso, procesar eventos manteniendo la cronometraje (perf_event_open), contar la frecuencia y el tiempo de ejecución de operaciones, y realizar trazado utilizando kprobes/uprobes/tracepoints. Gracias a la aplicación de la compilación JIT, el bytecode se traduce en instrucciones de máquina al vuelo y se ejecuta con el rendimiento del código nativo. DTrace puede implementarse sobre eBPF, de manera similar a cómo existen herramientas de trazado sobre eBPF. herramientas de seguimiento existentes.
La tecnología DTrace fue desarrollada para el sistema operativo Solaris con el fin de abordar tareas de trazado dinámico del núcleo del sistema y de las aplicaciones finales, permitiendo al usuario rastrear detalladamente el comportamiento del sistema y diagnosticar problemas en tiempo real. Durante el proceso de depuración, DTrace no afecta el funcionamiento de las aplicaciones analizadas ni impacta su rendimiento, lo que permite organizar un análisis de los sistemas en funcionamiento sobre la marcha. Entre las fortalezas de DTrace se destaca el lenguaje de alto nivel D, similar a AWK, con el cual es mucho más fácil crear guiones de trazado que utilizando los medios propuestos para eBPF que requieren escribir controladores en los lenguajes C, Python y Lua con bibliotecas externas.
Los ingenieros de Oracle también están trabajando en la creación de un backend eBPF para GCC y ya han publicado para integrar el soporte de eBPF en GCC y la inclusión de código para el soporte de eBPF en GNU binutils. Originalmente, el backend para el soporte de eBPF se basa en tecnologías LLVM, pero Oracle está interesada en tener una capacidad nativa de generación de programas para eBPF en GCC, lo que permitirá utilizar una sola herramienta tanto para compilar el núcleo de Linux como para compilar programas para eBPF.
Además del backend para la generación de bytecode, los parches propuestos para GCC también incluyen un puerto de libgcc para eBPF y herramientas para formar archivos ELF, que permiten ejecutar código en la máquina virtual eBPF utilizando cargadores proporcionados por el núcleo. Por ahora, el código en lenguaje C puede ser transpilado a bytecode (no todas las capacidades del lenguaje están disponibles), pero en el futuro se espera expandir las posibilidades del lenguaje C, añadir soporte para otros lenguajes, crear un simulador y añadir soporte a GCC para depurar programas eBPF sin cargar en el núcleo.
Fuente: opennet.ru
