Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp5279587yba; Wed, 8 May 2019 10:34:34 -0700 (PDT) X-Google-Smtp-Source: APXvYqwML0UkrtF0/AVXuz6wOn9qGyL2MYRbJpXadllQsODY+lcvvS97AYZnZlkMlg+9cwDySjMs X-Received: by 2002:a62:43d1:: with SMTP id l78mr20042098pfi.124.1557336874454; Wed, 08 May 2019 10:34:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1557336874; cv=none; d=google.com; s=arc-20160816; b=V0YxOVfTQl7deLtiZ6BvETYjUiwPvEC/nGX5wQZRJUL1j8O92gCCv//E+pOkyoXS/G j5vxsGXgpHIA0bMuwziFgOigXjzJOTFajPgoCG6mdL+DWqpSfezZ2u3cw3GWoInHQ3Bh CMEyEDzYR88JfWpJ4cOkzd4IogaJxmu1mKPmJ+XTURxfrSeSOS/3vdJdD58WnYqgjzRo byuYygDEFXM8WRnEPlTeD8RFnYubDjaLP68CH5Zv4yZSJIST59P6uJug8h5G5wPxES3t yQGKYJIvUbR2qoZxd8bFbsAf5YKPcBH1DlB5rZQR5JQ/owoiNUi3zWIgespAvsi6DNUY tRpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=ncFqB4Kz1axgW/AqQ2o6siglZcmCZBod1D5DIqPferk=; b=wUing2bbDBIwR7E2zK0joWMKzRMwNlGtOKv5+mnizgLsaEfVr3SbowOE6y6o7N+JvA mZwHQfznvnahVejxR9dimYH2AD82OYkwEm8nE+zTuzMkl0FE0M0b/Ak4DE+vsB6UV8KH QZH6yp58qmFq5Z7zZzx5JQInn8JvrxMLSG1J8AiXR3IFYAD6mVLUmbv0XMa/kcbnowoP G/z3zCCx5rrKTlV0lZfUvlVBP/qDHp+pviYKhpdI/IxIx0YnxjkTO/no2/kx5q4v1g4l WZmgN6Xy3ZACuuM+QCYTecdmmpq0WY1oZO477klabu6gr/0+WB8ibt2s/7loAGYAJR21 vChg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q142si23736942pfq.175.2019.05.08.10.34.18; Wed, 08 May 2019 10:34:34 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728140AbfEHNUt (ORCPT + 99 others); Wed, 8 May 2019 09:20:49 -0400 Received: from mx1.redhat.com ([209.132.183.28]:58142 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727964AbfEHNUr (ORCPT ); Wed, 8 May 2019 09:20:47 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 1204E8046D; Wed, 8 May 2019 13:20:47 +0000 (UTC) Received: from krava.redhat.com (ovpn-204-49.brq.redhat.com [10.40.204.49]) by smtp.corp.redhat.com (Postfix) with ESMTP id 7FB7C10027D5; Wed, 8 May 2019 13:20:44 +0000 (UTC) From: Jiri Olsa To: Arnaldo Carvalho de Melo Cc: lkml , Ingo Molnar , Namhyung Kim , Alexander Shishkin , Peter Zijlstra , Stanislav Fomichev , Song Liu , Adrian Hunter , Andi Kleen Subject: [PATCH 10/12] perf script: Add --show-bpf-events to show eBPF related events Date: Wed, 8 May 2019 15:20:08 +0200 Message-Id: <20190508132010.14512-11-jolsa@kernel.org> In-Reply-To: <20190508132010.14512-1-jolsa@kernel.org> References: <20190508132010.14512-1-jolsa@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Wed, 08 May 2019 13:20:47 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Adding --show-bpf-events to show eBPF related events: PERF_RECORD_KSYMBOL PERF_RECORD_BPF_EVENT Usage: # perf record -a ... # perf script --show-bpf-events ... swapper 0 [000] 0.000000: PERF_RECORD_KSYMBOL ksymbol event with addr ffffffffc0ef971d len 229 type 1 flags 0x0 name bpf_prog_2a142ef67aaad174 swapper 0 [000] 0.000000: PERF_RECORD_BPF_EVENT bpf event with type 1, flags 0, id 36 ... Link: http://lkml.kernel.org/n/tip-9kvkcw7z4i1464jb7gasv4lb@git.kernel.org Signed-off-by: Jiri Olsa --- tools/perf/Documentation/perf-script.txt | 3 ++ tools/perf/builtin-script.c | 42 ++++++++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/tools/perf/Documentation/perf-script.txt b/tools/perf/Documentation/perf-script.txt index 9b0d04dd2a61..af8282782911 100644 --- a/tools/perf/Documentation/perf-script.txt +++ b/tools/perf/Documentation/perf-script.txt @@ -313,6 +313,9 @@ OPTIONS --show-round-events Display finished round events i.e. events of type PERF_RECORD_FINISHED_ROUND. +--show-bpf-events + Display bpf events i.e. events of type PERF_RECORD_KSYMBOL and PERF_RECORD_BPF_EVENT. + --demangle:: Demangle symbol names to human readable form. It's enabled by default, disable with --no-demangle. diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c index 7adaa6c63a0b..3a48a2627670 100644 --- a/tools/perf/builtin-script.c +++ b/tools/perf/builtin-script.c @@ -1606,6 +1606,7 @@ struct perf_script { bool show_namespace_events; bool show_lost_events; bool show_round_events; + bool show_bpf_events; bool allocated; bool per_event_dump; struct cpu_map *cpus; @@ -2318,6 +2319,41 @@ process_finished_round_event(struct perf_tool *tool __maybe_unused, return 0; } +static int +process_bpf_events(struct perf_tool *tool __maybe_unused, + union perf_event *event, + struct perf_sample *sample, + struct machine *machine) +{ + struct thread *thread; + struct perf_script *script = container_of(tool, struct perf_script, tool); + struct perf_session *session = script->session; + struct perf_evsel *evsel = perf_evlist__id2evsel(session->evlist, sample->id); + + if (machine__process_ksymbol(machine, event, sample) < 0) + return -1; + + if (!evsel->attr.sample_id_all) { + perf_event__fprintf(event, stdout); + return 0; + } + + thread = machine__findnew_thread(machine, sample->pid, sample->tid); + if (thread == NULL) { + pr_debug("problem processing MMAP event, skipping it.\n"); + return -1; + } + + if (!filter_cpu(sample)) { + perf_sample__fprintf_start(sample, thread, evsel, + event->header.type, stdout); + perf_event__fprintf(event, stdout); + } + + thread__put(thread); + return 0; +} + static void sig_handler(int sig __maybe_unused) { session_done = 1; @@ -2420,6 +2456,10 @@ static int __cmd_script(struct perf_script *script) script->tool.ordered_events = false; script->tool.finished_round = process_finished_round_event; } + if (script->show_bpf_events) { + script->tool.ksymbol = process_bpf_events; + script->tool.bpf_event = process_bpf_events; + } if (perf_script__setup_per_event_dump(script)) { pr_err("Couldn't create the per event dump files\n"); @@ -3439,6 +3479,8 @@ int cmd_script(int argc, const char **argv) "Show lost events (if recorded)"), OPT_BOOLEAN('\0', "show-round-events", &script.show_round_events, "Show round events (if recorded)"), + OPT_BOOLEAN('\0', "show-bpf-events", &script.show_bpf_events, + "Show bpf related events (if recorded)"), OPT_BOOLEAN('\0', "per-event-dump", &script.per_event_dump, "Dump trace output to files named by the monitored events"), OPT_BOOLEAN('f', "force", &symbol_conf.force, "don't complain, do it"), -- 2.20.1