From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754194AbbGOJSL (ORCPT ); Wed, 15 Jul 2015 05:18:11 -0400 Received: from mail4.hitachi.co.jp ([133.145.228.5]:49966 "EHLO mail4.hitachi.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751792AbbGOJSI (ORCPT ); Wed, 15 Jul 2015 05:18:08 -0400 Subject: [RFC PATCH perf/core v2 00/16] perf-probe --cache and SDT support From: Masami Hiramatsu To: Arnaldo Carvalho de Melo Cc: Peter Zijlstra , linux-kernel@vger.kernel.org, Adrian Hunter , Ingo Molnar , Paul Mackerras , Jiri Olsa , Namhyung Kim , Borislav Petkov , Hemant Kumar Date: Wed, 15 Jul 2015 18:13:53 +0900 Message-ID: <20150715091352.8915.87480.stgit@localhost.localdomain> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, Here is the 2nd version of the patchset for probe-cache and initial SDT support which are going to be perf-cache finally. 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 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 -- Masami HIRAMATSU Linux Technology Research Center, System Productivity Research Dept. Center for Technology Innovation - Systems Engineering Hitachi, Ltd., Research & Development Group E-mail: masami.hiramatsu.pt@hitachi.com