Oracle-bedrijf
DTrace al
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
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
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