Oracle beabsichtigt, DTrace für Linux mithilfe von eBPF neu zu gestalten

Oracle-Unternehmen berichtet über die Arbeit an der Übertragung von DTrace-bezogenen Änderungen an den Upstream und plant die Implementierung der dynamischen DTrace-Debugging-Technologie zusätzlich zur Standard-Linux-Kernel-Infrastruktur, insbesondere unter Verwendung von Subsystemen wie eBPF. Das Hauptproblem bei der Verwendung von DTrace unter Linux war zunächst die Inkompatibilität auf Lizenzebene, im Jahr 2018 jedoch Oracle neu lizenziert DTrace-Code unter GPLv2.

DTrace bereits lange Zeit wird als Teil eines erweiterten Kernels für die Oracle-Linux-Distribution angeboten, erfordert für den Einsatz in anderen Distributionen jedoch den Einsatz zusätzlicher Kernel-Patches, was den Einsatz dieser Technologie einschränkt. Als Beispiel: Oracle vorbereitet detaillierte Anweisungen zur Installation und Verwendung von DTrace unter Fedora Linux. Für die Installation ist eine Montage erforderlich Werkzeuge und die Verwendung eines neu erstellten Linux-Kernels Patches. Es wird vorgeschlagen, die Ausführung der Kernel-Erstellung mit Oracle- und Fedora-Patches zu automatisieren Skript.

eBPF ist ein in den Linux-Kernel integrierter Bytecode-Interpreter, der es Ihnen ermöglicht, Netzwerkbetriebshandler zu erstellen, den Systembetrieb zu überwachen, Systemaufrufe abzufangen, den Zugriff zu steuern, Ereignisse mit Zeitmessung zu verarbeiten (perf_event_open), Häufigkeit und Ausführungszeit von Vorgängen zu zählen und eine Ablaufverfolgung mithilfe von kprobes durchzuführen /uprobes /tracepoints. Dank der Verwendung der JIT-Kompilierung wird Bytecode im Handumdrehen in Maschinenanweisungen übersetzt und mit der Leistung von nativem Code ausgeführt. DTrace kann auf eBPF implementiert werden, ähnlich wie es auf eBPF implementiert wird arbeiten vorhandene Tracing-Tools.

Die DTrace-Technologie wurde für das Betriebssystem Solaris entwickelt, um das Problem der dynamischen Verfolgung des Systemkernels und der Endanwendungen zu lösen und dem Benutzer die Möglichkeit zu geben, das Systemverhalten detailliert zu überwachen und Probleme in Echtzeit zu diagnostizieren. Während des Debugging-Prozesses beeinträchtigt DTrace nicht den Betrieb der untersuchten Anwendungen und beeinträchtigt in keiner Weise deren Leistung, sodass Sie die Analyse laufender Systeme im laufenden Betrieb organisieren können. Eine der Stärken von DTrace ist die Hochsprache D, ähnlich wie AWK, in der es viel einfacher ist, Tracing-Skripte zu erstellen, als die angebotenen Tools zum Schreiben von eBPF-Handlern in C, Python und Lua mit externen Bibliotheken zu verwenden.

Ingenieure von Oracle arbeiten ebenfalls an der Erstellung eines eBPF-Backends für GCC und haben bereits veröffentlicht Patch-Set eBPF-Unterstützung in GCC zu integrieren und gemacht einschließlich Code zur Unterstützung von eBPF in GNU-Binutils. Das Backend für die eBPF-Unterstützung basiert zunächst auf LLVM-Technologien, Oracle ist jedoch daran interessiert, dass in GCC eine Standardfähigkeit zum Generieren von Programmen für eBPF erscheint, die die Verwendung eines Toolkits sowohl zum Erstellen des Linux-Kernels als auch zum Erstellen von Programmen ermöglicht für eBPF.

Zusätzlich zum Bytecode-Generierungs-Backend enthalten die vorgeschlagenen Patches für GCC auch einen libgcc-Port für eBPF und Tools zum Generieren von ELF-Dateien, wodurch es möglich wird, Code in der virtuellen eBPF-Maschine mithilfe von vom Kernel bereitgestellten Loadern auszuführen. Derzeit kann Code in der C-Sprache in Bytecode übersetzt werden (nicht alle Sprachfunktionen sind verfügbar), aber in Zukunft wird erwartet, dass die zur Verwendung verfügbaren C-Sprachfunktionen erweitert werden, Unterstützung für andere Sprachen hinzugefügt wird, ein Simulator erstellt wird usw Fügen Sie GCC-Unterstützung zum Debuggen von eBPF-Programmen hinzu, ohne sie in den Kernel zu laden.

Source: opennet.ru

Kommentar hinzufügen