Zugegeben, Systemtap gab es auch schon in älteren Fedora-Versionen. Damit ließen sich schon bisher Anwendungen auf der Ebene von Systemaufrufen tracen und somit beispielsweise Performance-Engpässe und Fehler finden - ähnlich wie beispielsweise unter (Open) Solaris mit DTrace. Neu in Fedora 13 sind bei Systemtap aber so genannte Static Probes , also eigens in eine Anwendung eingefügte Trace-Punkte, die ein Tracing auf einer höheren Ebene als Systemcalls erlauben.
Um Systemtap selbst einzusetzen, müssen Sie die Pakete "kernel-debuginfo", "kernel-devel", "systemtap" und "systemtap-runtime" installieren. Achten Sie allerdings auf die installierte Kernel-Version: Bei unserem Test war ein PAE-Kernel installiert und so war es nötig, von Hand das Paket "kernel-PAE-devel" statt "kernel-devel" zu installieren. Das gleiche gilt für das Debuginfo-Paket des Kernels. Sind alle Pakete installiert, testen Sie die Funktion mit:
stap -v -e 'probe vfs.read {printf("Lesevorgang"); exit()}'
Wie man sieht ist die Syntax eine Mischung aus einer Skriptsprache und der Programmiersprache C. Nach dem Schlüsselwort "probe" folgt der zu tracende Systemaufruf, in diesem Fall "read", des Subsystems "vfs". Der Block in geschweiften Klammern legt fest, was beim Auftreten dieses Systemcalls passieren soll. Hier gibt das Skript einfach eine kurze Meldung aus und beendet sich dann. Die folgende Variante gibt noch die PID des lesenden Prozesses aus:
stap -v -e 'probe vfs.read {printf("Lesevorgang von %d\n", pid()); exit()}'
Wer Userspace-Programme tracen will, braucht dafür jeweils das passende Debug-Info-Paket, das die Symbole der enthaltenen Funktionen enthält. Mit dem folgenden Befehl lässt sich dann zum Beispiel das Ls-Kommando verfolgen:
stap -e 'probe process("ls").function("*").call {log (pp())}' -c 'ls -l'
Mehr Informationen zum Einsatz von Systemtap gibt ein Artikel im aktuellen ADMIN 03/2010 .