Oracle Es geht um die Übertragung der mit DTrace verbundenen Änderungen in das Upstream und die Pläne zur Implementierung der Technologie für dynamisches Debugging von DTrace über die native Infrastruktur des Linux-Kernels, insbesondere mit Verwendung von Subsystemen wie eBPF. Ursprünglich bestand das Hauptproblem bei der Verwendung von DTrace in Linux in der Lizenzinkompatibilität, aber 2018 hat das Unternehmen Oracle und den DTrace-Code unter GPLv2 lizenziert.
DTrace wird bereits als Teil des erweiterten Kernels für die Oracle Linux-Distribution angeboten, erfordert jedoch für die Verwendung in anderen Distributionen zusätzliche Kernel-Patches, was die Einsatzmöglichkeiten dieser Technologie einschränkt. Beispielsweise hat das Unternehmen Oracle eine detaillierte Anleitung zur Installation und Nutzung von DTrace in Fedora Linux bereitgestellt. Für die Installation ist der Aufbau und die Anwendung eines mit Patches von Oracle und Fedora neu kompilierten Linux-Kernels erforderlich. .
eBPF ist ein in den Linux-Kernel integrierter Bytecode-Interpreter, der die Erstellung von Netzwerkoperationen ermöglicht, um die Systemleistung zu überwachen, Systemaufrufe abzufangen, Zugriffe zu kontrollieren, zeitgestempelte Ereignisse (perf_event_open) zu verarbeiten, die Häufigkeit und Ausführungszeiten zu zählen sowie das Tracing mit kprobes/uprobes/tracepoints durchzuführen. Durch den Einsatz von JIT-Compiling wird der Bytecode zur Laufzeit in Maschinenanweisungen übersetzt und mit der Leistung von nativen Codes ausgeführt. DTrace kann über eBPF implementiert werden, ähnlich wie bestehende Tracing-Tools. vorhandene Trace-Tools.
Die DTrace-Technologie wurde für das Betriebssystem Solaris entwickelt, um dynamische Kernel- und Anwendungs-Trace-Analysetasks zu lösen. Sie ermöglicht es dem Benutzer, das Verhalten des Systems detailliert zu verfolgen und Probleme in Echtzeit zu diagnostizieren. Während der Fehlerbehebung hat DTrace keinen Einfluss auf die Leistung der untersuchten Anwendungen, was eine Analyse laufender Systeme in Echtzeit ermöglicht. Zu den Stärken von DTrace gehört die Hochsprache D, die AWK ähnelt und die Erstellung von Tracing-Skripten deutlich einfacher macht als die Verwendung der bereitgestellten eBPF-Tools zum Schreiben von Handlers in C, Python und Lua mit externen Bibliotheken.
Ingenieure von Oracle arbeiten auch an einem eBPF-Backend für GCC und haben bereits die Integration der eBPF-Unterstützung in GCC veröffentlicht und Die Implementierung von eBPF-Unterstützung in GNU Binutils. Derzeit basiert der Backend für die Unterstützung von eBPF auf LLVM-Technologien, jedoch ist Oracle daran interessiert, eine native Funktion zur Generierung von Programmen für eBPF in GCC zu integrieren. Dadurch könnte ein einheitliches Werkzeug sowohl für den Build des Linux-Kernels als auch für die Erstellung von eBPF-Anwendungen verwendet werden.
Zusätzlich zu dem Backend für die Bytecode-Generierung umfassen die für GCC vorgeschlagenen Patches auch den Port von libgcc für eBPF sowie Werkzeuge zur Erstellung von ELF-Dateien, die es ermöglichen, Code in der eBPF-VM unter Verwendung der vom Kernel bereitgestellten Loader auszuführen. Der Code kann bisher nur in C übersetzt werden (nicht alle Sprachfeatures sind verfügbar), aber in Zukunft wird eine Erweiterung der verfügbaren C-Funktionen sowie die Unterstützung anderer Sprachen, die Entwicklung eines Simulators und die Unterstützung von GCC zur Debugging eBPF-Programme ohne Kernel-Loading erwartet.
Quelle: opennet.ru
