11.3 fbt Provider

The fbt (Function Boundary Tracing) provider includes probes that are associated with the entry to and return from most functions in the Oracle Linux kernel. Therefore, there could well be tens of thousands of fbt probes.

To confirm that the fbt provider is available on your processor's architecture, you should be able to load the module that provides fbt instrumentation and successfully list several probes. Note that this process could take several seconds due to the large number of such probes. For example, consider the following command, which is executed as root:

# dtrace -l -P fbt | wc -l
dtrace: failed to match fbt:::: No probe matches description
# modprobe fbt
# dtrace -l -P fbt | wc -l

In the previous example, the first dtrace command automatically loads modules that are listed in /etc/dtrace-modules, but also confirms that fbt was not among them. After fbt is loaded manually, many fbt probes appear. For more information, see Section 11.3.4, “Module Loading and fbt”.

Like other DTrace providers, Function Boundary Tracing (FBT) has no probe effect when not explicitly enabled. When enabled, FBT only induces a probe effect in probed functions. While the FBT implementation is highly specific to the instruction set architecture, FBT has been implemented on both x86 and 64-bit Arm platforms. For each instruction set, there are a small number of leaf functions that do not call other functions and are highly optimized by the compiler, which cannot be instrumented by FBT. Probes for these functions are not present in DTrace.

An effective use of FBT probes requires knowledge of the operating system implementation. It is therefore recommended that you use FBT only when developing kernel software or when other providers are not sufficient. You can use other DTrace providers such as syscall, sched, proc, and io to answer most system analysis questions without requiring operating system implementation knowledge.