• Namhyung Kim's avatar
    perf lock contention: Show detail failure reason for BPF · 84c3a2bb
    Namhyung Kim authored
    It can fail to collect lock stat from BPF for various reasons.  For
    example, I've got a report that sometimes time calculation seems wrong
    in case of contended spinlocks.  I suspect the time delta went negative
    for some reason.
    
    Count them separately and show in the output like below:
    
    $ sudo perf lock contention -abE5 sleep 10
     contended   total wait     max wait     avg wait         type   caller
    
            13    785.61 us     79.36 us     60.43 us     spinlock   remove_wait_queue+0x14
            10    469.02 us     87.51 us     46.90 us     spinlock   prepare_to_wait+0x27
             9    289.09 us     69.08 us     32.12 us     spinlock   finish_wait+0x36
           114    251.05 us      8.56 us      2.20 us     spinlock   try_to_wake_up+0x1f5
           132    188.63 us      5.01 us      1.43 us     spinlock   __wake_up_common_lock+0x62
    
    === output for debug ===
    
    bad: 1, total: 279
    bad rate: 0.36 %
    histogram of failure reasons
           task: 1
          stack: 0
           time: 0
    Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Hao Luo <haoluo@google.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: bpf@vger.kernel.org
    Link: https://lore.kernel.org/r/20230327225711.245738-1-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    84c3a2bb
lock_contention.bpf.c 9.24 KB