Oracle Company over het werk aan de overdracht van gerelateerde DTrace-wijzigingen naar upstream en de plannen voor de implementatie van de technologie voor dynamische debugging van DTrace bovenop de standaard Linux-kernel infrastructuur, met name met het gebruik van subsystemen zoals eBPF. Aanvankelijk was de belangrijkste uitdaging bij het gebruik van DTrace in Linux de incompatibiliteit op licentieniveau, maar in 2018 heeft Oracle de DTrace-code naar GPLv2 gewijzigd.
DTrace wordt al aangeboden als onderdeel van de uitgebreide kernel voor de Oracle Linux-distributie, maar voor gebruik in andere distributies vereist het de toepassing van aanvullende kernelpatches, wat het gebruik van deze technologie beperkt. Ter illustratie geeft Oracle een gedetailleerde instructie voor het installeren en gebruiken van DTrace in Fedora Linux. Voor de installatie is het nodig om de kernel te bouwen en de Linux-kernel toe te passen, opnieuw gebouwd met . Voor het automatiseren van de bouw van de kernel met de Oracle- en Fedora-patches is .
eBPF een ingebouwde bytecode-interpreter in de Linux-kernel die het mogelijk maakt om netwerkbewerkingshandelaars te creëren, systeemoperaties te volgen, systeemaanroepen te intercepten, toegang te controleren, gebeurtenissen met tijdregistratie te verwerken (perf_event_open), de frequentie en uitvoeringstijd van operaties te tellen, en tracing uit te voeren met behulp van kprobes/uprobes/tracepoints. Dankzij JIT-compilatie wordt bytecode in real-time omgezet naar machine-instructies en uitgevoerd met de prestaties van native code. DTrace kan bovenop eBPF worden geïmplementeerd, vergelijkbaar met hoe bestaande tracing-tools werken. bestaande traceertools.
De DTrace-technologie is ontwikkeld voor het Solaris-besturingssysteem om de uitdagingen van dynamische kerneltracering en eindtoepassingen aan te pakken, waardoor gebruikers de mogelijkheid krijgen om het gedrag van het systeem in detail te volgen en in realtime diagnose van problemen uit te voeren. Tijdens het debuggen heeft DTrace geen invloed op de werking van de onderzochte applicaties en beïnvloedt het hun prestaties niet, waardoor realtime analyse van werkende systemen mogelijk is. Onder de sterke punten van DTrace valt de hoog-niveau programmeertaal D, die lijkt op AWK, waar scripting voor tracing aanzienlijk eenvoudiger te realiseren is dan met de aangeboden middelen voor eBPF, waarvoor handelaars in de programmeertalen C, Python en Lua met externe bibliotheken moeten worden geschreven.
Ingenieurs van Oracle zijn ook bezig met het creëren van een eBPF-backend voor GCC en hebben al gepubliceerd voor de integratie van eBPF-ondersteuning in GCC en de opname van code voor eBPF-ondersteuning in GNU binutils. Oorspronkelijk is de backend voor eBPF-ondersteuning gebaseerd op LLVM-technologieën, maar Oracle is geïnteresseerd in het opnemen van een native functie in GCC voor het genereren van programma's voor eBPF, wat het mogelijk maakt om één toolkit te gebruiken voor zowel de compilatie van de Linux-kernel als voor de compilatie van eBPF-programma's.
Naast de backend voor het genereren van bytecode omvatten de voorgestelde patches voor GCC ook een port van libgcc naar eBPF en tools voor het maken van ELF-bestanden, die de uitvoering van code in de eBPF-virtuele machine mogelijk maken met behulp van door de kernel geleverde loaders. Code in de C-taal kan momenteel worden omgezet naar bytecode (niet alle mogelijkheden van de taal zijn beschikbaar), maar in de toekomst wordt verwacht dat de beschikbare mogelijkheden van de C-taal worden uitgebreid, met ondersteuning voor andere talen, de creatie van een simulator en de toevoeging van ondersteuning voor GCC voor het debuggen van eBPF-programma's zonder deze in de kernel te laden.
Bron: opennet.ru
