DTrace Probes
FoundationDB contains many dtrace probes that can be inspected during
runtime with tools like bcc and SystemTap. All of them are in the
foundationdb
provider namespace.
FDB_TRACE_PROBE
is simply an alias to the varias DTRACE_PROBE
macros.
Probes
Actors
FDB_TRACE_PROBE(actor_create, "actorname")
FDB_TRACE_PROBE(actor_destroy, "actorname")
Get’s called whenever an actor is created or gets destroyed. It provides one argument which is a string and it is the name of the actor.
FDB_TRACE_PROBE(actor_enter, "name", index)
FDB_TRACE_PROBE(actor_exit, "name", index)
Whenever we call into an actor (either directly through a function call or indirectly through a callback)
we call actor_enter
. Whenever we leave an actor (either because it returns or because it calls into
wait) we call actor_exit
. The first argument is a string of the name of the actor and the second is an
index. -1
means that we entered/exited through in a main function call, otherwise it is a generated index.
Main-Loop
FDB_TRACE_PROBE(run_loop_begin)
Is called whenever the main network loop starts over.
FDB_TRACE_PROBE(run_loop_ready_timers, numTimers)
On each iteration of the run-loop, this indicates how many timers (created through delay
or yield
) are
ready. Its argument is of type int
.
FDB_TRACE_PROBE(run_loop_thread_ready, numReady)
On each loop-iteration. The second argument is of type int
and it is the number of thread ready processes.
FDB_TRACE_PROBE(run_loop_yield)
Run loop yields.
FDB_TRACE_PROBE(run_loop_tasks_start, queueSize)
FDB_TRACE_PROBE(run_loop_done, queueSize)
One iteration of the run-loop is done. The argument is of type int
and is the remaining number of tasks on the
ready queue.