BPF-Trace: "Dtrace 2.0 für Linux"

Seit einiger Zeit gibt es Zoff zwischen Linus Torvalds und dem Entwickler von Bcachefs, Kent Overstreet.

Alastair Robertson hat BPF-Trace auf Github veröffentlicht. Es handelt sich um eine High-Level-Tracing-Sprache für den Enhanced Berkeley Packet Filter (eBPF).

BPF-Trace verwendet LLVM als Backend. Es verwandelt Skripte, die in einer von Awk und C inspirierten Sprache geschrieben sind, in BPF-Bytecode. Diese laufen dann im Enhanced Berkeley Packet Filter. Den kürzen viele Entwickler häufig nur mit BPF ab. Er läuft als virtuelle Maschine im Kernel und filtert dort nicht nur Pakete. Laut Entwickler Brendan Gregg beantwortet er auch Fragen zur Performance. Diese lauten etwa “Brauchen bestimmte Ext-4-Operationen länger als 50 Millisekunden?” oder “Welche Pakete und Apps benötigen wiederholte TCP-Sendungen?”.

Gregg hat BPF-Trace in einem Blogpost als Dtrace 2.0 bezeichnet und stellt verschiedene nützliche Einzeiler dafür vor. Früher hat Gregg für Sun Microsystems gearbeitet, heute ist er bei Netflix angestellt. Er gilt als Experte für Dtrace, für das er das Dtrace Toolkit entwickelt hat. Für Linux habe er bereits zahlreiche der Dtrace-Tools auf eBPF portiert. Bei Dtrace handelt es sich um ein beliebtes Tracing-Framework für Solaris, mit dem sich Kernel- und Anwendungsprobleme gezielt nachverfolgen lassen.

Support für BCC und Kernel-Tracing

BPF-Trace ist nur eines von mehrere Frontends für eBPF. Es ist laut Gregg verhältnismäßig einfach zu bedienen und verwendet das etwas kompliziertere BCC, um mit Linux’ BPF-System zu interagieren. BCC steht für die BPF Compiler Collection, und ist das am häufigsten genutzte Frontend für eBPF. Es hat eine umfangreiche Nutzer-Community, ist unter anderem bei Netflix und Facebook im Einsatz und auf Github zu finden.

Daneben verwendet BPF-Trace vorhandene Tracing-Möglichkeiten des Kernel. Dazu zählen Kernel Dynamic Tracing (Kprobes), Userlevel Dynamic Tracing (Uprobes) sowie Tracepoints. BPF-Trace lässt sich nicht nur gut in Einzeilern verwenden, es bringt auch diverse Tools mit, um verschiedene Systemereignisse aufzuspüren. Es kann unter anderem Security Capabilities verfolgen, die systemweit eingegebenen Bash-Kommandos anzeigen, Disk I/O als Histogramm darstellen, über “exec()” gestartete Systemaufrufe verfolgen und vieles mehr. Weitere Detailinformationen zu diesen Tools und den Fähigkeiten von BPF-Trace liefert das Github-Repository.

E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben