RETIT präsentiert „eBPF jAgent: Transaction-level Resource Demand Tracing for Java Applications Using eBPF and OpenTelemetry“ beim Symposium on Software Performance 2026

· Von Prof. Dr. Andreas Brunnert

Am 10.11.2026 haben Bryan Liegsalz (byteleaf GmbH) und Prof. Dr. Andreas Brunnert (Hochschule München / RETIT GmbH) ihr Paper „eBPF jAgent: Transaction-level Resource Demand Tracing for Java Applications Using eBPF and OpenTelemetry“ beim 17. Symposium on Software Performance (SSP 2026) in Würzburg vorgestellt.

Worum es geht

Die Ressourcenbedarfe einzelner Transaktionen werden benötigt, um Performance-Modelle zu parametrisieren und für die korrekte Attribuierung von Energiebedarfen zu einzelnen Software-Komponenten. Um sie zu erheben, braucht es bislang eine Instrumentierung innerhalb der Anwendung, die an ein bestimmtes Framework oder eine bestimmte Sprache gebunden ist – etwa unsere OpenTelemetry Java Agent Extension (OTJAE).

Der eBPF jAgent geht einen anderen Weg: Er misst mit dem extended Berkeley Packet Filter (eBPF) die CPU-, Speicher-, Storage- und Netzwerkbedarfe von Java-Transaktionen direkt im Linux-Kernel, ohne den Code der Anwendung zu verändern. Die Transaktionsgrenzen liefern die USDT-Probes der HotSpot JVM, die Bedarfe werden als OpenTelemetry-Metriken exportiert – ein Datenpunkt pro Transaktion.

Abbildung 1 aus dem Paper: Architektur des eBPF jAgent – USDT-Probes der HotSpot JVM lösen eBPF-Programme im Kernel aus, die abgeschlossene Datensätze in einen Ringpuffer schreiben; der eBPF jAgent im User Space liest den Puffer aus und exportiert OpenTelemetry-Metriken

Abbildung 1 aus dem Paper: Architektur des eBPF jAgent.

Bei Sprachen, die nicht statisch kompiliert werden, wie Java, braucht eBPF für die Erkennung von Transaktionen zusätzliche Informationen aus der Laufzeitumgebung – hier die USDT-Probes der JVM, die einen erheblichen Overhead verursachen. Der sprachunabhängige Ansatz lässt sich daher derzeit besser für statisch kompilierte Sprachen einsetzen. Für Java nutzen wir deshalb vorerst weiter unsere OpenTelemetry Java Agent Extension, verfolgen den eBPF-Ansatz für statisch kompilierte Sprachen weiter und wollen ihn anschließend auf interpretierte und in Bytecode kompilierte Sprachen ausweiten.

Der eBPF jAgent steht als Open Source zur Verfügung: https://github.com/hm-green-it-lab/ebpf-jagent

Das 17. Symposium on Software Performance findet vom 09.11. – 11.11.2026 in Würzburg statt. Der Vortrag war Teil der Session „Tracing, Observability & Overhead“.

Das vollständige Paper finden Sie hier: https://www.performance-symposium.org/wp-content/uploads/2026/10/Liegsalz_eBPF_jAgent_Transaction-level_Resource_Demand_Tracing_for_Java_Applications.pdf

Die Folien des Vortrags finden Sie hier: /wp-content/uploads/2026/11/eBPF-jAgent-Transaction-level-Resource-Demand-Tracing-SSP-2026.pdf