• Tom Zanussi's avatar
    tracing: Add support for 'synthetic' events · 4b147936
    Tom Zanussi authored
    Synthetic events are user-defined events generated from hist trigger
    variables saved from one or more other events.
    
    To define a synthetic event, the user writes a simple specification
    consisting of the name of the new event along with one or more
    variables and their type(s), to the tracing/synthetic_events file.
    
    For instance, the following creates a new event named 'wakeup_latency'
    with 3 fields: lat, pid, and prio:
    
        # echo 'wakeup_latency u64 lat; pid_t pid; int prio' >> \
          /sys/kernel/debug/tracing/synthetic_events
    
    Reading the tracing/synthetic_events file lists all the
    currently-defined synthetic events, in this case the event we defined
    above:
    
        # cat /sys/kernel/debug/tracing/synthetic_events
        wakeup_latency u64 lat; pid_t pid; int prio
    
    At this point, the synthetic event is ready to use, and a histogram
    can be defined using it:
    
        # echo 'hist:keys=pid,prio,lat.log2:sort=pid,lat' >> \
        /sys/kernel/debug/tracing/events/synthetic/wakeup_latency/trigger
    
    The new event is created under the tracing/events/synthetic/ directory
    and looks and behaves just like any other event:
    
        # ls /sys/kernel/debug/tracing/events/synthetic/wakeup_latency
          enable  filter  format  hist  id  trigger
    
    Although a histogram can be defined for it, nothing will happen until
    an action tracing that event via the trace_synth() function occurs.
    The trace_synth() function is very similar to all the other trace_*
    invocations spread throughout the kernel, except in this case the
    trace_ function and its corresponding tracepoint isn't statically
    generated but defined by the user at run-time.
    
    How this can be automatically hooked up via a hist trigger 'action' is
    discussed in a subsequent patch.
    
    Link: http://lkml.kernel.org/r/c68df2284b7d172669daf9be29db62ad49bbc559.1516069914.git.tom.zanussi@linux.intel.comSigned-off-by: default avatarTom Zanussi <tom.zanussi@linux.intel.com>
    [fix noderef.cocci warnings, sizeof pointer for kcalloc of event->fields]
    Signed-off-by: default avatarFengguang Wu <fengguang.wu@intel.com>
    Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
    4b147936
trace_events_hist.c 93.6 KB