Oracle is van plan DTrace voor Linux te herwerken met behulp van eBPF

Oracle-bedrijf gerapporteerd over het werk aan het overbrengen van DTrace-gerelateerde wijzigingen naar upstream en plannen om DTrace dynamische debugging-technologie te implementeren bovenop de standaard Linux-kernelinfrastructuur, namelijk met behulp van subsystemen zoals eBPF. Aanvankelijk was het grootste probleem bij het gebruik van DTrace op Linux incompatibiliteit op licentieniveau, maar in 2018 opnieuw gelicentieerd DTrace-code onder GPLv2.

DTrace al lange tijd wordt aangeboden als onderdeel van een uitgebreide kernel voor de Oracle Linux-distributie, maar voor gebruik in andere distributies vereist het het gebruik van aanvullende kernelpatches, wat het gebruik van deze technologie beperkt. Orakel bijvoorbeeld bereid gedetailleerde instructies voor het installeren en gebruiken van DTrace op Fedora Linux. Montage vereist voor installatie hulpmiddelen en het gebruik van een Linux-kernel waaruit is herbouwd pleisters. Om de uitvoering van het bouwen van de kernel met Oracle- en Fedora-patches te automatiseren, wordt voorgesteld script.

eBPF is een bytecode-interpreter ingebouwd in de Linux-kernel waarmee u handlers voor netwerkbewerkingen kunt maken, de werking van het systeem kunt monitoren, systeemoproepen kunt onderscheppen, toegang kunt controleren, gebeurtenissen kunt verwerken met tijdregistratie (perf_event_open), de frequentie en uitvoeringstijd van bewerkingen kunt tellen en tracering kunt uitvoeren met behulp van kprobes /uprobes/tracepoints. Dankzij het gebruik van JIT-compilatie wordt bytecode direct vertaald naar machine-instructies en uitgevoerd met de prestaties van native code. DTrace kan bovenop eBPF worden geïmplementeerd, vergelijkbaar met hoe het bovenop eBPF wordt geïmplementeerd werken bestaande traceringsinstrumenten.

DTrace-technologie is ontwikkeld voor het Solaris-besturingssysteem om het probleem van het dynamisch traceren van de systeemkernel en eindapplicaties op te lossen, waardoor de gebruiker het systeemgedrag in detail kan volgen en problemen in realtime kan diagnosticeren. Tijdens het foutopsporingsproces heeft DTrace geen invloed op de werking van de onderzochte applicaties en op geen enkele manier op hun prestaties, waardoor u de analyse van actieve systemen direct kunt organiseren. Een van de sterke punten van DTrace is de D-taal op hoog niveau, vergelijkbaar met AWK, waarin het veel eenvoudiger is om traceringsscripts te maken dan het gebruik van de aangeboden tools voor het schrijven van eBPF-handlers in C, Python en Lua met externe bibliotheken.

Ingenieurs van Oracle werken ook aan het creëren van een eBPF-backend voor GCC en hebben al gepubliceerd patch ingesteld om eBPF-ondersteuning te integreren in GCC en bereikt inclusief code ter ondersteuning van eBPF in GNU binutils. Aanvankelijk is de backend voor eBPF-ondersteuning gebaseerd op LLVM-technologieën, maar Oracle is geïnteresseerd in het verschijnen in GCC van een standaardmogelijkheid om programma's voor eBPF te genereren, waardoor het gebruik van één toolkit zowel voor het bouwen van de Linux-kernel als voor het bouwen van programma's mogelijk wordt. voor eBPF.

Naast de backend voor het genereren van bytecodes omvatten de voorgestelde patches voor GCC ook een libgcc-poort voor eBPF en tools voor het genereren van ELF-bestanden, waardoor het mogelijk wordt om code uit te voeren in de virtuele eBPF-machine met behulp van door de kernel geleverde laders. Voorlopig kan code in de C-taal worden vertaald in bytecode (niet alle taalfuncties zijn beschikbaar), maar in de toekomst wordt verwacht dat dit de beschikbare C-taalmogelijkheden zal uitbreiden, ondersteuning voor andere talen zal toevoegen, een simulator zal creëren en GCC-ondersteuning toevoegen voor het debuggen van eBPF-programma's zonder in de kernel te laden.

Bron: opennet.ru

Voeg een reactie