• Steven Rostedt (Red Hat)'s avatar
    tracing: Add NMI tracing in hwlat detector · 7b2c8625
    Steven Rostedt (Red Hat) authored
    As NMIs can also cause latency when interrupts are disabled, the hwlat
    detectory has no way to know if the latency it detects is from an NMI or an
    SMI or some other hardware glitch.
    
    As ftrace_nmi_enter/exit() funtions are no longer used (except for sh, which
    isn't supported anymore), I converted those to "arch_ftrace_nmi_enter/exit"
    and use ftrace_nmi_enter/exit() to check if hwlat detector is tracing or
    not, and if so, it calls into the hwlat utility.
    
    Since the hwlat detector only has a single kthread that is spinning with
    interrupts disabled, it marks what CPU it is on, and if the NMI callback
    happens on that CPU, it records the time spent in that NMI. This is added to
    the output that is generated by the hwlat detector as:
    
     #3     inner/outer(us):    9/9     ts:1470836488.206734548
     #4     inner/outer(us):    0/8     ts:1470836497.140808588
     #5     inner/outer(us):    0/6     ts:1470836499.140825168 nmi-total:5 nmi-count:1
     #6     inner/outer(us):    9/9     ts:1470836501.140841748
    
    All time is still tracked in microseconds.
    
    The NMI information is only shown when an NMI occurred during the sample.
    Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
    7b2c8625
ftrace.c 10.6 KB