DTrace von Oracle: GCC bekommt Backend für Linux-Kernel-VM eBPF

Der Oracle-Entwickler Jose E. Marchesi hat am 10. September 2019 ein eBPF-Backend in die GNU Compiler Collection (GCC) eingepflegt. Zusammen mit der bereits verfügbaren eBPF-Portierung der GNU Binutils lassen sich damit vergleichsweise einfache C-Programme für die Linux-Kernel-VM eBPF mit den GNU-Werkzeugen übersetzen.

eBPF, der erweiterte Berkeley Packet Filter, ist eine virtuelle Maschine im Linux-Kernel, die aus dem klassischen BPF hervorgegangen ist und heute für Netzwerkfilter, Sicherheitsrichtlinien und Systemanalyse eingesetzt wird. GCC ist neben LLVM/Clang eine der beiden meistgenutzten freien Compiler-Sammlungen für C- und C++-Projekte, darunter Spiele-Engines und Systemwerkzeuge auf Linux-Basis.

DTrace-Neuimplementierung mit moderner Linux-Technik

Die GCC-Erweiterung ist Teil der Oracle-Initiative, das ursprünglich von Sun übernommene Diagnosewerkzeug DTrace auf Grundlage aktueller Linux-Kernelmechanismen neu zu bauen. Oracle hatte dieses Vorhaben im Herbst 2018 angekündigt. Kerngedanke ist es, vorhandene Kernel-Technik nicht zu duplizieren, sondern eBPF als Unterbau für ein modernes DTrace zu nutzen. Mit dem GCC-Backend ist nun die Compiler-Seite für das Ausführen der sogenannten D-Skripte vorbereitet.

Parallel existiert mit BCC eine auf LLVM basierende Compiler-Sammlung für eBPF, die das iovisor-Projekt auf GitHub pflegt. Oracle hat sich für einen eigenen GCC-Pfad entschieden, betont in der Ankündigungs-E-Mail aber, dass Interoperabilität mit der übrigen Community ein ausdrückliches Ziel sei. Es gibt damit vorerst zwei C-Compiler-Stränge für eBPF-Programme.

Die Relizenzierung von DTrace unter GPLv2 hatte Oracle bereits rund anderthalb Jahre zuvor vollzogen, um Kompatibilität mit der Linux-Kernel-Lizenz herzustellen. Der langjährige Sun- und Oracle-Entwickler Brendan Gregg hatte diesen Schritt als zu spät bewertet, da eBPF in der Zwischenzeit deutlich mehr Funktionen biete als das damalige DTrace-Kernelmodul. Die GCC-Sammlung hatte schon 2015 mit Version 5.1 JIT-Unterstützung und OpenMP-4.0-Funktionen erhalten.

Weitere News

Weitere News

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein