bpftool: Display missed count for kprobe perf link
authorJiri Olsa <jolsa@kernel.org>
Wed, 20 Sep 2023 21:31:42 +0000 (23:31 +0200)
committerAndrii Nakryiko <andrii@kernel.org>
Mon, 25 Sep 2023 23:37:44 +0000 (16:37 -0700)
Adding 'missed' field to display missed counts for kprobes
attached by perf event link, like:

  # bpftool link
  5: perf_event  prog 82
          kprobe ffffffff815203e0 ksys_write
  6: perf_event  prog 83
          kprobe ffffffff811d1e50 scheduler_tick  missed 682217

  # bpftool link -jp
  [{
          "id": 5,
          "type": "perf_event",
          "prog_id": 82,
          "retprobe": false,
          "addr": 18446744071584220128,
          "func": "ksys_write",
          "offset": 0,
          "missed": 0
      },{
          "id": 6,
          "type": "perf_event",
          "prog_id": 83,
          "retprobe": false,
          "addr": 18446744071580753488,
          "func": "scheduler_tick",
          "offset": 0,
          "missed": 693469
      }
  ]

Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Reviewed-by: Quentin Monnet <quentin@isovalent.com>
Link: https://lore.kernel.org/bpf/20230920213145.1941596-7-jolsa@kernel.org
tools/bpf/bpftool/link.c

index d15d74cd1bedbbe1c67f36350406e7ca6e363d99..4b1407b0505651c9bb1d1f75d6eb8c9e9ba78a26 100644 (file)
@@ -302,6 +302,7 @@ show_perf_event_kprobe_json(struct bpf_link_info *info, json_writer_t *wtr)
        jsonw_string_field(wtr, "func",
                           u64_to_ptr(info->perf_event.kprobe.func_name));
        jsonw_uint_field(wtr, "offset", info->perf_event.kprobe.offset);
+       jsonw_uint_field(wtr, "missed", info->perf_event.kprobe.missed);
 }
 
 static void
@@ -686,6 +687,8 @@ static void show_perf_event_kprobe_plain(struct bpf_link_info *info)
        printf("%s", buf);
        if (info->perf_event.kprobe.offset)
                printf("+%#x", info->perf_event.kprobe.offset);
+       if (info->perf_event.kprobe.missed)
+               printf("  missed %llu", info->perf_event.kprobe.missed);
        printf("  ");
 }