From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754473AbbGPDOl (ORCPT ); Wed, 15 Jul 2015 23:14:41 -0400 Received: from e23smtp01.au.ibm.com ([202.81.31.143]:54990 "EHLO e23smtp01.au.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753671AbbGPDOj (ORCPT ); Wed, 15 Jul 2015 23:14:39 -0400 X-Helo: d23dlp02.au.ibm.com X-MailFrom: hemant@linux.vnet.ibm.com X-RcptTo: linux-kernel@vger.kernel.org Message-ID: <55A7215F.40803@linux.vnet.ibm.com> Date: Thu, 16 Jul 2015 08:43:35 +0530 From: Hemant Kumar User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 MIME-Version: 1.0 To: Masami Hiramatsu , Arnaldo Carvalho de Melo CC: Peter Zijlstra , linux-kernel@vger.kernel.org, Adrian Hunter , Ingo Molnar , Paul Mackerras , Jiri Olsa , Namhyung Kim , Borislav Petkov Subject: Re: [RFC PATCH perf/core v2 00/16] perf-probe --cache and SDT support References: <20150715091352.8915.87480.stgit@localhost.localdomain> In-Reply-To: <20150715091352.8915.87480.stgit@localhost.localdomain> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 15071603-1618-0000-0000-0000026D2C47 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Masami, On 07/15/2015 02:43 PM, Masami Hiramatsu wrote: > Hi, > > Here is the 2nd version of the patchset for probe-cache and > initial SDT support which are going to be perf-cache finally. Thanks for adding the SDT support. > The perf-probe is useful for debugging, but it strongly depends > on the debuginfo. Without debuginfo, it is just a frontend of > ftrace's dynamic events. This can usually happen in server > farms or on cloud system, since no one wants to distribute > big debuginfo packages. > > To solve this issue, I had tried to make a pre-analyzed probes > ( https://lkml.org/lkml/2014/10/31/207 ) but it has a problm > that we can't ensure the probed binary is same as what we analyzed. > Arnaldo gave me an idea to reuse build-id cache for that perpose > and this series is the first prototype of that. > > At the same time, Hemant has started to support SDT probes which > also use the cache file of SDT info. So I decided to merge this > into the same build-id cache. > In this version, SDT support is still very limited, it works > as a part of probe-cache. > > In this version, perf probe supports --cache option which means > that perf probe manipulate probe caches, for example, > > # perf probe --cache --add "probe-desc" > > does not only add probe events but also add "probe-desc" and > it's result on the cache. (Note that the cached entry is always > referred even without --cache) > The --list and --del commands also support --cache. Note that > both are only manipulate caches, not real events. > > To use SDT, we have to scan the target binary at first by using > perf-buildid-cache, e.g. > > # perf buildid-cache --add /lib/libc-2.17.so > > And perf probe --cache --list shows what SDTs are scanned. > > # perf probe --cache --list > /usr/lib/libc-2.17.so (a6fb821bdf53660eb2c29f778757aef294d3d392): > libc:setjmp=setjmp > libc:longjmp=longjmp > libc:longjmp_target=longjmp_target > libc:memory_heap_new=memory_heap_new > libc:memory_sbrk_less=memory_sbrk_less > libc:memory_arena_reuse_free_list=memory_arena_reuse_free_list > libc:memory_arena_reuse=memory_arena_reuse > ... > > To use the SDT events, perf probe -x BIN %SDTEVENT allows you to > add a probe on SDTEVENT@BIN. > > # perf probe -x /lib/libc-2.17.so %memory_heap_new > > If you define a cached probe with event name, you can also reuse > it as same as SDT events. > > # perf probe -x ./perf --cache -n 'myevent=dso__load $params' > > (Note that "-n" option only updates caches) > To use the above "myevent", you just have to add "%myevent". > > # perf probe -x ./perf %myevent > > > TODOs: > - Show available cached/SDT events by perf-list > - Allow perf-record to use cached/SDT events directly As I was already working on SDT events' recording https://lkml.org/lkml/2014/11/2/73, I can re-spin the patches on top of your patchset and make the required changes to implement the above TODOs. What would you suggest? > Thank you, > > --- > > Hemant Kumar (1): > perf/sdt: ELF support for SDT > > Masami Hiramatsu (15): > perf probe: Simplify __add_probe_trace_events code > perf probe: Move ftrace probe-event operations to probe-file.c > perf probe: Use strbuf for making strings in probe-event.c > perf-buildid-cache: Use path/to/bin/buildid/elf instead of path/to/bin/buildid > perf buildid: Use SBUILD_ID_SIZE macro > perf buildid: Introduce sysfs/filename__sprintf_build_id > perf: Add lsdir to read a directory > perf-buildid-cache: Use lsdir for looking up buildid caches > perf probe: Add --cache option to cache the probe definitions > perf probe: Use cache entry if possible > perf probe: Show all cached probes > perf probe: Remove caches when --cache is given > perf probe: Add group name support > perf buildid-cache: Scan and import user SDT events to probe cache > perf probe: Accept %sdt and %cached event name > > > tools/perf/Documentation/perf-probe.txt | 14 > tools/perf/builtin-buildid-cache.c | 22 - > tools/perf/builtin-buildid-list.c | 28 - > tools/perf/builtin-probe.c | 3 > tools/perf/util/Build | 1 > tools/perf/util/build-id.c | 230 ++++++-- > tools/perf/util/build-id.h | 11 > tools/perf/util/dso.h | 5 > tools/perf/util/probe-event.c | 918 ++++++++++++++----------------- > tools/perf/util/probe-event.h | 16 - > tools/perf/util/probe-file.c | 763 ++++++++++++++++++++++++++ > tools/perf/util/probe-file.h | 46 ++ > tools/perf/util/probe-finder.c | 10 > tools/perf/util/symbol-elf.c | 252 +++++++++ > tools/perf/util/symbol.c | 2 > tools/perf/util/symbol.h | 22 + > tools/perf/util/util.c | 34 + > tools/perf/util/util.h | 4 > 18 files changed, 1781 insertions(+), 600 deletions(-) > create mode 100644 tools/perf/util/probe-file.c > create mode 100644 tools/perf/util/probe-file.h > > -- Thanks, Hemant Kumar