From: Thomas Preisner
Date: Tue Jun 11 2019 - 16:38:35 EST
On Wed, 29 May 2019 10:45:52 -0400
Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
> On Wed, 29 May 2019 11:31:23 +0200
> Thomas Preisner <linux@xxxxxxxxxxxx> wrote:
> > The "oneshot" tracer records every address (ip, parent_ip) exactly
> > once.
> > As a result, "oneshot" can be used to efficiently create kernel
> > function
> > coverage/usage reports such as in undertaker-tailor.
> > In order to provide this functionality, "oneshot" uses a
> > configurable hashset for blacklisting already recorded addresses. This
> > way, no user space application is required to parse the function
> > tracer's output and to deactivate functions after they have been
> > recorded once. Additionally, the tracer's output is reduced to a bare
> > mininum so that it can be passed directly to undertaker-tailor.
> > Further information regarding this oneshot function tracer can also be
> > found at .
> > : https://undertaker.cs.fau.de
> > : https://tpreisner.de/pub/ba-thesis.pdf
> > Signed-off-by: Thomas Preisner <linux@xxxxxxxxxxxx>
> If you are only interested in seeing what functions are called (and
> don't care about the order), why not just make another function
> profiler (see register_ftrace_profiler and friends)? Then you could
> just list the hash table entries instead of having to record into the
> ftrace ring buffer.
> -- Steve
thank you very much for your feedback. According to it, I have revised
my patch to use the existing stat_tracer infrastructure which is also
used by the previously mentioned ftrace_profiler. As a result, my
oneshot profiler no longer uses the ringbuffer to store traced
functions. Instead, the hashsets are read directly and added into an
additional hashset to remove duplicate entries (over cpu cores)
However, due to there not being any mechanism (that I am aware of) to
activate such stat tracers via kernel commandline this oneshot profiler
is now always active when selected. Therefore, it is no longer possible
to disable this tracer during runtime and thus, allocated memory is no