Oracle pretende reelaborar DTrace para Linux usando eBPF

Compañía Oracle informou sobre o traballo na transferencia de cambios relacionados con DTrace a upstream e planea implementar a tecnoloxía de depuración dinámica DTrace enriba da infraestrutura estándar do núcleo de Linux, é dicir, usando subsistemas como eBPF. Inicialmente, o principal problema co uso de DTrace en Linux era a incompatibilidade a nivel de licenza, pero en 2018 Oracle relicenciado Código DTrace baixo GPLv2.

DTrace xa Moito tempo ofrécese como parte dun núcleo estendido para a distribución Oracle Linux, pero para o seu uso noutras distribucións require o uso de parches adicionais do núcleo, o que limita o uso desta tecnoloxía. Por exemplo, Oracle preparado instrucións detalladas para instalar e usar DTrace en Fedora Linux. Montaxe necesaria para a instalación ferramentas e o uso dun núcleo de Linux reconstruído a partir parches. Para automatizar a execución da construción do núcleo con parches de Oracle e Fedora, proponse guión.

eBPF é un intérprete de bytecode integrado no núcleo de Linux que permite crear controladores de operacións de rede, supervisar o funcionamento do sistema, interceptar chamadas ao sistema, controlar o acceso, procesar eventos con cronometraxe (perf_event_open), contar a frecuencia e o tempo de execución das operacións, realizar o rastrexo mediante kprobes. /uprobes /tracepoints. Grazas ao uso da compilación JIT, o bytecode tradúcese sobre a marcha en instrucións da máquina e execútase co rendemento do código nativo. DTrace pódese implementar enriba de eBPF, de forma similar a como se implementa enriba de eBPF работают ferramentas de rastrexo existentes.

A tecnoloxía DTrace desenvolveuse para o sistema operativo Solaris para resolver o problema de rastrexar dinámicamente o núcleo do sistema e as aplicacións finais, dando ao usuario a posibilidade de supervisar o comportamento do sistema en detalle e diagnosticar problemas en tempo real. Durante o proceso de depuración, DTrace non afecta o funcionamento das aplicacións obxecto de estudo e non afecta de ningún xeito o seu rendemento, o que permite organizar a análise dos sistemas en execución sobre a marcha. Un dos puntos fortes de DTrace é a linguaxe D de alto nivel, similar a AWK, na que é moito máis doado crear scripts de rastrexo que usar as ferramentas que se ofrecen para escribir controladores eBPF en C, Python e Lua con bibliotecas externas.

Os enxeñeiros de Oracle tamén están a traballar na creación dun backend eBPF para GCC e xa o publicaron conxunto de parches para integrar o soporte eBPF en GCC e conseguido incluíndo código para soportar eBPF en binutils GNU. Inicialmente, o backend para o soporte de eBPF baséase en tecnoloxías LLVM, pero Oracle está interesado na aparición en GCC dunha capacidade estándar para xerar programas para eBPF, que permitirá o uso dun kit de ferramentas tanto para construír o núcleo de Linux como para construír programas. para eBPF.

Ademais do backend de xeración de bytecode, os parches propostos para GCC tamén inclúen un porto libgcc para eBPF e ferramentas para xerar ficheiros ELF, o que permite executar código na máquina virtual eBPF mediante cargadores proporcionados polo núcleo. Polo momento, o código na linguaxe C pódese traducir a bytecode (non todas as funcións da linguaxe están dispoñibles), pero no futuro espérase que amplíe as capacidades da linguaxe C dispoñibles para o seu uso, agregue compatibilidade con outros idiomas, cree un simulador e engadir soporte de GCC para depurar programas eBPF sen cargalos no núcleo.

Fonte: opennet.ru

Engadir un comentario