From mboxrd@z Thu Jan 1 00:00:00 1970 From: Song Liu Subject: [RFC perf,bpf 0/5] reveal invisible bpf programs Date: Tue, 6 Nov 2018 12:52:41 -0800 Message-ID: <20181106205246.567448-1-songliubraving@fb.com> Mime-Version: 1.0 Content-Type: text/plain Cc: , Song Liu , , , , To: , Return-path: Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:59476 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726484AbeKGGUg (ORCPT ); Wed, 7 Nov 2018 01:20:36 -0500 Received: from pps.filterd (m0148461.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id wA6KrTQh005888 for ; Tue, 6 Nov 2018 12:53:31 -0800 Received: from mail.thefacebook.com ([199.201.64.23]) by mx0a-00082601.pphosted.com with ESMTP id 2nkf4f0n9f-20 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Tue, 06 Nov 2018 12:53:31 -0800 Sender: netdev-owner@vger.kernel.org List-ID: This is to follow up Alexei's early effort to show bpf programs https://www.spinics.net/lists/netdev/msg524232.html In this version, PERF_RECORD_BPF_EVENT is introduced to send real time BPF load/unload events to user space. In user space, perf-record is modified to listen to these events (through a dedicated ring buffer) and generate detailed information about the program (struct bpf_prog_info_event). Then, perf-report translates these events into proper symbols. With this set, perf-report will show bpf program as: 18.49% 0.16% test [kernel.vmlinux] [k] ksys_write 18.01% 0.47% test [kernel.vmlinux] [k] vfs_write 17.02% 0.40% test bpf_prog [k] bpf_prog_F 16.97% 0.10% test [kernel.vmlinux] [k] __vfs_write 16.86% 0.12% test [kernel.vmlinux] [k] comm_write 16.67% 0.39% test [kernel.vmlinux] [k] bpf_probe_read Note that, the program name is still work in progress, it will be cleaner with function types in BTF. Please share your comments on this. Thanks, Song Song Liu (5): perf, bpf: Introduce PERF_RECORD_BPF_EVENT perf: sync tools/include/uapi/linux/perf_event.h perf util: basic handling of PERF_RECORD_BPF_EVENT perf util: introduce bpf_prog_info_event perf util: generate bpf_prog_info_event for short living bpf programs include/linux/perf_event.h | 5 + include/uapi/linux/perf_event.h | 27 ++- kernel/bpf/syscall.c | 4 + kernel/events/core.c | 82 +++++++- tools/include/uapi/linux/perf_event.h | 27 ++- tools/perf/builtin-record.c | 55 +++++ tools/perf/builtin-report.c | 2 + tools/perf/util/Build | 2 + tools/perf/util/bpf-info.c | 287 ++++++++++++++++++++++++++ tools/perf/util/bpf-info.h | 29 +++ tools/perf/util/event.c | 20 ++ tools/perf/util/event.h | 29 +++ tools/perf/util/evlist.c | 42 +++- tools/perf/util/evlist.h | 4 + tools/perf/util/evsel.c | 9 + tools/perf/util/evsel.h | 3 + tools/perf/util/machine.c | 10 + tools/perf/util/machine.h | 2 + tools/perf/util/session.c | 8 + tools/perf/util/tool.h | 7 +- 20 files changed, 646 insertions(+), 8 deletions(-) create mode 100644 tools/perf/util/bpf-info.c create mode 100644 tools/perf/util/bpf-info.h