From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751628AbdCPJvy (ORCPT ); Thu, 16 Mar 2017 05:51:54 -0400 Received: from mail.kernel.org ([198.145.29.136]:51022 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751130AbdCPJvx (ORCPT ); Thu, 16 Mar 2017 05:51:53 -0400 Date: Thu, 16 Mar 2017 18:51:40 +0900 From: Masami Hiramatsu To: Ravi Bangoria Cc: mingo@redhat.com, acme@kernel.org, brendan.d.gregg@gmail.com, peterz@infradead.org, alexander.shishkin@linux.intel.com, wangnan0@huawei.com, jolsa@kernel.org, ak@linux.intel.com, treeze.taeung@gmail.com, mathieu.poirier@linaro.org, hekuang@huawei.com, sukadev@linux.vnet.ibm.com, ananth@in.ibm.com, naveen.n.rao@linux.vnet.ibm.com, adrian.hunter@intel.com, linux-kernel@vger.kernel.org, hemant@linux.vnet.ibm.com Subject: Re: [PATCH v5 0/7] perf/sdt: Directly record SDT events with 'perf record' Message-Id: <20170316185140.a17b885479976d4be36349f4@kernel.org> In-Reply-To: <20170314150658.7065-1-ravi.bangoria@linux.vnet.ibm.com> References: <20170314150658.7065-1-ravi.bangoria@linux.vnet.ibm.com> X-Mailer: Sylpheed 3.5.0 (GTK+ 2.24.30; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 14 Mar 2017 20:36:51 +0530 Ravi Bangoria wrote: > All events from 'perf list', except SDT events, can be directly recorded > with 'perf record'. But, the flow is little different for SDT events. > Probe point for SDT event needs to be created using 'perf probe' before > recording it using 'perf record'. > > As suggested by Ingo[1], it's better to make this process simple by > creating probe point automatically with 'perf record' for SDT events. > > Features: > - Allow both 'perf probe' and 'perf record' on sdt events without > changing current functionality. > > - Event starting with 'sdt_' or '%' will be considered as SDT event. > > - Always prioritize events from uprobe_events by first checking if > event exists with exact name. If not found and user has used > pattern, again try to find pattern matching entries from > uprobe_events. If found use them. If not, lookup into probe-cache. > If events found from probe-cache, again check if any event exists > in uprobe_events by matching filepath+address, as it might exists > in uprobe_events but with different name. Reuse those events which > exists in uprobe_events and create new entries for missing one. > Also maintain list for new entries being created and at the end > of the session, delete them. > > - Show various warnings/hints to help user understand _which_ events > are being recorded and _why_. For ex, > > When multiple events of same name found and all are being recorded: > > $ sudo ./perf record -a -e sdt_libpthread:mutex_entry > Warning: Recording on 2 occurrences of sdt_libpthread:mutex_entry > > Events being reused from uprobe_events is listed as 'name addr@file' > followed by hint on how to delete them: > > $ sudo ./perf record -a -e sdt_libpthread:mutex_entry > Matching event(s) from uprobe_events: > sdt_libpthread:mutex_entry 0x9ddb@/usr/lib64/libpthread-2.24.so > Use 'perf probe -d ' to delete event(s). > > If number of events found from cache is not equal to number of events > being recorded: > > $ sudo ./perf record -a -e sdt_libpthread:mutex_entry > Warning: Found 2 events from probe-cache with name 'sdt_libpthread:mutex_entry'. > Since 1 probe point already exists, recording only it. > Hint: Please use 'perf probe -d sdt_libpthread:mutex_entry' to allow record on all events. > > - If all events found from probe-cache are not present in uprobe_events, > and user has used pattern to specify event, perf will record only > those events which are present in uprobe_events. This is to make perf > semantics consistent across normal and SDT events. And If user has > not used pattern, perf will record all events found from probe-cache > by reusing name for existing one and adding entries for missing one. > For ex, > > $ sudo ./perf probe sdt_libpthread:mutex_release > Added new events: > sdt_libpthread:mutex_release (on %mutex_release in /usr/lib64/libpthread-2.24.so) > sdt_libpthread:mutex_release_1 (on %mutex_release in /usr/lib64/libpthread-2.24.so) > sdt_libpthread:mutex_release_2 (on %mutex_release in /usr/lib64/libpthread-2.24.so) > sdt_libpthread:mutex_release_3 (on %mutex_release in /usr/lib64/libpthread-2.24.so) > $ sudo ./perf probe -d sdt_libpthread:mutex_release > $ sudo ./perf probe -d sdt_libpthread:mutex_release_2 > > $ sudo ./perf record -a -e sdt_libpthread:mutex_release* > Warning: Recording on 2 occurrences of sdt_libpthread:mutex_release* > > $ sudo ./perf record -a -e sdt_libpthread:mutex_release > Warning: Recording on 4 occurrences of sdt_libpthread:mutex_release > > Changes in v5: > - Patch 2/7 is new. New option introduced in this patch helps to pass > custome data from builtin-*.c to libperf. > > - All direct callbacks from libelf to builtin-record.c is removed. > > - Merged 2nd and 4th patch of v4 into patch 2 of v5. > > - Moved all functions from util/probe-file.c to util/probe-event.c > which operates on perf_probe_event. > > - Made free_sdt_list() static as it's only used inside util/probe-event.c. > > - Couple of other changes as Masami has suggested in v4 review. Hi Ravi, Could you also describe which patches are updated? It seems 1/7 is not modified, correct? Thank you, -- Masami Hiramatsu