• Namhyung Kim's avatar
    perf ftrace latency: Constify control data for BPF · ac5a23b2
    Namhyung Kim authored
    The control knobs set before loading BPF programs should be declared as
    'const volatile' so that it can be optimized by the BPF core.
    
    Committer testing:
    
      root@x1:~# perf ftrace latency --use-bpf -T schedule
      ^C#   DURATION     |      COUNT | GRAPH                                          |
           0 - 1    us |          0 |                                                |
           1 - 2    us |          0 |                                                |
           2 - 4    us |          0 |                                                |
           4 - 8    us |          0 |                                                |
           8 - 16   us |          1 |                                                |
          16 - 32   us |          5 |                                                |
          32 - 64   us |          2 |                                                |
          64 - 128  us |          6 |                                                |
         128 - 256  us |          7 |                                                |
         256 - 512  us |          5 |                                                |
         512 - 1024 us |         22 | #                                              |
           1 - 2    ms |         36 | ##                                             |
           2 - 4    ms |         68 | #####                                          |
           4 - 8    ms |         22 | #                                              |
           8 - 16   ms |         91 | #######                                        |
          16 - 32   ms |         11 |                                                |
          32 - 64   ms |         26 | ##                                             |
          64 - 128  ms |        213 | #################                              |
         128 - 256  ms |         19 | #                                              |
         256 - 512  ms |         14 | #                                              |
         512 - 1024 ms |          5 |                                                |
           1 - ...   s |          8 |                                                |
      root@x1:~#
    
      root@x1:~# perf trace -e bpf perf ftrace latency --use-bpf -T schedule
         0.000 ( 0.015 ms): perf/2944525 bpf(cmd: 36, uattr: 0x7ffe80de7b40, size: 8)                          = -1 EOPNOTSUPP (Operation not supported)
         0.025 ( 0.102 ms): perf/2944525 bpf(cmd: PROG_LOAD, uattr: 0x7ffe80de7870, size: 148)                 = 8
         0.136 ( 0.026 ms): perf/2944525 bpf(cmd: PROG_LOAD, uattr: 0x7ffe80de7930, size: 148)                 = 8
         0.174 ( 0.026 ms): perf/2944525 bpf(cmd: PROG_LOAD, uattr: 0x7ffe80de77e0, size: 148)                 = 8
         0.205 ( 0.010 ms): perf/2944525 bpf(uattr: 0x7ffe80de7990, size: 80)                                  = 8
         0.227 ( 0.011 ms): perf/2944525 bpf(cmd: BTF_LOAD, uattr: 0x7ffe80de7810, size: 40)                   = 8
         0.244 ( 0.004 ms): perf/2944525 bpf(cmd: BTF_LOAD, uattr: 0x7ffe80de7880, size: 40)                   = 8
         0.257 ( 0.006 ms): perf/2944525 bpf(cmd: BTF_LOAD, uattr: 0x7ffe80de7660, size: 40)                   = 8
         0.265 ( 0.058 ms): perf/2944525 bpf(cmd: PROG_LOAD, uattr: 0x7ffe80de7730, size: 148)                 = 9
         0.330 ( 0.004 ms): perf/2944525 bpf(cmd: BTF_LOAD, uattr: 0x7ffe80de78e0, size: 40)                   = 8
         0.337 ( 0.003 ms): perf/2944525 bpf(cmd: BTF_LOAD, uattr: 0x7ffe80de7890, size: 40)                   = 8
         0.343 ( 0.004 ms): perf/2944525 bpf(cmd: BTF_LOAD, uattr: 0x7ffe80de7880, size: 40)                   = 8
         0.349 ( 0.003 ms): perf/2944525 bpf(cmd: BTF_LOAD, uattr: 0x7ffe80de78b0, size: 40)                   = 8
         0.355 ( 0.004 ms): perf/2944525 bpf(cmd: BTF_LOAD, uattr: 0x7ffe80de7890, size: 40)                   = 8
         0.361 ( 0.003 ms): perf/2944525 bpf(cmd: BTF_LOAD, uattr: 0x7ffe80de78b0, size: 40)                   = 8
         0.367 ( 0.003 ms): perf/2944525 bpf(cmd: BTF_LOAD, uattr: 0x7ffe80de7880, size: 40)                   = 8
         0.373 ( 0.014 ms): perf/2944525 bpf(cmd: BTF_LOAD, uattr: 0x7ffe80de7a00, size: 40)                   = 8
         0.390 ( 0.358 ms): perf/2944525 bpf(uattr: 0x7ffe80de7950, size: 80)                                  = 9
         0.763 ( 0.014 ms): perf/2944525 bpf(uattr: 0x7ffe80de7950, size: 80)                                  = 9
         0.783 ( 0.011 ms): perf/2944525 bpf(uattr: 0x7ffe80de7950, size: 80)                                  = 9
         0.798 ( 0.017 ms): perf/2944525 bpf(uattr: 0x7ffe80de7950, size: 80)                                  = 9
         0.819 ( 0.003 ms): perf/2944525 bpf(uattr: 0x7ffe80de7700, size: 80)                                  = 9
         0.824 ( 0.047 ms): perf/2944525 bpf(cmd: PROG_LOAD, uattr: 0x7ffe80de76c0, size: 148)                 = 10
         0.878 ( 0.008 ms): perf/2944525 bpf(uattr: 0x7ffe80de7950, size: 80)                                  = 9
         0.891 ( 0.014 ms): perf/2944525 bpf(cmd: MAP_UPDATE_ELEM, uattr: 0x7ffe80de79e0, size: 32)            = 0
         0.910 ( 0.103 ms): perf/2944525 bpf(cmd: PROG_LOAD, uattr: 0x7ffe80de7880, size: 148)                 = 9
         1.016 ( 0.143 ms): perf/2944525 bpf(cmd: PROG_LOAD, uattr: 0x7ffe80de7880, size: 148)                 = 10
         3.777 ( 0.068 ms): perf/2944525 bpf(cmd: PROG_LOAD, uattr: 0x7ffe80de7570, size: 148)                 = 12
         3.848 ( 0.003 ms): perf/2944525 bpf(cmd: LINK_CREATE, uattr: 0x7ffe80de7550, size: 64)                = -1 EBADF (Bad file descriptor)
         3.859 ( 0.006 ms): perf/2944525 bpf(cmd: LINK_CREATE, uattr: 0x7ffe80de77c0, size: 64)                = 12
         6.504 ( 0.010 ms): perf/2944525 bpf(cmd: LINK_CREATE, uattr: 0x7ffe80de77c0, size: 64)                = 14
    ^C#   DURATION     |      COUNT | GRAPH                                          |
         0 - 1    us |          0 |                                                |
         1 - 2    us |          0 |                                                |
         2 - 4    us |          1 |                                                |
         4 - 8    us |          3 |                                                |
         8 - 16   us |          3 |                                                |
        16 - 32   us |         11 |                                                |
        32 - 64   us |          9 |                                                |
        64 - 128  us |         17 |                                                |
       128 - 256  us |         30 | #                                              |
       256 - 512  us |         20 |                                                |
       512 - 1024 us |         42 | #                                              |
         1 - 2    ms |        151 | ######                                         |
         2 - 4    ms |        106 | ####                                           |
         4 - 8    ms |         18 |                                                |
         8 - 16   ms |        149 | ######                                         |
        16 - 32   ms |         30 | #                                              |
        32 - 64   ms |         17 |                                                |
        64 - 128  ms |        360 | ###############                                |
       128 - 256  ms |         52 | ##                                             |
       256 - 512  ms |         18 |                                                |
       512 - 1024 ms |         28 | #                                              |
         1 - ...   s |          5 |                                                |
      root@x1:~#
    Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Song Liu <song@kernel.org>
    Link: https://lore.kernel.org/r/20240902200515.2103769-3-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    ac5a23b2
bpf_ftrace.c 3.48 KB