• Steven Rostedt (Red Hat)'s avatar
    tracing: Add tracepoint benchmark tracepoint · 81dc9f0e
    Steven Rostedt (Red Hat) authored
    In order to help benchmark the time tracepoints take, a new config
    option is added called CONFIG_TRACEPOINT_BENCHMARK. When this option
    is set a tracepoint is created called "benchmark:benchmark_event".
    When the tracepoint is enabled, it kicks off a kernel thread that
    goes into an infinite loop (calling cond_sched() to let other tasks
    run), and calls the tracepoint. Each iteration will record the time
    it took to write to the tracepoint and the next iteration that
    data will be passed to the tracepoint itself. That is, the tracepoint
    will report the time it took to do the previous tracepoint.
    The string written to the tracepoint is a static string of 128 bytes
    to keep the time the same. The initial string is simply a write of
    "START". The second string records the cold cache time of the first
    write which is not added to the rest of the calculations.
    
    As it is a tight loop, it benchmarks as hot cache. That's fine because
    we care most about hot paths that are probably in cache already.
    
    An example of the output:
    
         START
         first=3672 [COLD CACHED]
         last=632 first=3672 max=632 min=632 avg=316 std=446 std^2=199712
         last=278 first=3672 max=632 min=278 avg=303 std=316 std^2=100337
         last=277 first=3672 max=632 min=277 avg=296 std=258 std^2=67064
         last=273 first=3672 max=632 min=273 avg=292 std=224 std^2=50411
         last=273 first=3672 max=632 min=273 avg=288 std=200 std^2=40389
         last=281 first=3672 max=632 min=273 avg=287 std=183 std^2=33666
    Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
    81dc9f0e
trace_benchmark.c 3.75 KB