* [GIT PULL 00/19] perf/core improvements and fixes @ 2016-12-01 18:02 Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 01/19] perf ui helpline: Provide a printf variant Arnaldo Carvalho de Melo ` (19 more replies) 0 siblings, 20 replies; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-12-01 18:02 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter, Alexander Shishkin, Alexei Starovoitov, Chris Ryder, David Ahern, He Kuang, Jiri Olsa, Joe Stringer, Kim Phillips, Mark Rutland, Namhyung Kim, Pawel Moll, Peter Zijlstra, Wang Nan, Will Deacon, Zefan Li, pi3orama, Arnaldo Carvalho de Melo Hi Ingo, Please consider pulling, - Arnaldo Test results at the end of this message, as usual. The following changes since commit 2471cece40d61b0035360338569d338f9dea6099: Merge tag 'perf-core-for-mingo-20161125' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2016-11-25 18:12:41 +0100) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20161201 for you to fetch changes up to 0fcb1da4aba6e6c7b32de5e0948b740b31ad822d: perf annotate: AArch64 support (2016-12-01 13:03:19 -0300) ---------------------------------------------------------------- perf/core improvements and fixes: New features: - Support AArch64 in the 'annotate' code, native/local and cross-arch/remote (Kim Phillips) - Allow considering just events in a given time interval, via the '--time start.s.ms,end.s.ms' command line, added to 'perf kmem', 'perf report', 'perf sched timehist' and 'perf script' (David Ahern) - Add option to stop printing a callchain at one of a given group of symbol names (David Ahern) - Handle cpu migration events in 'perf sched timehist' (David Ahern) - Track memory freed in 'perf kmem stat' (David Ahern) Infrastructure: - Initial support (and perf test entry) for tooling hooks, starting with 'record_start' and 'record_end', that will have as its initial user the eBPF infrastructure, where perf_ prefixed functions will be JITed and run when such hooks are called (Wang Nan) - Remove redundant "test" and similar strings from 'perf test' descriptions (Arnaldo Carvalho de Melo) - libbpf assorted improvements (Wang Nan) Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> ---------------------------------------------------------------- Arnaldo Carvalho de Melo (3): perf ui helpline: Provide a printf variant perf annotate: Show invalid jump offset in error message perf test: Remove "test" and similar strings from test descriptions David Ahern (10): perf sched timehist: Handle cpu migration events perf trace: Update tid/pid filtering option to leverage symbol_conf perf kmem stat: Track memory freed perf script: Add option to stop printing callchain perf tools: Add time-based utility functions perf tools: Move parse_nsec_time to time-utils.c perf script: Add option to specify time window of interest perf sched timehist: Add option to specify time window of interest perf kmem: Add option to specify time window of interest perf report: Add option to specify time window of interest Kim Phillips (2): perf annotate: Use arch->objdump.comment_char in dec__parse() perf annotate: AArch64 support Wang Nan (4): tools lib bpf: Add missing BPF functions tools lib bpf: Add private field for bpf_object tools lib bpf: Retrive bpf_map through offset of bpf_map_def perf tools: Introduce perf hooks tools/lib/bpf/bpf.c | 56 ++++++++++ tools/lib/bpf/bpf.h | 7 ++ tools/lib/bpf/libbpf.c | 35 ++++++ tools/lib/bpf/libbpf.h | 13 +++ tools/perf/Documentation/perf-kmem.txt | 7 ++ tools/perf/Documentation/perf-report.txt | 7 ++ tools/perf/Documentation/perf-sched.txt | 12 +++ tools/perf/Documentation/perf-script.txt | 10 ++ tools/perf/arch/arm64/annotate/instructions.c | 62 +++++++++++ tools/perf/arch/x86/tests/arch-tests.c | 10 +- tools/perf/builtin-kmem.c | 36 ++++++- tools/perf/builtin-record.c | 11 ++ tools/perf/builtin-report.c | 14 ++- tools/perf/builtin-sched.c | 148 ++++++++++++++++++++++++-- tools/perf/builtin-script.c | 17 ++- tools/perf/builtin-trace.c | 49 ++------- tools/perf/tests/Build | 1 + tools/perf/tests/bpf.c | 6 +- tools/perf/tests/builtin-test.c | 96 +++++++++-------- tools/perf/tests/llvm.c | 8 +- tools/perf/tests/perf-hooks.c | 44 ++++++++ tools/perf/tests/tests.h | 1 + tools/perf/ui/browsers/annotate.c | 6 +- tools/perf/ui/helpline.c | 10 ++ tools/perf/ui/helpline.h | 1 + tools/perf/util/Build | 3 + tools/perf/util/annotate.c | 7 +- tools/perf/util/evsel_fprintf.c | 8 ++ tools/perf/util/perf-hooks-list.h | 3 + tools/perf/util/perf-hooks.c | 84 +++++++++++++++ tools/perf/util/perf-hooks.h | 37 +++++++ tools/perf/util/symbol.c | 8 ++ tools/perf/util/symbol.h | 6 +- tools/perf/util/time-utils.c | 119 +++++++++++++++++++++ tools/perf/util/time-utils.h | 14 +++ tools/perf/util/util.c | 33 ------ tools/perf/util/util.h | 2 - 37 files changed, 842 insertions(+), 149 deletions(-) create mode 100644 tools/perf/arch/arm64/annotate/instructions.c create mode 100644 tools/perf/tests/perf-hooks.c create mode 100644 tools/perf/util/perf-hooks-list.h create mode 100644 tools/perf/util/perf-hooks.c create mode 100644 tools/perf/util/perf-hooks.h create mode 100644 tools/perf/util/time-utils.c create mode 100644 tools/perf/util/time-utils.h # uname -a Linux jouet 4.8.8-300.fc25.x86_64 #1 SMP Tue Nov 15 18:10:06 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux # perf test 1: vmlinux symtab matches kallsyms : Ok 2: Detect openat syscall event : Ok 3: Detect openat syscall event on all cpus : Ok 4: Read samples using the mmap interface : Ok 5: Parse event definition strings : Ok 6: PERF_RECORD_* events & perf_sample fields : Ok 7: Parse perf pmu format : Ok 8: DSO data read : Ok 9: DSO data cache : Ok 10: DSO data reopen : Ok 11: Roundtrip evsel->name : Ok 12: Parse sched tracepoints fields : Ok 13: syscalls:sys_enter_openat event fields : Ok 14: Setup struct perf_event_attr : Ok 15: Match and link multiple hists : Ok 16: 'import perf' in python : Ok 17: Breakpoint overflow signal handler : Ok 18: Breakpoint overflow sampling : Ok 19: Number of exit events of a simple workload : Ok 20: Software clock events period values : Ok 21: Object code reading : Ok 22: Sample parsing : Ok 23: Use a dummy software event to keep tracking: Ok 24: Parse with no sample_id_all bit set : Ok 25: Filter hist entries : Ok 26: Lookup mmap thread : Ok 27: Share thread mg : Ok 28: Sort output of hist entries : Ok 29: Cumulate child hist entries : Ok 30: Track with sched_switch : Ok 31: Filter fds with revents mask in a fdarray : Ok 32: Add fd to a fdarray, making it autogrow : Ok 33: kmod_path__parse : Ok 34: Thread map : Ok 35: LLVM search and compile : 35.1: Basic BPF llvm compile : Ok 35.2: kbuild searching : Ok 35.3: Compile source for BPF prologue generation: Ok 35.4: Compile source for BPF relocation : Ok 36: Session topology : Ok 37: BPF filter : 37.1: Basic BPF filtering : Ok 37.2: BPF prologue generation : Ok 37.3: BPF relocation checker : Ok 38: Synthesize thread map : Ok 39: Synthesize cpu map : Ok 40: Synthesize stat config : Ok 41: Synthesize stat : Ok 42: Synthesize stat round : Ok 43: Synthesize attr update : Ok 44: Event times : Ok 45: Read backward ring buffer : Ok 46: Print cpu map : Ok 47: Probe SDT events : Ok 48: is_printable_array : Ok 49: Print bitmap : Ok 50: perf hooks : Ok 51: x86 rdpmc : Ok 52: Convert perf time to TSC : Ok 53: DWARF unwind : Ok 54: x86 instruction decoder - new instructions : Ok 55: Intel cqm nmi context read : Skip # # uname -a Linux zoo 4.7.3-200.fc24.x86_64 #1 SMP Wed Sep 7 17:31:21 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux # dm 1 alpine:3.4: Ok 2 android-ndk:r12b-arm: Ok 3 archlinux:latest: Ok 4 centos:5: Ok 5 centos:6: Ok 6 centos:7: Ok 7 debian:7: Ok 8 debian:8: Ok 9 debian:experimental: Ok 10 fedora:20: Ok 11 fedora:21: Ok 12 fedora:22: Ok 13 fedora:23: Ok 14 fedora:24: Ok 15 fedora:24-x-ARC-uClibc: Ok 16 fedora:rawhide: Ok 17 mageia:5: Ok 18 opensuse:13.2: Ok 19 opensuse:42.1: Ok 20 opensuse:tumbleweed: Ok 21 ubuntu:12.04.5: Ok 22 ubuntu:14.04: Ok 23 ubuntu:14.04.4: Ok 24 ubuntu:15.10: Ok 25 ubuntu:16.04: Ok 26 ubuntu:16.04-x-arm: Ok 27 ubuntu:16.04-x-arm64: Ok 28 ubuntu:16.04-x-powerpc: Ok 29 ubuntu:16.04-x-powerpc64: Ok 30 ubuntu:16.04-x-powerpc64el: Ok 31 ubuntu:16.04-x-s390: Ok 32 ubuntu:16.10: Ok # $ grep PRETTY_NAME /etc/os-release PRETTY_NAME="Fedora 25 (Workstation Edition)" $ $ perf stat make -C tools/perf build-test make: Entering directory '/home/acme/git/linux/tools/perf' - tarpkg: ./tests/perf-targz-src-pkg . make_no_slang_O: make NO_SLANG=1 make_util_map_o_O: make util/map.o make_static_O: make LDFLAGS=-static make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1 make_perf_o_O: make perf.o make_no_libunwind_O: make NO_LIBUNWIND=1 make_no_libelf_O: make NO_LIBELF=1 make_util_pmu_bison_o_O: make util/pmu-bison.o make_no_backtrace_O: make NO_BACKTRACE=1 make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1 make_no_demangle_O: make NO_DEMANGLE=1 make_no_libperl_O: make NO_LIBPERL=1 make_tags_O: make tags make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1 make_install_prefix_slash_O: make install prefix=/tmp/krava/ make_no_auxtrace_O: make NO_AUXTRACE=1 make_no_libnuma_O: make NO_LIBNUMA=1 make_install_bin_O: make install-bin make_no_newt_O: make NO_NEWT=1 make_pure_O: make make_minimal_O: make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1 make_clean_all_O: make clean all make_no_gtk2_O: make NO_GTK2=1 make_no_libbionic_O: make NO_LIBBIONIC=1 make_install_prefix_O: make install prefix=/tmp/krava make_no_libbpf_O: make NO_LIBBPF=1 make_no_libaudit_O: make NO_LIBAUDIT=1 make_with_babeltrace_O: make LIBBABELTRACE=1 make_no_libpython_O: make NO_LIBPYTHON=1 make_help_O: make help make_doc_O: make doc make_debug_O: make DEBUG=1 make_install_O: make install OK make: Leaving directory '/home/acme/git/linux/tools/perf' $ ^ permalink raw reply [flat|nested] 53+ messages in thread
* [PATCH 01/19] perf ui helpline: Provide a printf variant 2016-12-01 18:02 [GIT PULL 00/19] perf/core improvements and fixes Arnaldo Carvalho de Melo @ 2016-12-01 18:02 ` Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 02/19] perf annotate: Show invalid jump offset in error message Arnaldo Carvalho de Melo ` (18 subsequent siblings) 19 siblings, 0 replies; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-12-01 18:02 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter, David Ahern, Jiri Olsa, Namhyung Kim, Wang Nan From: Arnaldo Carvalho de Melo <acme@redhat.com> To print some values, like in the annotation code with invalid jump offsets. Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/n/tip-1vk0g5twas2ioswn1mmvnvwq@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/ui/helpline.c | 10 ++++++++++ tools/perf/ui/helpline.h | 1 + 2 files changed, 11 insertions(+) diff --git a/tools/perf/ui/helpline.c b/tools/perf/ui/helpline.c index 5b74a7eba210..379039ab00d8 100644 --- a/tools/perf/ui/helpline.c +++ b/tools/perf/ui/helpline.c @@ -72,3 +72,13 @@ int ui_helpline__vshow(const char *fmt, va_list ap) { return helpline_fns->show(fmt, ap); } + +void ui_helpline__printf(const char *fmt, ...) +{ + va_list ap; + + ui_helpline__pop(); + va_start(ap, fmt); + ui_helpline__vpush(fmt, ap); + va_end(ap); +} diff --git a/tools/perf/ui/helpline.h b/tools/perf/ui/helpline.h index 46181f4fc07e..d52d0a1a881b 100644 --- a/tools/perf/ui/helpline.h +++ b/tools/perf/ui/helpline.h @@ -21,6 +21,7 @@ void ui_helpline__push(const char *msg); void ui_helpline__vpush(const char *fmt, va_list ap); void ui_helpline__fpush(const char *fmt, ...); void ui_helpline__puts(const char *msg); +void ui_helpline__printf(const char *fmt, ...); int ui_helpline__vshow(const char *fmt, va_list ap); extern char ui_helpline__current[512]; -- 2.9.3 ^ permalink raw reply related [flat|nested] 53+ messages in thread
* [PATCH 02/19] perf annotate: Show invalid jump offset in error message 2016-12-01 18:02 [GIT PULL 00/19] perf/core improvements and fixes Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 01/19] perf ui helpline: Provide a printf variant Arnaldo Carvalho de Melo @ 2016-12-01 18:02 ` Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 03/19] perf sched timehist: Handle cpu migration events Arnaldo Carvalho de Melo ` (17 subsequent siblings) 19 siblings, 0 replies; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-12-01 18:02 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter, David Ahern, Jiri Olsa, Namhyung Kim, Wang Nan From: Arnaldo Carvalho de Melo <acme@redhat.com> To help in debugging when the wrong offset is being used, like in: │13d98: ↓ jne 13dd1 <lzma_lzma_preset@@XZ_5.0+0x28e1> That is the full line from objdump, and it seems what should be used is 13dd1, not 28e1. Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/n/tip-4nc0marsgst1ft6inmvqber7@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/ui/browsers/annotate.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/perf/ui/browsers/annotate.c b/tools/perf/ui/browsers/annotate.c index cee0eee31ce6..ec7a30fad149 100644 --- a/tools/perf/ui/browsers/annotate.c +++ b/tools/perf/ui/browsers/annotate.c @@ -543,14 +543,16 @@ struct disasm_line *annotate_browser__find_offset(struct annotate_browser *brows static bool annotate_browser__jump(struct annotate_browser *browser) { struct disasm_line *dl = browser->selection; + u64 offset; s64 idx; if (!ins__is_jump(&dl->ins)) return false; - dl = annotate_browser__find_offset(browser, dl->ops.target.offset, &idx); + offset = dl->ops.target.offset; + dl = annotate_browser__find_offset(browser, offset, &idx); if (dl == NULL) { - ui_helpline__puts("Invalid jump offset"); + ui_helpline__printf("Invalid jump offset: %" PRIx64, offset); return true; } -- 2.9.3 ^ permalink raw reply related [flat|nested] 53+ messages in thread
* [PATCH 03/19] perf sched timehist: Handle cpu migration events 2016-12-01 18:02 [GIT PULL 00/19] perf/core improvements and fixes Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 01/19] perf ui helpline: Provide a printf variant Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 02/19] perf annotate: Show invalid jump offset in error message Arnaldo Carvalho de Melo @ 2016-12-01 18:02 ` Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 04/19] perf trace: Update tid/pid filtering option to leverage symbol_conf Arnaldo Carvalho de Melo ` (16 subsequent siblings) 19 siblings, 0 replies; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-12-01 18:02 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, David Ahern, Namhyung Kim, Arnaldo Carvalho de Melo From: David Ahern <dsahern@gmail.com> Add handlers for sched:sched_migrate_task event. Total number of migrations is added to summary display and -M/--migrations can be used to show migration events. Signed-off-by: David Ahern <dsahern@gmail.com> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Namhyung Kim <namhyung@kernel.org> Link: http://lkml.kernel.org/r/1480091321-35591-1-git-send-email-dsa@cumulusnetworks.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/Documentation/perf-sched.txt | 4 ++ tools/perf/builtin-sched.c | 97 ++++++++++++++++++++++++++++++++- 2 files changed, 99 insertions(+), 2 deletions(-) diff --git a/tools/perf/Documentation/perf-sched.txt b/tools/perf/Documentation/perf-sched.txt index fb9e52d65fca..121c60da03e5 100644 --- a/tools/perf/Documentation/perf-sched.txt +++ b/tools/perf/Documentation/perf-sched.txt @@ -128,6 +128,10 @@ OPTIONS for 'perf sched timehist' --wakeups:: Show wakeup events. +-M:: +--migrations:: + Show migration events. + SEE ALSO -------- linkperf:perf-record[1] diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c index a49a032f5b15..4f9e7cba4ebf 100644 --- a/tools/perf/builtin-sched.c +++ b/tools/perf/builtin-sched.c @@ -203,6 +203,7 @@ struct perf_sched { unsigned int max_stack; bool show_cpu_visual; bool show_wakeups; + bool show_migrations; u64 skipped_samples; }; @@ -216,6 +217,8 @@ struct thread_runtime { struct stats run_stats; u64 total_run_time; + + u64 migrations; }; /* per event run time data */ @@ -2197,6 +2200,87 @@ static int timehist_sched_wakeup_event(struct perf_tool *tool, return 0; } +static void timehist_print_migration_event(struct perf_sched *sched, + struct perf_evsel *evsel, + struct perf_sample *sample, + struct machine *machine, + struct thread *migrated) +{ + struct thread *thread; + char tstr[64]; + u32 max_cpus = sched->max_cpu + 1; + u32 ocpu, dcpu; + + if (sched->summary_only) + return; + + max_cpus = sched->max_cpu + 1; + ocpu = perf_evsel__intval(evsel, sample, "orig_cpu"); + dcpu = perf_evsel__intval(evsel, sample, "dest_cpu"); + + thread = machine__findnew_thread(machine, sample->pid, sample->tid); + if (thread == NULL) + return; + + if (timehist_skip_sample(sched, thread) && + timehist_skip_sample(sched, migrated)) { + return; + } + + timestamp__scnprintf_usec(sample->time, tstr, sizeof(tstr)); + printf("%15s [%04d] ", tstr, sample->cpu); + + if (sched->show_cpu_visual) { + u32 i; + char c; + + printf(" "); + for (i = 0; i < max_cpus; ++i) { + c = (i == sample->cpu) ? 'm' : ' '; + printf("%c", c); + } + printf(" "); + } + + printf(" %-*s ", comm_width, timehist_get_commstr(thread)); + + /* dt spacer */ + printf(" %9s %9s %9s ", "", "", ""); + + printf("migrated: %s", timehist_get_commstr(migrated)); + printf(" cpu %d => %d", ocpu, dcpu); + + printf("\n"); +} + +static int timehist_migrate_task_event(struct perf_tool *tool, + union perf_event *event __maybe_unused, + struct perf_evsel *evsel, + struct perf_sample *sample, + struct machine *machine) +{ + struct perf_sched *sched = container_of(tool, struct perf_sched, tool); + struct thread *thread; + struct thread_runtime *tr = NULL; + /* want pid of migrated task not pid in sample */ + const u32 pid = perf_evsel__intval(evsel, sample, "pid"); + + thread = machine__findnew_thread(machine, 0, pid); + if (thread == NULL) + return -1; + + tr = thread__get_runtime(thread); + if (tr == NULL) + return -1; + + tr->migrations++; + + /* show migrations if requested */ + timehist_print_migration_event(sched, evsel, sample, machine, thread); + + return 0; +} + static int timehist_sched_change_event(struct perf_tool *tool, union perf_event *event, struct perf_evsel *evsel, @@ -2295,6 +2379,7 @@ static void print_thread_runtime(struct thread *t, print_sched_time(r->run_stats.max, 6); printf(" "); printf("%5.2f", stddev); + printf(" %5" PRIu64, r->migrations); printf("\n"); } @@ -2356,10 +2441,10 @@ static void timehist_print_summary(struct perf_sched *sched, printf("\nRuntime summary\n"); printf("%*s parent sched-in ", comm_width, "comm"); - printf(" run-time min-run avg-run max-run stddev\n"); + printf(" run-time min-run avg-run max-run stddev migrations\n"); printf("%*s (count) ", comm_width, ""); printf(" (msec) (msec) (msec) (msec) %%\n"); - printf("%.105s\n", graph_dotted_line); + printf("%.117s\n", graph_dotted_line); machine__for_each_thread(m, show_thread_runtime, &totals); task_count = totals.task_count; @@ -2460,6 +2545,9 @@ static int perf_sched__timehist(struct perf_sched *sched) { "sched:sched_wakeup", timehist_sched_wakeup_event, }, { "sched:sched_wakeup_new", timehist_sched_wakeup_event, }, }; + const struct perf_evsel_str_handler migrate_handlers[] = { + { "sched:sched_migrate_task", timehist_migrate_task_event, }, + }; struct perf_data_file file = { .path = input_name, .mode = PERF_DATA_MODE_READ, @@ -2507,6 +2595,10 @@ static int perf_sched__timehist(struct perf_sched *sched) if (!perf_session__has_traces(session, "record -R")) goto out; + if (sched->show_migrations && + perf_session__set_tracepoints_handlers(session, migrate_handlers)) + goto out; + /* pre-allocate struct for per-CPU idle stats */ sched->max_cpu = session->header.env.nr_cpus_online; if (sched->max_cpu == 0) @@ -2903,6 +2995,7 @@ int cmd_sched(int argc, const char **argv, const char *prefix __maybe_unused) OPT_BOOLEAN('S', "with-summary", &sched.summary, "Show all syscalls and summary with statistics"), OPT_BOOLEAN('w', "wakeups", &sched.show_wakeups, "Show wakeup events"), + OPT_BOOLEAN('M', "migrations", &sched.show_migrations, "Show migration events"), OPT_BOOLEAN('V', "cpu-visual", &sched.show_cpu_visual, "Add CPU visual"), OPT_PARENT(sched_options) }; -- 2.9.3 ^ permalink raw reply related [flat|nested] 53+ messages in thread
* [PATCH 04/19] perf trace: Update tid/pid filtering option to leverage symbol_conf 2016-12-01 18:02 [GIT PULL 00/19] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (2 preceding siblings ...) 2016-12-01 18:02 ` [PATCH 03/19] perf sched timehist: Handle cpu migration events Arnaldo Carvalho de Melo @ 2016-12-01 18:02 ` Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 05/19] tools lib bpf: Add missing BPF functions Arnaldo Carvalho de Melo ` (15 subsequent siblings) 19 siblings, 0 replies; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-12-01 18:02 UTC (permalink / raw) To: Ingo Molnar; +Cc: linux-kernel, David Ahern, Arnaldo Carvalho de Melo From: David Ahern <dsahern@gmail.com> Leverage pid/tid filtering done by symbol_conf hooks. Signed-off-by: David Ahern <dsahern@gmail.com> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Link: http://lkml.kernel.org/r/1480091392-35645-1-git-send-email-dsa@cumulusnetworks.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/builtin-trace.c | 49 +++++++++------------------------------------- 1 file changed, 9 insertions(+), 40 deletions(-) diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index 5f45166c892d..206bf72b77fc 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c @@ -74,8 +74,6 @@ struct trace { size_t nr; int *entries; } ev_qualifier_ids; - struct intlist *tid_list; - struct intlist *pid_list; struct { size_t nr; pid_t *entries; @@ -1890,18 +1888,6 @@ static int trace__pgfault(struct trace *trace, return err; } -static bool skip_sample(struct trace *trace, struct perf_sample *sample) -{ - if ((trace->pid_list && intlist__find(trace->pid_list, sample->pid)) || - (trace->tid_list && intlist__find(trace->tid_list, sample->tid))) - return false; - - if (trace->pid_list || trace->tid_list) - return true; - - return false; -} - static void trace__set_base_time(struct trace *trace, struct perf_evsel *evsel, struct perf_sample *sample) @@ -1926,11 +1912,13 @@ static int trace__process_sample(struct perf_tool *tool, struct machine *machine __maybe_unused) { struct trace *trace = container_of(tool, struct trace, tool); + struct thread *thread; int err = 0; tracepoint_handler handler = evsel->handler; - if (skip_sample(trace, sample)) + thread = machine__findnew_thread(trace->host, sample->pid, sample->tid); + if (thread && thread__is_filtered(thread)) return 0; trace__set_base_time(trace, evsel, sample); @@ -1943,27 +1931,6 @@ static int trace__process_sample(struct perf_tool *tool, return err; } -static int parse_target_str(struct trace *trace) -{ - if (trace->opts.target.pid) { - trace->pid_list = intlist__new(trace->opts.target.pid); - if (trace->pid_list == NULL) { - pr_err("Error parsing process id string\n"); - return -EINVAL; - } - } - - if (trace->opts.target.tid) { - trace->tid_list = intlist__new(trace->opts.target.tid); - if (trace->tid_list == NULL) { - pr_err("Error parsing thread id string\n"); - return -EINVAL; - } - } - - return 0; -} - static int trace__record(struct trace *trace, int argc, const char **argv) { unsigned int rec_argc, i, j; @@ -2460,6 +2427,12 @@ static int trace__replay(struct trace *trace) if (session == NULL) return -1; + if (trace->opts.target.pid) + symbol_conf.pid_list_str = strdup(trace->opts.target.pid); + + if (trace->opts.target.tid) + symbol_conf.tid_list_str = strdup(trace->opts.target.tid); + if (symbol__init(&session->header.env) < 0) goto out; @@ -2503,10 +2476,6 @@ static int trace__replay(struct trace *trace) evsel->handler = trace__pgfault; } - err = parse_target_str(trace); - if (err != 0) - goto out; - setup_pager(); err = perf_session__process_events(session); -- 2.9.3 ^ permalink raw reply related [flat|nested] 53+ messages in thread
* [PATCH 05/19] tools lib bpf: Add missing BPF functions 2016-12-01 18:02 [GIT PULL 00/19] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (3 preceding siblings ...) 2016-12-01 18:02 ` [PATCH 04/19] perf trace: Update tid/pid filtering option to leverage symbol_conf Arnaldo Carvalho de Melo @ 2016-12-01 18:02 ` Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 06/19] tools lib bpf: Add private field for bpf_object Arnaldo Carvalho de Melo ` (14 subsequent siblings) 19 siblings, 0 replies; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-12-01 18:02 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Wang Nan, He Kuang, Joe Stringer, Zefan Li, pi3orama, Arnaldo Carvalho de Melo From: Wang Nan <wangnan0@huawei.com> Add more BPF map operations to libbpf. Also add bpf_obj_{pin,get}(). They can be used on not only BPF maps but also BPF programs. Signed-off-by: Wang Nan <wangnan0@huawei.com> Acked-by: Alexei Starovoitov <ast@kernel.org> Cc: He Kuang <hekuang@huawei.com> Cc: Joe Stringer <joe@ovn.org> Cc: Zefan Li <lizefan@huawei.com> Cc: pi3orama@163.com Link: http://lkml.kernel.org/r/20161126070354.141764-2-wangnan0@huawei.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/lib/bpf/bpf.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++ tools/lib/bpf/bpf.h | 7 +++++++ 2 files changed, 63 insertions(+) diff --git a/tools/lib/bpf/bpf.c b/tools/lib/bpf/bpf.c index 4212ed62235b..8143536b462a 100644 --- a/tools/lib/bpf/bpf.c +++ b/tools/lib/bpf/bpf.c @@ -110,3 +110,59 @@ int bpf_map_update_elem(int fd, void *key, void *value, return sys_bpf(BPF_MAP_UPDATE_ELEM, &attr, sizeof(attr)); } + +int bpf_map_lookup_elem(int fd, void *key, void *value) +{ + union bpf_attr attr; + + bzero(&attr, sizeof(attr)); + attr.map_fd = fd; + attr.key = ptr_to_u64(key); + attr.value = ptr_to_u64(value); + + return sys_bpf(BPF_MAP_LOOKUP_ELEM, &attr, sizeof(attr)); +} + +int bpf_map_delete_elem(int fd, void *key) +{ + union bpf_attr attr; + + bzero(&attr, sizeof(attr)); + attr.map_fd = fd; + attr.key = ptr_to_u64(key); + + return sys_bpf(BPF_MAP_DELETE_ELEM, &attr, sizeof(attr)); +} + +int bpf_map_get_next_key(int fd, void *key, void *next_key) +{ + union bpf_attr attr; + + bzero(&attr, sizeof(attr)); + attr.map_fd = fd; + attr.key = ptr_to_u64(key); + attr.next_key = ptr_to_u64(next_key); + + return sys_bpf(BPF_MAP_GET_NEXT_KEY, &attr, sizeof(attr)); +} + +int bpf_obj_pin(int fd, const char *pathname) +{ + union bpf_attr attr; + + bzero(&attr, sizeof(attr)); + attr.pathname = ptr_to_u64((void *)pathname); + attr.bpf_fd = fd; + + return sys_bpf(BPF_OBJ_PIN, &attr, sizeof(attr)); +} + +int bpf_obj_get(const char *pathname) +{ + union bpf_attr attr; + + bzero(&attr, sizeof(attr)); + attr.pathname = ptr_to_u64((void *)pathname); + + return sys_bpf(BPF_OBJ_GET, &attr, sizeof(attr)); +} diff --git a/tools/lib/bpf/bpf.h b/tools/lib/bpf/bpf.h index e8ba54087497..253c3dbb06b4 100644 --- a/tools/lib/bpf/bpf.h +++ b/tools/lib/bpf/bpf.h @@ -35,4 +35,11 @@ int bpf_load_program(enum bpf_prog_type type, struct bpf_insn *insns, int bpf_map_update_elem(int fd, void *key, void *value, u64 flags); + +int bpf_map_lookup_elem(int fd, void *key, void *value); +int bpf_map_delete_elem(int fd, void *key); +int bpf_map_get_next_key(int fd, void *key, void *next_key); +int bpf_obj_pin(int fd, const char *pathname); +int bpf_obj_get(const char *pathname); + #endif -- 2.9.3 ^ permalink raw reply related [flat|nested] 53+ messages in thread
* [PATCH 06/19] tools lib bpf: Add private field for bpf_object 2016-12-01 18:02 [GIT PULL 00/19] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (4 preceding siblings ...) 2016-12-01 18:02 ` [PATCH 05/19] tools lib bpf: Add missing BPF functions Arnaldo Carvalho de Melo @ 2016-12-01 18:02 ` Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 07/19] tools lib bpf: Retrive bpf_map through offset of bpf_map_def Arnaldo Carvalho de Melo ` (13 subsequent siblings) 19 siblings, 0 replies; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-12-01 18:02 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Wang Nan, He Kuang, Joe Stringer, Zefan Li, pi3orama, Arnaldo Carvalho de Melo From: Wang Nan <wangnan0@huawei.com> Similar to other classes defined in libbpf.h (map and program), allow 'object' class has its own private data. Signed-off-by: Wang Nan <wangnan0@huawei.com> Acked-by: Alexei Starovoitov <ast@kernel.org> Cc: He Kuang <hekuang@huawei.com> Cc: Joe Stringer <joe@ovn.org> Cc: Zefan Li <lizefan@huawei.com> Cc: pi3orama@163.com Link: http://lkml.kernel.org/r/20161126070354.141764-3-wangnan0@huawei.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/lib/bpf/libbpf.c | 23 +++++++++++++++++++++++ tools/lib/bpf/libbpf.h | 5 +++++ 2 files changed, 28 insertions(+) diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c index 96a2b2ff1212..866d5cdeffc7 100644 --- a/tools/lib/bpf/libbpf.c +++ b/tools/lib/bpf/libbpf.c @@ -229,6 +229,10 @@ struct bpf_object { * all objects. */ struct list_head list; + + void *priv; + bpf_object_clear_priv_t clear_priv; + char path[]; }; #define obj_elf_valid(o) ((o)->efile.elf) @@ -1229,6 +1233,9 @@ void bpf_object__close(struct bpf_object *obj) if (!obj) return; + if (obj->clear_priv) + obj->clear_priv(obj, obj->priv); + bpf_object__elf_finish(obj); bpf_object__unload(obj); @@ -1282,6 +1289,22 @@ unsigned int bpf_object__kversion(struct bpf_object *obj) return obj ? obj->kern_version : 0; } +int bpf_object__set_priv(struct bpf_object *obj, void *priv, + bpf_object_clear_priv_t clear_priv) +{ + if (obj->priv && obj->clear_priv) + obj->clear_priv(obj, obj->priv); + + obj->priv = priv; + obj->clear_priv = clear_priv; + return 0; +} + +void *bpf_object__priv(struct bpf_object *obj) +{ + return obj ? obj->priv : ERR_PTR(-EINVAL); +} + struct bpf_program * bpf_program__next(struct bpf_program *prev, struct bpf_object *obj) { diff --git a/tools/lib/bpf/libbpf.h b/tools/lib/bpf/libbpf.h index dd7a513efb10..0c0b0127e03e 100644 --- a/tools/lib/bpf/libbpf.h +++ b/tools/lib/bpf/libbpf.h @@ -79,6 +79,11 @@ struct bpf_object *bpf_object__next(struct bpf_object *prev); (pos) != NULL; \ (pos) = (tmp), (tmp) = bpf_object__next(tmp)) +typedef void (*bpf_object_clear_priv_t)(struct bpf_object *, void *); +int bpf_object__set_priv(struct bpf_object *obj, void *priv, + bpf_object_clear_priv_t clear_priv); +void *bpf_object__priv(struct bpf_object *prog); + /* Accessors of bpf_program. */ struct bpf_program; struct bpf_program *bpf_program__next(struct bpf_program *prog, -- 2.9.3 ^ permalink raw reply related [flat|nested] 53+ messages in thread
* [PATCH 07/19] tools lib bpf: Retrive bpf_map through offset of bpf_map_def 2016-12-01 18:02 [GIT PULL 00/19] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (5 preceding siblings ...) 2016-12-01 18:02 ` [PATCH 06/19] tools lib bpf: Add private field for bpf_object Arnaldo Carvalho de Melo @ 2016-12-01 18:02 ` Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 08/19] perf tools: Introduce perf hooks Arnaldo Carvalho de Melo ` (12 subsequent siblings) 19 siblings, 0 replies; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-12-01 18:02 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Wang Nan, He Kuang, Jiri Olsa, Joe Stringer, Zefan Li, pi3orama, Arnaldo Carvalho de Melo From: Wang Nan <wangnan0@huawei.com> Add a new API to libbpf, caller is able to get bpf_map through the offset of bpf_map_def to 'maps' section. The API will be used to help jitted perf hook code find fd of a map. Signed-off-by: Wang Nan <wangnan0@huawei.com> Acked-by: Alexei Starovoitov <ast@kernel.org> Cc: He Kuang <hekuang@huawei.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Joe Stringer <joe@ovn.org> Cc: Zefan Li <lizefan@huawei.com> Cc: pi3orama@163.com Link: http://lkml.kernel.org/r/20161126070354.141764-4-wangnan0@huawei.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/lib/bpf/libbpf.c | 12 ++++++++++++ tools/lib/bpf/libbpf.h | 8 ++++++++ 2 files changed, 20 insertions(+) diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c index 866d5cdeffc7..2e974593f3e8 100644 --- a/tools/lib/bpf/libbpf.c +++ b/tools/lib/bpf/libbpf.c @@ -1524,3 +1524,15 @@ bpf_object__find_map_by_name(struct bpf_object *obj, const char *name) } return NULL; } + +struct bpf_map * +bpf_object__find_map_by_offset(struct bpf_object *obj, size_t offset) +{ + int i; + + for (i = 0; i < obj->nr_maps; i++) { + if (obj->maps[i].offset == offset) + return &obj->maps[i]; + } + return ERR_PTR(-ENOENT); +} diff --git a/tools/lib/bpf/libbpf.h b/tools/lib/bpf/libbpf.h index 0c0b0127e03e..a5a8b86a06fe 100644 --- a/tools/lib/bpf/libbpf.h +++ b/tools/lib/bpf/libbpf.h @@ -24,6 +24,7 @@ #include <stdio.h> #include <stdbool.h> #include <linux/err.h> +#include <sys/types.h> // for size_t enum libbpf_errno { __LIBBPF_ERRNO__START = 4000, @@ -200,6 +201,13 @@ struct bpf_map; struct bpf_map * bpf_object__find_map_by_name(struct bpf_object *obj, const char *name); +/* + * Get bpf_map through the offset of corresponding struct bpf_map_def + * in the bpf object file. + */ +struct bpf_map * +bpf_object__find_map_by_offset(struct bpf_object *obj, size_t offset); + struct bpf_map * bpf_map__next(struct bpf_map *map, struct bpf_object *obj); #define bpf_map__for_each(pos, obj) \ -- 2.9.3 ^ permalink raw reply related [flat|nested] 53+ messages in thread
* [PATCH 08/19] perf tools: Introduce perf hooks 2016-12-01 18:02 [GIT PULL 00/19] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (6 preceding siblings ...) 2016-12-01 18:02 ` [PATCH 07/19] tools lib bpf: Retrive bpf_map through offset of bpf_map_def Arnaldo Carvalho de Melo @ 2016-12-01 18:02 ` Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 09/19] perf test: Remove "test" and similar strings from test descriptions Arnaldo Carvalho de Melo ` (11 subsequent siblings) 19 siblings, 0 replies; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-12-01 18:02 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Wang Nan, Alexei Starovoitov, He Kuang, Jiri Olsa, Joe Stringer, Zefan Li, pi3orama, Arnaldo Carvalho de Melo From: Wang Nan <wangnan0@huawei.com> Perf hooks allow hooking user code at perf events. They can be used for manipulation of BPF maps, taking snapshot and reporting results. In this patch two perf hook points are introduced: record_start and record_end. To avoid buggy user actions, a SIGSEGV signal handler is introduced into 'perf record'. It turns off perf hook if it causes a segfault and report an error to help debugging. A test case for perf hook is introduced. Test result: $ ./buildperf/perf test -v hook 50: Test perf hooks : --- start --- test child forked, pid 10311 SIGSEGV is observed as expected, try to recover. Fatal error (SEGFAULT) in perf hook 'test' test child finished with 0 ---- end ---- Test perf hooks: Ok Signed-off-by: Wang Nan <wangnan0@huawei.com> Cc: Alexei Starovoitov <ast@fb.com> Cc: He Kuang <hekuang@huawei.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Joe Stringer <joe@ovn.org> Cc: Zefan Li <lizefan@huawei.com> Cc: pi3orama@163.com Link: http://lkml.kernel.org/r/20161126070354.141764-5-wangnan0@huawei.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/builtin-record.c | 11 +++++ tools/perf/tests/Build | 1 + tools/perf/tests/builtin-test.c | 4 ++ tools/perf/tests/perf-hooks.c | 44 ++++++++++++++++++++ tools/perf/tests/tests.h | 1 + tools/perf/util/Build | 2 + tools/perf/util/perf-hooks-list.h | 3 ++ tools/perf/util/perf-hooks.c | 84 +++++++++++++++++++++++++++++++++++++++ tools/perf/util/perf-hooks.h | 37 +++++++++++++++++ 9 files changed, 187 insertions(+) create mode 100644 tools/perf/tests/perf-hooks.c create mode 100644 tools/perf/util/perf-hooks-list.h create mode 100644 tools/perf/util/perf-hooks.c create mode 100644 tools/perf/util/perf-hooks.h diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index 67d2a9003294..fa26865364b6 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -37,6 +37,7 @@ #include "util/llvm-utils.h" #include "util/bpf-loader.h" #include "util/trigger.h" +#include "util/perf-hooks.h" #include "asm/bug.h" #include <unistd.h> @@ -206,6 +207,12 @@ static void sig_handler(int sig) done = 1; } +static void sigsegv_handler(int sig) +{ + perf_hooks__recover(); + sighandler_dump_stack(sig); +} + static void record__sig_exit(void) { if (signr == -1) @@ -833,6 +840,7 @@ static int __cmd_record(struct record *rec, int argc, const char **argv) signal(SIGCHLD, sig_handler); signal(SIGINT, sig_handler); signal(SIGTERM, sig_handler); + signal(SIGSEGV, sigsegv_handler); if (rec->opts.auxtrace_snapshot_mode || rec->switch_output) { signal(SIGUSR2, snapshot_sig_handler); @@ -970,6 +978,7 @@ static int __cmd_record(struct record *rec, int argc, const char **argv) trigger_ready(&auxtrace_snapshot_trigger); trigger_ready(&switch_output_trigger); + perf_hooks__invoke_record_start(); for (;;) { unsigned long long hits = rec->samples; @@ -1114,6 +1123,8 @@ static int __cmd_record(struct record *rec, int argc, const char **argv) } } + perf_hooks__invoke_record_end(); + if (!err && !quiet) { char samples[128]; const char *postfix = rec->timestamp_filename ? diff --git a/tools/perf/tests/Build b/tools/perf/tests/Build index 8a4ce492f7b2..af3ec94869aa 100644 --- a/tools/perf/tests/Build +++ b/tools/perf/tests/Build @@ -42,6 +42,7 @@ perf-y += backward-ring-buffer.o perf-y += sdt.o perf-y += is_printable_array.o perf-y += bitmap.o +perf-y += perf-hooks.o $(OUTPUT)tests/llvm-src-base.c: tests/bpf-script-example.c tests/Build $(call rule_mkdir) diff --git a/tools/perf/tests/builtin-test.c b/tools/perf/tests/builtin-test.c index 778668a2a966..dab83f7042fa 100644 --- a/tools/perf/tests/builtin-test.c +++ b/tools/perf/tests/builtin-test.c @@ -230,6 +230,10 @@ static struct test generic_tests[] = { .func = test__bitmap_print, }, { + .desc = "Test perf hooks", + .func = test__perf_hooks, + }, + { .func = NULL, }, }; diff --git a/tools/perf/tests/perf-hooks.c b/tools/perf/tests/perf-hooks.c new file mode 100644 index 000000000000..9338cb2c25ab --- /dev/null +++ b/tools/perf/tests/perf-hooks.c @@ -0,0 +1,44 @@ +#include <signal.h> +#include <stdlib.h> + +#include "tests.h" +#include "debug.h" +#include "util.h" +#include "perf-hooks.h" + +static void sigsegv_handler(int sig __maybe_unused) +{ + pr_debug("SIGSEGV is observed as expected, try to recover.\n"); + perf_hooks__recover(); + signal(SIGSEGV, SIG_DFL); + raise(SIGSEGV); + exit(-1); +} + +static int hook_flags; + +static void the_hook(void) +{ + int *p = NULL; + + hook_flags = 1234; + + /* Generate a segfault, test perf_hooks__recover */ + *p = 0; +} + +int test__perf_hooks(int subtest __maybe_unused) +{ + signal(SIGSEGV, sigsegv_handler); + perf_hooks__set_hook("test", the_hook); + perf_hooks__invoke_test(); + + /* hook is triggered? */ + if (hook_flags != 1234) + return TEST_FAIL; + + /* the buggy hook is removed? */ + if (perf_hooks__get_hook("test")) + return TEST_FAIL; + return TEST_OK; +} diff --git a/tools/perf/tests/tests.h b/tools/perf/tests/tests.h index 7c196c585472..3a1f98f291ba 100644 --- a/tools/perf/tests/tests.h +++ b/tools/perf/tests/tests.h @@ -91,6 +91,7 @@ int test__cpu_map_print(int subtest); int test__sdt_event(int subtest); int test__is_printable_array(int subtest); int test__bitmap_print(int subtest); +int test__perf_hooks(int subtest); #if defined(__arm__) || defined(__aarch64__) #ifdef HAVE_DWARF_UNWIND_SUPPORT diff --git a/tools/perf/util/Build b/tools/perf/util/Build index 1dc67efad634..b2a47aac8d1c 100644 --- a/tools/perf/util/Build +++ b/tools/perf/util/Build @@ -123,6 +123,8 @@ libperf-$(CONFIG_LIBELF) += genelf.o libperf-$(CONFIG_DWARF) += genelf_debug.o endif +libperf-y += perf-hooks.o + CFLAGS_config.o += -DETC_PERFCONFIG="BUILD_STR($(ETC_PERFCONFIG_SQ))" # avoid compiler warnings in 32-bit mode CFLAGS_genelf_debug.o += -Wno-packed diff --git a/tools/perf/util/perf-hooks-list.h b/tools/perf/util/perf-hooks-list.h new file mode 100644 index 000000000000..2867c07ee84e --- /dev/null +++ b/tools/perf/util/perf-hooks-list.h @@ -0,0 +1,3 @@ +PERF_HOOK(record_start) +PERF_HOOK(record_end) +PERF_HOOK(test) diff --git a/tools/perf/util/perf-hooks.c b/tools/perf/util/perf-hooks.c new file mode 100644 index 000000000000..4ce88e37dd63 --- /dev/null +++ b/tools/perf/util/perf-hooks.c @@ -0,0 +1,84 @@ +/* + * perf_hooks.c + * + * Copyright (C) 2016 Wang Nan <wangnan0@huawei.com> + * Copyright (C) 2016 Huawei Inc. + */ + +#include <errno.h> +#include <stdlib.h> +#include <setjmp.h> +#include <linux/err.h> +#include "util/util.h" +#include "util/debug.h" +#include "util/perf-hooks.h" + +static sigjmp_buf jmpbuf; +static const struct perf_hook_desc *current_perf_hook; + +void perf_hooks__invoke(const struct perf_hook_desc *desc) +{ + if (!(desc && desc->p_hook_func && *desc->p_hook_func)) + return; + + if (sigsetjmp(jmpbuf, 1)) { + pr_warning("Fatal error (SEGFAULT) in perf hook '%s'\n", + desc->hook_name); + *(current_perf_hook->p_hook_func) = NULL; + } else { + current_perf_hook = desc; + (**desc->p_hook_func)(); + } + current_perf_hook = NULL; +} + +void perf_hooks__recover(void) +{ + if (current_perf_hook) + siglongjmp(jmpbuf, 1); +} + +#define PERF_HOOK(name) \ +perf_hook_func_t __perf_hook_func_##name = NULL; \ +struct perf_hook_desc __perf_hook_desc_##name = \ + {.hook_name = #name, .p_hook_func = &__perf_hook_func_##name}; +#include "perf-hooks-list.h" +#undef PERF_HOOK + +#define PERF_HOOK(name) \ + &__perf_hook_desc_##name, + +static struct perf_hook_desc *perf_hooks[] = { +#include "perf-hooks-list.h" +}; +#undef PERF_HOOK + +int perf_hooks__set_hook(const char *hook_name, + perf_hook_func_t hook_func) +{ + unsigned int i; + + for (i = 0; i < ARRAY_SIZE(perf_hooks); i++) { + if (strcmp(hook_name, perf_hooks[i]->hook_name) != 0) + continue; + + if (*(perf_hooks[i]->p_hook_func)) + pr_warning("Overwrite existing hook: %s\n", hook_name); + *(perf_hooks[i]->p_hook_func) = hook_func; + return 0; + } + return -ENOENT; +} + +perf_hook_func_t perf_hooks__get_hook(const char *hook_name) +{ + unsigned int i; + + for (i = 0; i < ARRAY_SIZE(perf_hooks); i++) { + if (strcmp(hook_name, perf_hooks[i]->hook_name) != 0) + continue; + + return *(perf_hooks[i]->p_hook_func); + } + return ERR_PTR(-ENOENT); +} diff --git a/tools/perf/util/perf-hooks.h b/tools/perf/util/perf-hooks.h new file mode 100644 index 000000000000..1d482b26b4b9 --- /dev/null +++ b/tools/perf/util/perf-hooks.h @@ -0,0 +1,37 @@ +#ifndef PERF_UTIL_PERF_HOOKS_H +#define PERF_UTIL_PERF_HOOKS_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void (*perf_hook_func_t)(void); +struct perf_hook_desc { + const char * const hook_name; + perf_hook_func_t * const p_hook_func; +}; + +extern void perf_hooks__invoke(const struct perf_hook_desc *); +extern void perf_hooks__recover(void); + +#define PERF_HOOK(name) \ +extern struct perf_hook_desc __perf_hook_desc_##name; \ +static inline void perf_hooks__invoke_##name(void) \ +{ \ + perf_hooks__invoke(&__perf_hook_desc_##name); \ +} + +#include "perf-hooks-list.h" +#undef PERF_HOOK + +extern int +perf_hooks__set_hook(const char *hook_name, + perf_hook_func_t hook_func); + +extern perf_hook_func_t +perf_hooks__get_hook(const char *hook_name); + +#ifdef __cplusplus +} +#endif +#endif -- 2.9.3 ^ permalink raw reply related [flat|nested] 53+ messages in thread
* [PATCH 09/19] perf test: Remove "test" and similar strings from test descriptions 2016-12-01 18:02 [GIT PULL 00/19] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (7 preceding siblings ...) 2016-12-01 18:02 ` [PATCH 08/19] perf tools: Introduce perf hooks Arnaldo Carvalho de Melo @ 2016-12-01 18:02 ` Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 10/19] perf kmem stat: Track memory freed Arnaldo Carvalho de Melo ` (10 subsequent siblings) 19 siblings, 0 replies; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-12-01 18:02 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter, David Ahern, Jiri Olsa, Namhyung Kim, Wang Nan From: Arnaldo Carvalho de Melo <acme@redhat.com> Having "test" in almost all test descriptions is redundant, simplify it removing and rewriting tests with such descriptions. End result: # perf test 1: vmlinux symtab matches kallsyms : Ok 2: Detect openat syscall event : Ok 3: Detect openat syscall event on all cpus : Ok 4: Read samples using the mmap interface : Ok 5: Parse event definition strings : Ok 6: PERF_RECORD_* events & perf_sample fields : Ok 7: Parse perf pmu format : Ok 8: DSO data read : Ok 9: DSO data cache : Ok 10: DSO data reopen : Ok 11: Roundtrip evsel->name : Ok 12: Parse sched tracepoints fields : Ok 13: syscalls:sys_enter_openat event fields : Ok 14: Setup struct perf_event_attr : Ok 15: Match and link multiple hists : Ok 16: 'import perf' in python : Ok 17: Breakpoint overflow signal handler : Ok 18: Breakpoint overflow sampling : Ok 19: Number of exit events of a simple workload : Ok 20: Software clock events period values : Ok 21: Object code reading : Ok 22: Sample parsing : Ok 23: Use a dummy software event to keep tracking: Ok 24: Parse with no sample_id_all bit set : Ok 25: Filter hist entries : Ok 26: Lookup mmap thread : Ok 27: Share thread mg : Ok 28: Sort output of hist entries : Ok 29: Cumulate child hist entries : Ok 30: Track with sched_switch : Ok 31: Filter fds with revents mask in a fdarray : Ok 32: Add fd to a fdarray, making it autogrow : Ok 33: kmod_path__parse : Ok 34: Thread map : Ok 35: LLVM search and compile : 35.1: Basic BPF llvm compile : Ok 35.2: kbuild searching : Ok 35.3: Compile source for BPF prologue generation: Ok 35.4: Compile source for BPF relocation : Ok 36: Session topology : Ok 37: BPF filter : 37.1: Basic BPF filtering : Ok 37.2: BPF prologue generation : Ok 37.3: BPF relocation checker : Ok 38: Synthesize thread map : Ok 39: Synthesize cpu map : Ok 40: Synthesize stat config : Ok 41: Synthesize stat : Ok 42: Synthesize stat round : Ok 43: Synthesize attr update : Ok 44: Event times : Ok 45: Read backward ring buffer : Ok 46: Print cpu map : Ok 47: Probe SDT events : Ok 48: is_printable_array : Ok 49: Print bitmap : Ok 50: perf hooks : Ok 51: x86 rdpmc : Ok 52: Convert perf time to TSC : Ok 53: DWARF unwind : Ok 54: x86 instruction decoder - new instructions : Ok 55: Intel cqm nmi context read : Skip # Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/n/tip-rx2lbfcrrio2yx1fxcljqy0e@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/arch/x86/tests/arch-tests.c | 10 ++-- tools/perf/tests/bpf.c | 6 +-- tools/perf/tests/builtin-test.c | 94 +++++++++++++++++----------------- tools/perf/tests/llvm.c | 8 +-- 4 files changed, 59 insertions(+), 59 deletions(-) diff --git a/tools/perf/arch/x86/tests/arch-tests.c b/tools/perf/arch/x86/tests/arch-tests.c index 2218cb64f840..99d66191e56c 100644 --- a/tools/perf/arch/x86/tests/arch-tests.c +++ b/tools/perf/arch/x86/tests/arch-tests.c @@ -4,27 +4,27 @@ struct test arch_tests[] = { { - .desc = "x86 rdpmc test", + .desc = "x86 rdpmc", .func = test__rdpmc, }, { - .desc = "Test converting perf time to TSC", + .desc = "Convert perf time to TSC", .func = test__perf_time_to_tsc, }, #ifdef HAVE_DWARF_UNWIND_SUPPORT { - .desc = "Test dwarf unwind", + .desc = "DWARF unwind", .func = test__dwarf_unwind, }, #endif #ifdef HAVE_AUXTRACE_SUPPORT { - .desc = "Test x86 instruction decoder - new instructions", + .desc = "x86 instruction decoder - new instructions", .func = test__insn_x86, }, #endif { - .desc = "Test intel cqm nmi context read", + .desc = "Intel cqm nmi context read", .func = test__intel_cqm_count_nmi_context, }, { diff --git a/tools/perf/tests/bpf.c b/tools/perf/tests/bpf.c index 8f0298aff222..92343f43e44a 100644 --- a/tools/perf/tests/bpf.c +++ b/tools/perf/tests/bpf.c @@ -57,7 +57,7 @@ static struct { } bpf_testcase_table[] = { { LLVM_TESTCASE_BASE, - "Test basic BPF filtering", + "Basic BPF filtering", "[basic_bpf_test]", "fix 'perf test LLVM' first", "load bpf object failed", @@ -67,7 +67,7 @@ static struct { #ifdef HAVE_BPF_PROLOGUE { LLVM_TESTCASE_BPF_PROLOGUE, - "Test BPF prologue generation", + "BPF prologue generation", "[bpf_prologue_test]", "fix kbuild first", "check your vmlinux setting?", @@ -77,7 +77,7 @@ static struct { #endif { LLVM_TESTCASE_BPF_RELOCATION, - "Test BPF relocation checker", + "BPF relocation checker", "[bpf_relocation_test]", "fix 'perf test LLVM' first", "libbpf error when dealing with relocation", diff --git a/tools/perf/tests/builtin-test.c b/tools/perf/tests/builtin-test.c index dab83f7042fa..d1bec0444be7 100644 --- a/tools/perf/tests/builtin-test.c +++ b/tools/perf/tests/builtin-test.c @@ -28,119 +28,119 @@ static struct test generic_tests[] = { .func = test__vmlinux_matches_kallsyms, }, { - .desc = "detect openat syscall event", + .desc = "Detect openat syscall event", .func = test__openat_syscall_event, }, { - .desc = "detect openat syscall event on all cpus", + .desc = "Detect openat syscall event on all cpus", .func = test__openat_syscall_event_on_all_cpus, }, { - .desc = "read samples using the mmap interface", + .desc = "Read samples using the mmap interface", .func = test__basic_mmap, }, { - .desc = "parse events tests", + .desc = "Parse event definition strings", .func = test__parse_events, }, { - .desc = "Validate PERF_RECORD_* events & perf_sample fields", + .desc = "PERF_RECORD_* events & perf_sample fields", .func = test__PERF_RECORD, }, { - .desc = "Test perf pmu format parsing", + .desc = "Parse perf pmu format", .func = test__pmu, }, { - .desc = "Test dso data read", + .desc = "DSO data read", .func = test__dso_data, }, { - .desc = "Test dso data cache", + .desc = "DSO data cache", .func = test__dso_data_cache, }, { - .desc = "Test dso data reopen", + .desc = "DSO data reopen", .func = test__dso_data_reopen, }, { - .desc = "roundtrip evsel->name check", + .desc = "Roundtrip evsel->name", .func = test__perf_evsel__roundtrip_name_test, }, { - .desc = "Check parsing of sched tracepoints fields", + .desc = "Parse sched tracepoints fields", .func = test__perf_evsel__tp_sched_test, }, { - .desc = "Generate and check syscalls:sys_enter_openat event fields", + .desc = "syscalls:sys_enter_openat event fields", .func = test__syscall_openat_tp_fields, }, { - .desc = "struct perf_event_attr setup", + .desc = "Setup struct perf_event_attr", .func = test__attr, }, { - .desc = "Test matching and linking multiple hists", + .desc = "Match and link multiple hists", .func = test__hists_link, }, { - .desc = "Try 'import perf' in python, checking link problems", + .desc = "'import perf' in python", .func = test__python_use, }, { - .desc = "Test breakpoint overflow signal handler", + .desc = "Breakpoint overflow signal handler", .func = test__bp_signal, }, { - .desc = "Test breakpoint overflow sampling", + .desc = "Breakpoint overflow sampling", .func = test__bp_signal_overflow, }, { - .desc = "Test number of exit event of a simple workload", + .desc = "Number of exit events of a simple workload", .func = test__task_exit, }, { - .desc = "Test software clock events have valid period values", + .desc = "Software clock events period values", .func = test__sw_clock_freq, }, { - .desc = "Test object code reading", + .desc = "Object code reading", .func = test__code_reading, }, { - .desc = "Test sample parsing", + .desc = "Sample parsing", .func = test__sample_parsing, }, { - .desc = "Test using a dummy software event to keep tracking", + .desc = "Use a dummy software event to keep tracking", .func = test__keep_tracking, }, { - .desc = "Test parsing with no sample_id_all bit set", + .desc = "Parse with no sample_id_all bit set", .func = test__parse_no_sample_id_all, }, { - .desc = "Test filtering hist entries", + .desc = "Filter hist entries", .func = test__hists_filter, }, { - .desc = "Test mmap thread lookup", + .desc = "Lookup mmap thread", .func = test__mmap_thread_lookup, }, { - .desc = "Test thread mg sharing", + .desc = "Share thread mg", .func = test__thread_mg_share, }, { - .desc = "Test output sorting of hist entries", + .desc = "Sort output of hist entries", .func = test__hists_output, }, { - .desc = "Test cumulation of child hist entries", + .desc = "Cumulate child hist entries", .func = test__hists_cumulate, }, { - .desc = "Test tracking with sched_switch", + .desc = "Track with sched_switch", .func = test__switch_tracking, }, { @@ -152,15 +152,15 @@ static struct test generic_tests[] = { .func = test__fdarray__add, }, { - .desc = "Test kmod_path__parse function", + .desc = "kmod_path__parse", .func = test__kmod_path__parse, }, { - .desc = "Test thread map", + .desc = "Thread map", .func = test__thread_map, }, { - .desc = "Test LLVM searching and compiling", + .desc = "LLVM search and compile", .func = test__llvm, .subtest = { .skip_if_fail = true, @@ -169,11 +169,11 @@ static struct test generic_tests[] = { }, }, { - .desc = "Test topology in session", + .desc = "Session topology", .func = test_session_topology, }, { - .desc = "Test BPF filter", + .desc = "BPF filter", .func = test__bpf, .subtest = { .skip_if_fail = true, @@ -182,55 +182,55 @@ static struct test generic_tests[] = { }, }, { - .desc = "Test thread map synthesize", + .desc = "Synthesize thread map", .func = test__thread_map_synthesize, }, { - .desc = "Test cpu map synthesize", + .desc = "Synthesize cpu map", .func = test__cpu_map_synthesize, }, { - .desc = "Test stat config synthesize", + .desc = "Synthesize stat config", .func = test__synthesize_stat_config, }, { - .desc = "Test stat synthesize", + .desc = "Synthesize stat", .func = test__synthesize_stat, }, { - .desc = "Test stat round synthesize", + .desc = "Synthesize stat round", .func = test__synthesize_stat_round, }, { - .desc = "Test attr update synthesize", + .desc = "Synthesize attr update", .func = test__event_update, }, { - .desc = "Test events times", + .desc = "Event times", .func = test__event_times, }, { - .desc = "Test backward reading from ring buffer", + .desc = "Read backward ring buffer", .func = test__backward_ring_buffer, }, { - .desc = "Test cpu map print", + .desc = "Print cpu map", .func = test__cpu_map_print, }, { - .desc = "Test SDT event probing", + .desc = "Probe SDT events", .func = test__sdt_event, }, { - .desc = "Test is_printable_array function", + .desc = "is_printable_array", .func = test__is_printable_array, }, { - .desc = "Test bitmap print", + .desc = "Print bitmap", .func = test__bitmap_print, }, { - .desc = "Test perf hooks", + .desc = "perf hooks", .func = test__perf_hooks, }, { diff --git a/tools/perf/tests/llvm.c b/tools/perf/tests/llvm.c index b798a4bfd238..02a33ebcd992 100644 --- a/tools/perf/tests/llvm.c +++ b/tools/perf/tests/llvm.c @@ -34,19 +34,19 @@ static struct { } bpf_source_table[__LLVM_TESTCASE_MAX] = { [LLVM_TESTCASE_BASE] = { .source = test_llvm__bpf_base_prog, - .desc = "Basic BPF llvm compiling test", + .desc = "Basic BPF llvm compile", }, [LLVM_TESTCASE_KBUILD] = { .source = test_llvm__bpf_test_kbuild_prog, - .desc = "Test kbuild searching", + .desc = "kbuild searching", }, [LLVM_TESTCASE_BPF_PROLOGUE] = { .source = test_llvm__bpf_test_prologue_prog, - .desc = "Compile source for BPF prologue generation test", + .desc = "Compile source for BPF prologue generation", }, [LLVM_TESTCASE_BPF_RELOCATION] = { .source = test_llvm__bpf_test_relocation, - .desc = "Compile source for BPF relocation test", + .desc = "Compile source for BPF relocation", .should_load_fail = true, }, }; -- 2.9.3 ^ permalink raw reply related [flat|nested] 53+ messages in thread
* [PATCH 10/19] perf kmem stat: Track memory freed 2016-12-01 18:02 [GIT PULL 00/19] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (8 preceding siblings ...) 2016-12-01 18:02 ` [PATCH 09/19] perf test: Remove "test" and similar strings from test descriptions Arnaldo Carvalho de Melo @ 2016-12-01 18:02 ` Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 11/19] perf script: Add option to stop printing callchain Arnaldo Carvalho de Melo ` (9 subsequent siblings) 19 siblings, 0 replies; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-12-01 18:02 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, David Ahern, David Ahern, Jiri Olsa, Namhyung Kim, Peter Zijlstra, Arnaldo Carvalho de Melo From: David Ahern <dsa@cumulusnetworks.com> Track freed memory as well as allocations and show the net in the summary. Committer notes: Testing it: # perf kmem record usleep 1 [ perf record: Woken up 0 times to write data ] [ perf record: Captured and wrote 1.626 MB perf.data (4208 samples) ] [root@jouet ~]# perf kmem stat --slab SUMMARY (SLAB allocator) ======================== Total bytes requested: 234,011 Total bytes allocated: 234,504 Total bytes freed: 213,328 <------ Net total bytes allocated: 21,176 Total bytes wasted on internal fragmentation: 493 Internal fragmentation: 0.210231% Cross CPU allocations: 4/1,963 # Signed-off-by: David Ahern <dsahern@gmail.com> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: David Ahern <dsahern@gmail.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/1480110133-37039-1-git-send-email-dsahern@gmail.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/builtin-kmem.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tools/perf/builtin-kmem.c b/tools/perf/builtin-kmem.c index d426dcb18ce9..7fd6f1e1e293 100644 --- a/tools/perf/builtin-kmem.c +++ b/tools/perf/builtin-kmem.c @@ -49,6 +49,7 @@ struct alloc_stat { u64 ptr; u64 bytes_req; u64 bytes_alloc; + u64 last_alloc; u32 hit; u32 pingpong; @@ -62,7 +63,7 @@ static struct rb_root root_alloc_sorted; static struct rb_root root_caller_stat; static struct rb_root root_caller_sorted; -static unsigned long total_requested, total_allocated; +static unsigned long total_requested, total_allocated, total_freed; static unsigned long nr_allocs, nr_cross_allocs; static int insert_alloc_stat(unsigned long call_site, unsigned long ptr, @@ -105,6 +106,8 @@ static int insert_alloc_stat(unsigned long call_site, unsigned long ptr, } data->call_site = call_site; data->alloc_cpu = cpu; + data->last_alloc = bytes_alloc; + return 0; } @@ -223,6 +226,8 @@ static int perf_evsel__process_free_event(struct perf_evsel *evsel, if (!s_alloc) return 0; + total_freed += s_alloc->last_alloc; + if ((short)sample->cpu != s_alloc->alloc_cpu) { s_alloc->pingpong++; @@ -1128,6 +1133,11 @@ static void print_slab_summary(void) printf("\n========================\n"); printf("Total bytes requested: %'lu\n", total_requested); printf("Total bytes allocated: %'lu\n", total_allocated); + printf("Total bytes freed: %'lu\n", total_freed); + if (total_allocated > total_freed) { + printf("Net total bytes allocated: %'lu\n", + total_allocated - total_freed); + } printf("Total bytes wasted on internal fragmentation: %'lu\n", total_allocated - total_requested); printf("Internal fragmentation: %f%%\n", -- 2.9.3 ^ permalink raw reply related [flat|nested] 53+ messages in thread
* [PATCH 11/19] perf script: Add option to stop printing callchain 2016-12-01 18:02 [GIT PULL 00/19] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (9 preceding siblings ...) 2016-12-01 18:02 ` [PATCH 10/19] perf kmem stat: Track memory freed Arnaldo Carvalho de Melo @ 2016-12-01 18:02 ` Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 12/19] perf tools: Add time-based utility functions Arnaldo Carvalho de Melo ` (8 subsequent siblings) 19 siblings, 0 replies; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-12-01 18:02 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, David Ahern, Jiri Olsa, Namhyung Kim, Peter Zijlstra, Arnaldo Carvalho de Melo From: David Ahern <dsa@cumulusnetworks.com> Allow user to specify list of symbols which cause the dump of callchains to stop at that symbol. Committer notes: Testing it: # perf record -ag usleep 1 [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 1.177 MB perf.data (33 samples) ] # # # Without it: # # perf script swapper 0 [000] 9693.370039: 1 cycles:ppp: 2072ad x86_pmu_enable (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 3a29d7 perf_pmu_enable.part.90 (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 3a713a ctx_resched (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 3a76c1 __perf_event_enable (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 3a0390 event_function (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 3a1cff remote_function (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 326978 flush_smp_call_function_queue (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 327413 generic_smp_call_function_single_interrupt (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 249b37 smp_call_function_single_interrupt (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) a04b2c call_function_single_interrupt (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 889427 cpuidle_enter (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 2e534a call_cpuidle (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 2e5730 cpu_startup_entry (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 9f5167 rest_init (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 137ffeb start_kernel ([kernel.vmlinux].init.text) 137f2ca x86_64_start_reservations ([kernel.vmlinux].init.text) 137f419 x86_64_start_kernel ([kernel.vmlinux].init.text) swapper 0 [000] 9693.370044: 1 cycles:ppp: 20ca1b intel_pmu_handle_irq (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 205b0c perf_event_nmi_handler (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 22a14a nmi_handle (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 22a6b3 default_do_nmi (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 22a83c do_nmi (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) a03fb1 end_repeat_nmi (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 3a29d7 perf_pmu_enable.part.90 (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 3a713a ctx_resched (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 3a76c1 __perf_event_enable (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 3a0390 event_function (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 3a1cff remote_function (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 326978 flush_smp_call_function_queue (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 327413 generic_smp_call_function_single_interrupt (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 249b37 smp_call_function_single_interrupt (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) a04b2c call_function_single_interrupt (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 889427 cpuidle_enter (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 2e534a call_cpuidle (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 2e5730 cpu_startup_entry (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 9f5167 rest_init (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 137ffeb start_kernel ([kernel.vmlinux].init.text) 137f2ca x86_64_start_reservations ([kernel.vmlinux].init.text) # # # Using it to see just what are the calls from the 'remote_function' function: # # perf script --stop-bt remote_function swapper 0 [000] 9693.370039: 1 cycles:ppp: 2072ad x86_pmu_enable (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 3a29d7 perf_pmu_enable.part.90 (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 3a713a ctx_resched (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 3a76c1 __perf_event_enable (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 3a0390 event_function (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 3a1cff remote_function (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) swapper 0 [000] 9693.370044: 1 cycles:ppp: 20ca1b intel_pmu_handle_irq (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 205b0c perf_event_nmi_handler (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 22a14a nmi_handle (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 22a6b3 default_do_nmi (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 22a83c do_nmi (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) a03fb1 end_repeat_nmi (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 3a29d7 perf_pmu_enable.part.90 (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 3a713a ctx_resched (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 3a76c1 __perf_event_enable (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 3a0390 event_function (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) 3a1cff remote_function (/usr/lib/debug/lib/modules/4.8.8-300.fc25.x86_64/vmlinux) Signed-off-by: David Ahern <dsa@cumulusnetworks.com> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/1480104021-36275-1-git-send-email-dsahern@gmail.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/Documentation/perf-script.txt | 3 +++ tools/perf/builtin-script.c | 2 ++ tools/perf/util/evsel_fprintf.c | 8 ++++++++ tools/perf/util/symbol.c | 8 ++++++++ tools/perf/util/symbol.h | 6 ++++-- 5 files changed, 25 insertions(+), 2 deletions(-) diff --git a/tools/perf/Documentation/perf-script.txt b/tools/perf/Documentation/perf-script.txt index c01904f388ce..0f6ee09f7256 100644 --- a/tools/perf/Documentation/perf-script.txt +++ b/tools/perf/Documentation/perf-script.txt @@ -212,6 +212,9 @@ OPTIONS --hide-call-graph:: When printing symbols do not display call chain. +--stop-bt:: + Stop display of callgraph at these symbols + -C:: --cpu:: Only report samples for the list of CPUs provided. Multiple CPUs can be provided as a comma-separated list with no space: 0,1. Ranges of diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c index e1daff36d070..066b4bf73780 100644 --- a/tools/perf/builtin-script.c +++ b/tools/perf/builtin-script.c @@ -2151,6 +2151,8 @@ int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused) "system-wide collection from all CPUs"), OPT_STRING('S', "symbols", &symbol_conf.sym_list_str, "symbol[,symbol...]", "only consider these symbols"), + OPT_STRING(0, "stop-bt", &symbol_conf.bt_stop_list_str, "symbol[,symbol...]", + "Stop display of callgraph at these symbols"), OPT_STRING('C', "cpu", &cpu_list, "cpu", "list of cpus to profile"), OPT_STRING('c', "comms", &symbol_conf.comm_list_str, "comm[,comm...]", "only display events for these comms"), diff --git a/tools/perf/util/evsel_fprintf.c b/tools/perf/util/evsel_fprintf.c index 5a6f52284452..6b2925542c0a 100644 --- a/tools/perf/util/evsel_fprintf.c +++ b/tools/perf/util/evsel_fprintf.c @@ -166,6 +166,14 @@ int sample__fprintf_callchain(struct perf_sample *sample, int left_alignment, if (!print_oneline) printed += fprintf(fp, "\n"); + if (symbol_conf.bt_stop_list && + node->sym && + node->sym->name && + strlist__has_entry(symbol_conf.bt_stop_list, + node->sym->name)) { + break; + } + first = false; next: callchain_cursor_advance(cursor); diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c index 420ada9de22f..df2482b2ba45 100644 --- a/tools/perf/util/symbol.c +++ b/tools/perf/util/symbol.c @@ -2032,6 +2032,10 @@ int symbol__init(struct perf_env *env) symbol_conf.sym_list_str, "symbol") < 0) goto out_free_tid_list; + if (setup_list(&symbol_conf.bt_stop_list, + symbol_conf.bt_stop_list_str, "symbol") < 0) + goto out_free_sym_list; + /* * A path to symbols of "/" is identical to "" * reset here for simplicity. @@ -2049,6 +2053,8 @@ int symbol__init(struct perf_env *env) symbol_conf.initialized = true; return 0; +out_free_sym_list: + strlist__delete(symbol_conf.sym_list); out_free_tid_list: intlist__delete(symbol_conf.tid_list); out_free_pid_list: @@ -2064,6 +2070,7 @@ void symbol__exit(void) { if (!symbol_conf.initialized) return; + strlist__delete(symbol_conf.bt_stop_list); strlist__delete(symbol_conf.sym_list); strlist__delete(symbol_conf.dso_list); strlist__delete(symbol_conf.comm_list); @@ -2071,6 +2078,7 @@ void symbol__exit(void) intlist__delete(symbol_conf.pid_list); vmlinux_path__exit(); symbol_conf.sym_list = symbol_conf.dso_list = symbol_conf.comm_list = NULL; + symbol_conf.bt_stop_list = NULL; symbol_conf.initialized = false; } diff --git a/tools/perf/util/symbol.h b/tools/perf/util/symbol.h index 1bcbefc0c325..6c358b7ed336 100644 --- a/tools/perf/util/symbol.h +++ b/tools/perf/util/symbol.h @@ -132,14 +132,16 @@ struct symbol_conf { *pid_list_str, *tid_list_str, *sym_list_str, - *col_width_list_str; + *col_width_list_str, + *bt_stop_list_str; struct strlist *dso_list, *comm_list, *sym_list, *dso_from_list, *dso_to_list, *sym_from_list, - *sym_to_list; + *sym_to_list, + *bt_stop_list; struct intlist *pid_list, *tid_list; const char *symfs; -- 2.9.3 ^ permalink raw reply related [flat|nested] 53+ messages in thread
* [PATCH 12/19] perf tools: Add time-based utility functions 2016-12-01 18:02 [GIT PULL 00/19] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (10 preceding siblings ...) 2016-12-01 18:02 ` [PATCH 11/19] perf script: Add option to stop printing callchain Arnaldo Carvalho de Melo @ 2016-12-01 18:02 ` Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 13/19] perf tools: Move parse_nsec_time to time-utils.c Arnaldo Carvalho de Melo ` (7 subsequent siblings) 19 siblings, 0 replies; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-12-01 18:02 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, David Ahern, David Ahern, Jiri Olsa, Peter Zijlstra, Arnaldo Carvalho de Melo From: David Ahern <dsa@cumulusnetworks.com> Add function to parse a user time string of the form <start>,<stop> where start and stop are time in sec.nsec format. Both start and stop times are optional. Add function to determine if a sample time is within a given time time window of interest. Signed-off-by: David Ahern <dsahern@gmail.com> Acked-by: Namhyung Kim <namhyung@kernel.org> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/1480439746-42695-2-git-send-email-dsahern@gmail.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/util/Build | 1 + tools/perf/util/time-utils.c | 85 ++++++++++++++++++++++++++++++++++++++++++++ tools/perf/util/time-utils.h | 12 +++++++ 3 files changed, 98 insertions(+) create mode 100644 tools/perf/util/time-utils.c create mode 100644 tools/perf/util/time-utils.h diff --git a/tools/perf/util/Build b/tools/perf/util/Build index b2a47aac8d1c..bdad82a9812d 100644 --- a/tools/perf/util/Build +++ b/tools/perf/util/Build @@ -87,6 +87,7 @@ libperf-y += help-unknown-cmd.o libperf-y += mem-events.o libperf-y += vsprintf.o libperf-y += drv_configs.o +libperf-y += time-utils.o libperf-$(CONFIG_LIBBPF) += bpf-loader.o libperf-$(CONFIG_BPF_PROLOGUE) += bpf-prologue.o diff --git a/tools/perf/util/time-utils.c b/tools/perf/util/time-utils.c new file mode 100644 index 000000000000..0443b2afd0cf --- /dev/null +++ b/tools/perf/util/time-utils.c @@ -0,0 +1,85 @@ +#include <string.h> +#include <sys/time.h> +#include <time.h> +#include <errno.h> +#include <inttypes.h> + +#include "perf.h" +#include "debug.h" +#include "time-utils.h" +#include "util.h" + +static int parse_timestr_sec_nsec(struct perf_time_interval *ptime, + char *start_str, char *end_str) +{ + if (start_str && (*start_str != '\0') && + (parse_nsec_time(start_str, &ptime->start) != 0)) { + return -1; + } + + if (end_str && (*end_str != '\0') && + (parse_nsec_time(end_str, &ptime->end) != 0)) { + return -1; + } + + return 0; +} + +int perf_time__parse_str(struct perf_time_interval *ptime, const char *ostr) +{ + char *start_str, *end_str; + char *d, *str; + int rc = 0; + + if (ostr == NULL || *ostr == '\0') + return 0; + + /* copy original string because we need to modify it */ + str = strdup(ostr); + if (str == NULL) + return -ENOMEM; + + ptime->start = 0; + ptime->end = 0; + + /* str has the format: <start>,<stop> + * variations: <start>, + * ,<stop> + * , + */ + start_str = str; + d = strchr(start_str, ','); + if (d) { + *d = '\0'; + ++d; + } + end_str = d; + + rc = parse_timestr_sec_nsec(ptime, start_str, end_str); + + free(str); + + /* make sure end time is after start time if it was given */ + if (rc == 0 && ptime->end && ptime->end < ptime->start) + return -EINVAL; + + pr_debug("start time %" PRIu64 ", ", ptime->start); + pr_debug("end time %" PRIu64 "\n", ptime->end); + + return rc; +} + +bool perf_time__skip_sample(struct perf_time_interval *ptime, u64 timestamp) +{ + /* if time is not set don't drop sample */ + if (timestamp == 0) + return false; + + /* otherwise compare sample time to time window */ + if ((ptime->start && timestamp < ptime->start) || + (ptime->end && timestamp > ptime->end)) { + return true; + } + + return false; +} diff --git a/tools/perf/util/time-utils.h b/tools/perf/util/time-utils.h new file mode 100644 index 000000000000..8f3e0e370be8 --- /dev/null +++ b/tools/perf/util/time-utils.h @@ -0,0 +1,12 @@ +#ifndef _TIME_UTILS_H_ +#define _TIME_UTILS_H_ + +struct perf_time_interval { + u64 start, end; +}; + +int perf_time__parse_str(struct perf_time_interval *ptime, const char *ostr); + +bool perf_time__skip_sample(struct perf_time_interval *ptime, u64 timestamp); + +#endif -- 2.9.3 ^ permalink raw reply related [flat|nested] 53+ messages in thread
* [PATCH 13/19] perf tools: Move parse_nsec_time to time-utils.c 2016-12-01 18:02 [GIT PULL 00/19] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (11 preceding siblings ...) 2016-12-01 18:02 ` [PATCH 12/19] perf tools: Add time-based utility functions Arnaldo Carvalho de Melo @ 2016-12-01 18:02 ` Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 14/19] perf script: Add option to specify time window of interest Arnaldo Carvalho de Melo ` (6 subsequent siblings) 19 siblings, 0 replies; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-12-01 18:02 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, David Ahern, David Ahern, Jiri Olsa, Peter Zijlstra, Arnaldo Carvalho de Melo From: David Ahern <dsa@cumulusnetworks.com> Code move only; no functional change intended. Committer notes: Fix the build on Ubuntu 16.04 x86-64 cross-compiling to S/390, with this set of auto-detected features: ... dwarf: [ on ] ... dwarf_getlocations: [ on ] ... glibc: [ on ] ... gtk2: [ OFF ] ... libaudit: [ OFF ] ... libbfd: [ OFF ] ... libelf: [ on ] ... libnuma: [ OFF ] ... numa_num_possible_cpus: [ OFF ] ... libperl: [ OFF ] ... libpython: [ OFF ] ... libslang: [ OFF ] ... libcrypto: [ OFF ] ... libunwind: [ OFF ] ... libdw-dwarf-unwind: [ on ] ... zlib: [ on ] ... lzma: [ OFF ] ... get_cpuid: [ OFF ] ... bpf: [ on ] Where it was failing with: CC /tmp/build/perf/util/time-utils.o util/time-utils.c: In function 'parse_nsec_time': util/time-utils.c:17:13: error: implicit declaration of function 'strtoul' [-Werror=implicit-function-declaration] time_sec = strtoul(str, &end, 10); ^ util/time-utils.c:17:2: error: nested extern declaration of 'strtoul' [-Werror=nested-externs] time_sec = strtoul(str, &end, 10); ^ util/time-utils.c: In function 'perf_time__parse_str': util/time-utils.c:93:2: error: implicit declaration of function 'free' [-Werror=implicit-function-declaration] free(str); ^ util/time-utils.c:93:2: error: incompatible implicit declaration of built-in function 'free' [-Werror] util/time-utils.c:93:2: note: include '<stdlib.h>' or provide a declaration of 'free' Do as suggested and add a '#include <stdlib.h>' to get the free() and strtoul() declarations and fix the build. Signed-off-by: David Ahern <dsahern@gmail.com> Acked-by: Namhyung Kim <namhyung@kernel.org> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/1480439746-42695-3-git-send-email-dsahern@gmail.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/util/time-utils.c | 36 +++++++++++++++++++++++++++++++++++- tools/perf/util/time-utils.h | 2 ++ tools/perf/util/util.c | 33 --------------------------------- tools/perf/util/util.h | 2 -- 4 files changed, 37 insertions(+), 36 deletions(-) diff --git a/tools/perf/util/time-utils.c b/tools/perf/util/time-utils.c index 0443b2afd0cf..d1b21c72206d 100644 --- a/tools/perf/util/time-utils.c +++ b/tools/perf/util/time-utils.c @@ -1,5 +1,7 @@ +#include <stdlib.h> #include <string.h> #include <sys/time.h> +#include <linux/time64.h> #include <time.h> #include <errno.h> #include <inttypes.h> @@ -7,7 +9,39 @@ #include "perf.h" #include "debug.h" #include "time-utils.h" -#include "util.h" + +int parse_nsec_time(const char *str, u64 *ptime) +{ + u64 time_sec, time_nsec; + char *end; + + time_sec = strtoul(str, &end, 10); + if (*end != '.' && *end != '\0') + return -1; + + if (*end == '.') { + int i; + char nsec_buf[10]; + + if (strlen(++end) > 9) + return -1; + + strncpy(nsec_buf, end, 9); + nsec_buf[9] = '\0'; + + /* make it nsec precision */ + for (i = strlen(nsec_buf); i < 9; i++) + nsec_buf[i] = '0'; + + time_nsec = strtoul(nsec_buf, &end, 10); + if (*end != '\0') + return -1; + } else + time_nsec = 0; + + *ptime = time_sec * NSEC_PER_SEC + time_nsec; + return 0; +} static int parse_timestr_sec_nsec(struct perf_time_interval *ptime, char *start_str, char *end_str) diff --git a/tools/perf/util/time-utils.h b/tools/perf/util/time-utils.h index 8f3e0e370be8..c1f197c4af6c 100644 --- a/tools/perf/util/time-utils.h +++ b/tools/perf/util/time-utils.h @@ -5,6 +5,8 @@ struct perf_time_interval { u64 start, end; }; +int parse_nsec_time(const char *str, u64 *ptime); + int perf_time__parse_str(struct perf_time_interval *ptime, const char *ostr); bool perf_time__skip_sample(struct perf_time_interval *ptime, u64 timestamp); diff --git a/tools/perf/util/util.c b/tools/perf/util/util.c index 67ac765da27a..9ddd98827d12 100644 --- a/tools/perf/util/util.c +++ b/tools/perf/util/util.c @@ -400,39 +400,6 @@ void sighandler_dump_stack(int sig) raise(sig); } -int parse_nsec_time(const char *str, u64 *ptime) -{ - u64 time_sec, time_nsec; - char *end; - - time_sec = strtoul(str, &end, 10); - if (*end != '.' && *end != '\0') - return -1; - - if (*end == '.') { - int i; - char nsec_buf[10]; - - if (strlen(++end) > 9) - return -1; - - strncpy(nsec_buf, end, 9); - nsec_buf[9] = '\0'; - - /* make it nsec precision */ - for (i = strlen(nsec_buf); i < 9; i++) - nsec_buf[i] = '0'; - - time_nsec = strtoul(nsec_buf, &end, 10); - if (*end != '\0') - return -1; - } else - time_nsec = 0; - - *ptime = time_sec * NSEC_PER_SEC + time_nsec; - return 0; -} - int timestamp__scnprintf_usec(u64 timestamp, char *buf, size_t sz) { u64 sec = timestamp / NSEC_PER_SEC; diff --git a/tools/perf/util/util.h b/tools/perf/util/util.h index 79662d67891e..1d639e38aa82 100644 --- a/tools/perf/util/util.h +++ b/tools/perf/util/util.h @@ -179,8 +179,6 @@ static inline void *zalloc(size_t size) #undef tolower #undef toupper -int parse_nsec_time(const char *str, u64 *ptime); - extern unsigned char sane_ctype[256]; #define GIT_SPACE 0x01 #define GIT_DIGIT 0x02 -- 2.9.3 ^ permalink raw reply related [flat|nested] 53+ messages in thread
* [PATCH 14/19] perf script: Add option to specify time window of interest 2016-12-01 18:02 [GIT PULL 00/19] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (12 preceding siblings ...) 2016-12-01 18:02 ` [PATCH 13/19] perf tools: Move parse_nsec_time to time-utils.c Arnaldo Carvalho de Melo @ 2016-12-01 18:02 ` Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 15/19] perf sched timehist: " Arnaldo Carvalho de Melo ` (5 subsequent siblings) 19 siblings, 0 replies; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-12-01 18:02 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, David Ahern, David Ahern, Jiri Olsa, Peter Zijlstra, Arnaldo Carvalho de Melo From: David Ahern <dsa@cumulusnetworks.com> Add option to allow user to control analysis window. e.g., collect data for some amount of time and analyze a segment of interest within that window. Committer notes: Testing it: # perf evlist -v cycles:ppp: size: 112, { sample_period, sample_freq }: 4000, sample_type: IP|TID|TIME|CALLCHAIN|CPU|PERIOD, disabled: 1, inherit: 1, mmap: 1, comm: 1, freq: 1, task: 1, precise_ip: 3, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1 # # perf script --hide-call-graph | head -15 swapper 0 [0] 9693.370039: 1 cycles:ppp: ffffffffb90072ad x86_pmu_enable (.../4.8.8-300.fc25.x86_64/vmlinux) swapper 0 [0] 9693.370044: 1 cycles:ppp: ffffffffb900ca1b intel_pmu_handle_irq (.../4.8.8-300.fc25.x86_64/vmlinux) swapper 0 [0] 9693.370046: 7 cycles:ppp: ffffffffb902fd93 native_sched_clock (.../4.8.8-300.fc25.x86_64/vmlinux) swapper 0 [0] 9693.370048: 126 cycles:ppp: ffffffffb902fd93 native_sched_clock (.../4.8.8-300.fc25.x86_64/vmlinux) swapper 0 [0] 9693.370049: 2701 cycles:ppp: ffffffffb902fd93 native_sched_clock (.../4.8.8-300.fc25.x86_64/vmlinux) swapper 0 [0] 9693.370051: 58823 cycles:ppp: ffffffffb90cd2e0 idle_cpu (.../4.8.8-300.fc25.x86_64/vmlinux) swapper 0 [1] 9693.370059: 1 cycles:ppp: ffffffffb91a713a ctx_resched (.../4.8.8-300.fc25.x86_64/vmlinux) swapper 0 [1] 9693.370062: 1 cycles:ppp: ffffffffb900ca1b intel_pmu_handle_irq (.../4.8.8-300.fc25.x86_64/vmlinux) swapper 0 [1] 9693.370064: 13 cycles:ppp: ffffffffb902fd93 native_sched_clock (.../4.8.8-300.fc25.x86_64/vmlinux) swapper 0 [1] 9693.370065: 250 cycles:ppp: ffffffffb902fd93 native_sched_clock (.../4.8.8-300.fc25.x86_64/vmlinux) swapper 0 [1] 9693.370067: 5269 cycles:ppp: ffffffffb902fe79 sched_clock (.../4.8.8-300.fc25.x86_64/vmlinux) swapper 0 [1] 9693.370069: 114602 cycles:ppp: ffffffffb90c1c5a atomic_notifier_call_chain (.../4.8.8-300.fc25.x86_64/vmlinux) perf 5124 [2] 9693.370076: 1 cycles:ppp: ffffffffb91a76c1 __perf_event_enable (.../4.8.8-300.fc25.x86_64/vmlinux) perf 5124 [2] 9693.370091: 1 cycles:ppp: ffffffffb900ca1b intel_pmu_handle_irq (.../4.8.8-300.fc25.x86_64/vmlinux) perf 5124 [2] 9693.370095: 3 cycles:ppp: ffffffffb902fd93 native_sched_clock (.../4.8.8-300.fc25.x86_64/vmlinux) # # perf script --hide-call-graph --time ,9693.370048 swapper 0 [0] 9693.370039: 1 cycles:ppp: ffffffffb90072ad x86_pmu_enable (.../4.8.8-300.fc25.x86_64/vmlinux) swapper 0 [0] 9693.370044: 1 cycles:ppp: ffffffffb900ca1b intel_pmu_handle_irq (.../4.8.8-300.fc25.x86_64/vmlinux) swapper 0 [0] 9693.370046: 7 cycles:ppp: ffffffffb902fd93 native_sched_clock (.../4.8.8-300.fc25.x86_64/vmlinux) # perf script --hide-call-graph --time 9693.370064,9693.370076 swapper 0 [1] 9693.370064: 13 cycles:ppp: ffffffffb902fd93 native_sched_clock (.../4.8.8-300.fc25.x86_64/vmlinux) swapper 0 [1] 9693.370065: 250 cycles:ppp: ffffffffb902fd93 native_sched_clock (.../4.8.8-300.fc25.x86_64/vmlinux) swapper 0 [1] 9693.370067: 5269 cycles:ppp: ffffffffb902fe79 sched_clock (.../4.8.8-300.fc25.x86_64/vmlinux) swapper 0 [1] 9693.370069: 114602 cycles:ppp: ffffffffb90c1c5a atomic_notifier_call_chain (.../4.8.8-300.fc25.x86_64/vmlinux) # Signed-off-by: David Ahern <dsahern@gmail.com> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Acked-by: Namhyung Kim <namhyung@kernel.org> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/1480439746-42695-4-git-send-email-dsahern@gmail.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/Documentation/perf-script.txt | 7 +++++++ tools/perf/builtin-script.c | 15 ++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/tools/perf/Documentation/perf-script.txt b/tools/perf/Documentation/perf-script.txt index 0f6ee09f7256..5dc5c6a09ac4 100644 --- a/tools/perf/Documentation/perf-script.txt +++ b/tools/perf/Documentation/perf-script.txt @@ -292,6 +292,13 @@ include::itrace.txt[] --force:: Don't do ownership validation. +--time:: + Only analyze samples within given time window: <start>,<stop>. Times + have the format seconds.microseconds. If start is not given (i.e., time + string is ',x.y') then analysis starts at the beginning of the file. If + stop time is not given (i.e, time string is 'x.y,') then analysis goes + to end of file. + SEE ALSO -------- linkperf:perf-record[1], linkperf:perf-script-perl[1], diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c index 066b4bf73780..2f3ff69fc4e7 100644 --- a/tools/perf/builtin-script.c +++ b/tools/perf/builtin-script.c @@ -22,6 +22,7 @@ #include "util/thread_map.h" #include "util/stat.h" #include "util/thread-stack.h" +#include "util/time-utils.h" #include <linux/bitmap.h> #include <linux/stringify.h> #include <linux/time64.h> @@ -833,6 +834,8 @@ struct perf_script { struct cpu_map *cpus; struct thread_map *threads; int name_width; + const char *time_str; + struct perf_time_interval ptime; }; static int perf_evlist__max_name_len(struct perf_evlist *evlist) @@ -1014,6 +1017,9 @@ static int process_sample_event(struct perf_tool *tool, struct perf_script *scr = container_of(tool, struct perf_script, tool); struct addr_location al; + if (perf_time__skip_sample(&scr->ptime, sample->time)) + return 0; + if (debug_mode) { if (sample->time < last_timestamp) { pr_err("Samples misordered, previous: %" PRIu64 @@ -2186,7 +2192,8 @@ int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused) "Enable symbol demangling"), OPT_BOOLEAN(0, "demangle-kernel", &symbol_conf.demangle_kernel, "Enable kernel symbol demangling"), - + OPT_STRING(0, "time", &script.time_str, "str", + "Time span of interest (start,stop)"), OPT_END() }; const char * const script_subcommands[] = { "record", "report", NULL }; @@ -2465,6 +2472,12 @@ int cmd_script(int argc, const char **argv, const char *prefix __maybe_unused) if (err < 0) goto out_delete; + /* needs to be parsed after looking up reference time */ + if (perf_time__parse_str(&script.ptime, script.time_str) != 0) { + pr_err("Invalid time string\n"); + return -EINVAL; + } + err = __cmd_script(&script); flush_scripting(); -- 2.9.3 ^ permalink raw reply related [flat|nested] 53+ messages in thread
* [PATCH 15/19] perf sched timehist: Add option to specify time window of interest 2016-12-01 18:02 [GIT PULL 00/19] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (13 preceding siblings ...) 2016-12-01 18:02 ` [PATCH 14/19] perf script: Add option to specify time window of interest Arnaldo Carvalho de Melo @ 2016-12-01 18:02 ` Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 16/19] perf kmem: " Arnaldo Carvalho de Melo ` (4 subsequent siblings) 19 siblings, 0 replies; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-12-01 18:02 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, David Ahern, David Ahern, Jiri Olsa, Peter Zijlstra, Arnaldo Carvalho de Melo From: David Ahern <dsa@cumulusnetworks.com> Add option to allow user to control analysis window. e.g., collect data for time window and analyze a segment of interest within that window. Committer notes: Testing it: # perf sched record -a usleep 1 [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 1.593 MB perf.data (25 samples) ] # # perf sched timehist | head -18 Samples do not have callchains. time cpu task name wait time sch delay run time [tid/pid] (msec) (msec) (msec) ------------- ------ --------------- --------- --------- -------- 19818.635579 [0002] <idle> 0.000 0.000 0.000 19818.635613 [0000] perf[9116] 0.000 0.000 0.000 19818.635676 [0000] <idle> 0.000 0.000 0.063 19818.635678 [0000] rcuos/2[29] 0.000 0.002 0.001 19818.635696 [0002] perf[9117] 0.000 0.004 0.116 19818.635702 [0000] <idle> 0.001 0.000 0.024 19818.635709 [0002] migration/2[25] 0.000 0.003 0.012 19818.636263 [0000] usleep[9117] 0.005 0.000 0.560 19818.636316 [0000] <idle> 0.560 0.000 0.053 19818.636358 [0002] <idle> 0.129 0.000 0.649 19818.636358 [0000] usleep[9117] 0.053 0.002 0.042 # # perf sched timehist --time 19818.635696, Samples do not have callchains. time cpu task name wait time sch delay run time [tid/pid] (msec) (msec) (msec) ------------- ------ --------------- -------- --------- --------- 19818.635696 [0002] perf[9117] 0.000 0.120 0.000 19818.635702 [0000] <idle> 0.019 0.000 0.006 19818.635709 [0002] migration/2[25] 0.000 0.003 0.012 19818.636263 [0000] usleep[9117] 0.005 0.000 0.560 19818.636316 [0000] <idle> 0.560 0.000 0.053 19818.636358 [0002] <idle> 0.129 0.000 0.649 19818.636358 [0000] usleep[9117] 0.053 0.002 0.042 # # perf sched timehist --time 19818.635696,19818.635709 Samples do not have callchains. time cpu task name wait time sch delay run time [tid/pid] (msec) (msec) (msec) ------------- ------ --------------- --------- --------- --------- 19818.635696 [0002] perf[9117] 0.000 0.120 0.000 19818.635702 [0000] <idle> 0.019 0.000 0.006 19818.635709 [0002] migration/2[25] 0.000 0.003 0.012 19818.635709 [0000] usleep[9117] 0.005 0.000 0.006 # Signed-off-by: David Ahern <dsahern@gmail.com> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Acked-by: Namhyung Kim <namhyung@kernel.org> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/1480439746-42695-5-git-send-email-dsahern@gmail.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/Documentation/perf-sched.txt | 8 ++++++ tools/perf/builtin-sched.c | 51 +++++++++++++++++++++++++++++---- 2 files changed, 53 insertions(+), 6 deletions(-) diff --git a/tools/perf/Documentation/perf-sched.txt b/tools/perf/Documentation/perf-sched.txt index 121c60da03e5..7775b1eb2bee 100644 --- a/tools/perf/Documentation/perf-sched.txt +++ b/tools/perf/Documentation/perf-sched.txt @@ -132,6 +132,14 @@ OPTIONS for 'perf sched timehist' --migrations:: Show migration events. +--time:: + Only analyze samples within given time window: <start>,<stop>. Times + have the format seconds.microseconds. If start is not given (i.e., time + string is ',x.y') then analysis starts at the beginning of the file. If + stop time is not given (i.e, time string is 'x.y,') then analysis goes + to end of file. + + SEE ALSO -------- linkperf:perf-record[1] diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c index 4f9e7cba4ebf..870d94cd20ba 100644 --- a/tools/perf/builtin-sched.c +++ b/tools/perf/builtin-sched.c @@ -15,6 +15,7 @@ #include "util/color.h" #include "util/stat.h" #include "util/callchain.h" +#include "util/time-utils.h" #include <subcmd/parse-options.h> #include "util/trace-event.h" @@ -205,6 +206,8 @@ struct perf_sched { bool show_wakeups; bool show_migrations; u64 skipped_samples; + const char *time_str; + struct perf_time_interval ptime; }; /* per thread run time data */ @@ -1837,13 +1840,14 @@ static void timehist_header(struct perf_sched *sched) static void timehist_print_sample(struct perf_sched *sched, struct perf_sample *sample, struct addr_location *al, - struct thread *thread) + struct thread *thread, + u64 t) { struct thread_runtime *tr = thread__priv(thread); u32 max_cpus = sched->max_cpu + 1; char tstr[64]; - timestamp__scnprintf_usec(sample->time, tstr, sizeof(tstr)); + timestamp__scnprintf_usec(t, tstr, sizeof(tstr)); printf("%15s [%04d] ", tstr, sample->cpu); if (sched->show_cpu_visual) { @@ -2194,7 +2198,8 @@ static int timehist_sched_wakeup_event(struct perf_tool *tool, tr->ready_to_run = sample->time; /* show wakeups if requested */ - if (sched->show_wakeups) + if (sched->show_wakeups && + !perf_time__skip_sample(&sched->ptime, sample->time)) timehist_print_wakeup_event(sched, sample, machine, thread); return 0; @@ -2288,10 +2293,11 @@ static int timehist_sched_change_event(struct perf_tool *tool, struct machine *machine) { struct perf_sched *sched = container_of(tool, struct perf_sched, tool); + struct perf_time_interval *ptime = &sched->ptime; struct addr_location al; struct thread *thread; struct thread_runtime *tr = NULL; - u64 tprev; + u64 tprev, t = sample->time; int rc = 0; if (machine__resolve(machine, &al, sample) < 0) { @@ -2318,9 +2324,35 @@ static int timehist_sched_change_event(struct perf_tool *tool, tprev = perf_evsel__get_time(evsel, sample->cpu); - timehist_update_runtime_stats(tr, sample->time, tprev); + /* + * If start time given: + * - sample time is under window user cares about - skip sample + * - tprev is under window user cares about - reset to start of window + */ + if (ptime->start && ptime->start > t) + goto out; + + if (ptime->start > tprev) + tprev = ptime->start; + + /* + * If end time given: + * - previous sched event is out of window - we are done + * - sample time is beyond window user cares about - reset it + * to close out stats for time window interest + */ + if (ptime->end) { + if (tprev > ptime->end) + goto out; + + if (t > ptime->end) + t = ptime->end; + } + + timehist_update_runtime_stats(tr, t, tprev); + if (!sched->summary_only) - timehist_print_sample(sched, sample, &al, thread); + timehist_print_sample(sched, sample, &al, thread, t); out: if (tr) { @@ -2583,6 +2615,11 @@ static int perf_sched__timehist(struct perf_sched *sched) symbol__init(&session->header.env); + if (perf_time__parse_str(&sched->ptime, sched->time_str) != 0) { + pr_err("Invalid time string\n"); + return -EINVAL; + } + if (timehist_check_attr(sched, evlist) != 0) goto out; @@ -2997,6 +3034,8 @@ int cmd_sched(int argc, const char **argv, const char *prefix __maybe_unused) OPT_BOOLEAN('w', "wakeups", &sched.show_wakeups, "Show wakeup events"), OPT_BOOLEAN('M', "migrations", &sched.show_migrations, "Show migration events"), OPT_BOOLEAN('V', "cpu-visual", &sched.show_cpu_visual, "Add CPU visual"), + OPT_STRING(0, "time", &sched.time_str, "str", + "Time span for analysis (start,stop)"), OPT_PARENT(sched_options) }; -- 2.9.3 ^ permalink raw reply related [flat|nested] 53+ messages in thread
* [PATCH 16/19] perf kmem: Add option to specify time window of interest 2016-12-01 18:02 [GIT PULL 00/19] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (14 preceding siblings ...) 2016-12-01 18:02 ` [PATCH 15/19] perf sched timehist: " Arnaldo Carvalho de Melo @ 2016-12-01 18:02 ` Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 17/19] perf report: " Arnaldo Carvalho de Melo ` (3 subsequent siblings) 19 siblings, 0 replies; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-12-01 18:02 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, David Ahern, David Ahern, Jiri Olsa, Peter Zijlstra, Arnaldo Carvalho de Melo From: David Ahern <dsa@cumulusnetworks.com> Add option to allow user to control analysis window. e.g., collect data for time window and analyze a segment of interest within that window. Committer notes: Testing it: # perf kmem record usleep 1 [ perf record: Woken up 0 times to write data ] [ perf record: Captured and wrote 1.540 MB perf.data (2049 samples) ] # perf evlist kmem:kmalloc kmem:kmalloc_node kmem:kfree kmem:kmem_cache_alloc kmem:kmem_cache_alloc_node kmem:kmem_cache_free # Tip: use 'perf evlist --trace-fields' to show fields for tracepoint events # # # Use 'perf script' to get a first approach, select a chunk for then using # # with 'perf kmem stat --time' # # perf script | tail -15 usleep 9889 [0] 20119.782088: kmem:kmem_cache_free: (selinux_file_free_security+0x27) call_site=ffffffffb936aa07 ptr=0xffff888a1df49fc0 perf 9888 [3] 20119.782088: kmem:kmem_cache_free: (jbd2_journal_stop+0x1a1) call_site=ffffffffb9334581 ptr=0xffff888bdf1a39c0 perf 9888 [3] 20119.782089: kmem:kmem_cache_alloc: (jbd2__journal_start+0x72) call_site=ffffffffb9333b42 ptr=0xffff888bdf1a39c0 bytes_req=48 bytes_alloc=48 gfp_flags=GFP_NOFS|__GFP_ZERO perf 9888 [3] 20119.782090: kmem:kmem_cache_free: (jbd2_journal_stop+0x1a1) call_site=ffffffffb9334581 ptr=0xffff888bdf1a39c0 perf 9888 [3] 20119.782090: kmem:kmem_cache_alloc: (jbd2__journal_start+0x72) call_site=ffffffffb9333b42 ptr=0xffff888bdf1a39c0 bytes_req=48 bytes_alloc=48 gfp_flags=GFP_NOFS|__GFP_ZERO usleep 9889 [0] 20119.782091: kmem:kmem_cache_alloc: (__sigqueue_alloc+0x4a) call_site=ffffffffb90ad33a ptr=0xffff8889f071f6e0 bytes_req=160 bytes_alloc=160 gfp_flags=GFP_ATOMIC|__GFP_NOTRACK perf 9888 [3] 20119.782091: kmem:kmem_cache_free: (jbd2_journal_stop+0x1a1) call_site=ffffffffb9334581 ptr=0xffff888bdf1a39c0 perf 9888 [3] 20119.782093: kmem:kmem_cache_free: (__sigqueue_free.part.17+0x33) call_site=ffffffffb90ad3f3 ptr=0xffff8889f071f6e0 perf 9888 [3] 20119.782098: kmem:kmem_cache_alloc: (jbd2__journal_start+0x72) call_site=ffffffffb9333b42 ptr=0xffff888bdf1a39c0 bytes_req=48 bytes_alloc=48 gfp_flags=GFP_NOFS|__GFP_ZERO perf 9888 [3] 20119.782098: kmem:kmem_cache_free: (jbd2_journal_stop+0x1a1) call_site=ffffffffb9334581 ptr=0xffff888bdf1a39c0 perf 9888 [3] 20119.782099: kmem:kmem_cache_alloc: (jbd2__journal_start+0x72) call_site=ffffffffb9333b42 ptr=0xffff888bdf1a39c0 bytes_req=48 bytes_alloc=48 gfp_flags=GFP_NOFS|__GFP_ZERO perf 9888 [3] 20119.782100: kmem:kmem_cache_alloc: (alloc_buffer_head+0x21) call_site=ffffffffb9287cc1 ptr=0xffff8889b12722d8 bytes_req=104 bytes_alloc=104 gfp_flags=GFP_NOFS|__GFP_ZERO perf 9888 [3] 20119.782101: kmem:kmem_cache_free: (jbd2_journal_stop+0x1a1) call_site=ffffffffb9334581 ptr=0xffff888bdf1a39c0 perf 9888 [3] 20119.782102: kmem:kmem_cache_alloc: (jbd2__journal_start+0x72) call_site=ffffffffb9333b42 ptr=0xffff888bdf1a39c0 bytes_req=48 bytes_alloc=48 gfp_flags=GFP_NOFS|__GFP_ZERO perf 9888 [3] 20119.782103: kmem:kmem_cache_free: (jbd2_journal_stop+0x1a1) call_site=ffffffffb9334581 ptr=0xffff888bdf1a39c0 # # # stats for the whole perf.data file, i.e. no interval specified # # perf kmem stat SUMMARY (SLAB allocator) ======================== Total bytes requested: 172,628 Total bytes allocated: 173,088 Total bytes freed: 161,280 Net total bytes allocated: 11,808 Total bytes wasted on internal fragmentation: 460 Internal fragmentation: 0.265761% Cross CPU allocations: 0/851 # # # stats for an end open interval, after a certain time: # # perf kmem stat --time 20119.782088, SUMMARY (SLAB allocator) ======================== Total bytes requested: 552 Total bytes allocated: 552 Total bytes freed: 448 Net total bytes allocated: 104 Total bytes wasted on internal fragmentation: 0 Internal fragmentation: 0.000000% Cross CPU allocations: 0/8 # Signed-off-by: David Ahern <dsahern@gmail.com> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Acked-by: Namhyung Kim <namhyung@kernel.org> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/1480439746-42695-6-git-send-email-dsahern@gmail.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/Documentation/perf-kmem.txt | 7 +++++++ tools/perf/builtin-kmem.c | 24 ++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/tools/perf/Documentation/perf-kmem.txt b/tools/perf/Documentation/perf-kmem.txt index ff0f433b3fce..479fc3261a50 100644 --- a/tools/perf/Documentation/perf-kmem.txt +++ b/tools/perf/Documentation/perf-kmem.txt @@ -61,6 +61,13 @@ OPTIONS default, but this option shows live (currently allocated) pages instead. (This option works with --page option only) +--time:: + Only analyze samples within given time window: <start>,<stop>. Times + have the format seconds.microseconds. If start is not given (i.e., time + string is ',x.y') then analysis starts at the beginning of the file. If + stop time is not given (i.e, time string is 'x.y,') then analysis goes + to end of file. + SEE ALSO -------- linkperf:perf-record[1] diff --git a/tools/perf/builtin-kmem.c b/tools/perf/builtin-kmem.c index 7fd6f1e1e293..35a02f8e5a4a 100644 --- a/tools/perf/builtin-kmem.c +++ b/tools/perf/builtin-kmem.c @@ -11,6 +11,7 @@ #include "util/session.h" #include "util/tool.h" #include "util/callchain.h" +#include "util/time-utils.h" #include <subcmd/parse-options.h> #include "util/trace-event.h" @@ -66,6 +67,10 @@ static struct rb_root root_caller_sorted; static unsigned long total_requested, total_allocated, total_freed; static unsigned long nr_allocs, nr_cross_allocs; +/* filters for controlling start and stop of time of analysis */ +static struct perf_time_interval ptime; +const char *time_str; + static int insert_alloc_stat(unsigned long call_site, unsigned long ptr, int bytes_req, int bytes_alloc, int cpu) { @@ -912,6 +917,15 @@ static int perf_evsel__process_page_free_event(struct perf_evsel *evsel, return 0; } +static bool perf_kmem__skip_sample(struct perf_sample *sample) +{ + /* skip sample based on time? */ + if (perf_time__skip_sample(&ptime, sample->time)) + return true; + + return false; +} + typedef int (*tracepoint_handler)(struct perf_evsel *evsel, struct perf_sample *sample); @@ -931,6 +945,9 @@ static int process_sample_event(struct perf_tool *tool __maybe_unused, return -1; } + if (perf_kmem__skip_sample(sample)) + return 0; + dump_printf(" ... thread: %s:%d\n", thread__comm_str(thread), thread->tid); if (evsel->handler != NULL) { @@ -1894,6 +1911,8 @@ int cmd_kmem(int argc, const char **argv, const char *prefix __maybe_unused) OPT_CALLBACK_NOOPT(0, "page", NULL, NULL, "Analyze page allocator", parse_page_opt), OPT_BOOLEAN(0, "live", &live_page, "Show live page stat"), + OPT_STRING(0, "time", &time_str, "str", + "Time span of interest (start,stop)"), OPT_END() }; const char *const kmem_subcommands[] = { "record", "stat", NULL }; @@ -1954,6 +1973,11 @@ int cmd_kmem(int argc, const char **argv, const char *prefix __maybe_unused) symbol__init(&session->header.env); + if (perf_time__parse_str(&ptime, time_str) != 0) { + pr_err("Invalid time string\n"); + return -EINVAL; + } + if (!strcmp(argv[0], "stat")) { setlocale(LC_ALL, ""); -- 2.9.3 ^ permalink raw reply related [flat|nested] 53+ messages in thread
* [PATCH 17/19] perf report: Add option to specify time window of interest 2016-12-01 18:02 [GIT PULL 00/19] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (15 preceding siblings ...) 2016-12-01 18:02 ` [PATCH 16/19] perf kmem: " Arnaldo Carvalho de Melo @ 2016-12-01 18:02 ` Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 18/19] perf annotate: Use arch->objdump.comment_char in dec__parse() Arnaldo Carvalho de Melo ` (2 subsequent siblings) 19 siblings, 0 replies; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-12-01 18:02 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, David Ahern, David Ahern, Jiri Olsa, Peter Zijlstra, Arnaldo Carvalho de Melo From: David Ahern <dsa@cumulusnetworks.com> Add option to allow user to control analysis window. e.g., collect data for time window and analyze a segment of interest within that window. Committer notes: Testing it: Using the perf.data file captured via 'perf kmem record': # perf report --header-only # ======== # captured on: Tue Nov 29 16:01:53 2016 # hostname : jouet # os release : 4.8.8-300.fc25.x86_64 # perf version : 4.9.rc6.g5a6aca # arch : x86_64 # nrcpus online : 4 # nrcpus avail : 4 # cpudesc : Intel(R) Core(TM) i7-5600U CPU @ 2.60GHz # cpuid : GenuineIntel,6,61,4 # total memory : 20254660 kB # cmdline : /home/acme/bin/perf kmem record usleep 1 # event : name = kmem:kmalloc, , id = { 931980, 931981, 931982, 931983 }, type = 2, size = 112, config = 0x1b9, { sample_period, sample_freq } = 1, sample_typ # event : name = kmem:kmalloc_node, , id = { 931984, 931985, 931986, 931987 }, type = 2, size = 112, config = 0x1b7, { sample_period, sample_freq } = 1, sampl # event : name = kmem:kfree, , id = { 931988, 931989, 931990, 931991 }, type = 2, size = 112, config = 0x1b5, { sample_period, sample_freq } = 1, sample_type # event : name = kmem:kmem_cache_alloc, , id = { 931992, 931993, 931994, 931995 }, type = 2, size = 112, config = 0x1b8, { sample_period, sample_freq } = 1, s # event : name = kmem:kmem_cache_alloc_node, , id = { 931996, 931997, 931998, 931999 }, type = 2, size = 112, config = 0x1b6, { sample_period, sample_freq } = # event : name = kmem:kmem_cache_free, , id = { 932000, 932001, 932002, 932003 }, type = 2, size = 112, config = 0x1b4, { sample_period, sample_freq } = 1, sa # HEADER_CPU_TOPOLOGY info available, use -I to display # HEADER_NUMA_TOPOLOGY info available, use -I to display # pmu mappings: cpu = 4, intel_pt = 7, intel_bts = 6, uncore_arb = 13, cstate_pkg = 15, breakpoint = 5, uncore_cbox_1 = 12, power = 9, software = 1, uncore_im # HEADER_CACHE info available, use -I to display # missing features: HEADER_BRANCH_STACK HEADER_GROUP_DESC HEADER_AUXTRACE HEADER_STAT # ======== # # # Looking at just the histogram entries for the first event: # # perf report | head -33 # To display the perf.data header info, please use --header/--header-only options. # # # Total Lost Samples: 0 # # Samples: 40 of event 'kmem:kmalloc' # Event count (approx.): 40 # # Overhead Trace output # ........ ............................................................................................................... # 37.50% call_site=ffffffffb91ad3c7 ptr=0xffff88895fc05000 bytes_req=4096 bytes_alloc=4096 gfp_flags=GFP_KERNEL 10.00% call_site=ffffffffb9258416 ptr=0xffff888a1dc61f00 bytes_req=240 bytes_alloc=256 gfp_flags=GFP_KERNEL|__GFP_ZERO 7.50% call_site=ffffffffb9258416 ptr=0xffff888a2640ac00 bytes_req=240 bytes_alloc=256 gfp_flags=GFP_KERNEL|__GFP_ZERO 2.50% call_site=ffffffffb92759ba ptr=0xffff888a26776000 bytes_req=4096 bytes_alloc=4096 gfp_flags=GFP_KERNEL 2.50% call_site=ffffffffb9276864 ptr=0xffff8886f6b82600 bytes_req=136 bytes_alloc=192 gfp_flags=GFP_KERNEL|__GFP_ZERO 2.50% call_site=ffffffffb9276903 ptr=0xffff888aefcf0460 bytes_req=32 bytes_alloc=32 gfp_flags=GFP_KERNEL 2.50% call_site=ffffffffb92ad0ce ptr=0xffff888756c98a00 bytes_req=392 bytes_alloc=512 gfp_flags=GFP_KERNEL 2.50% call_site=ffffffffb92ad0ce ptr=0xffff888756c9ba00 bytes_req=504 bytes_alloc=512 gfp_flags=GFP_KERNEL 2.50% call_site=ffffffffb92ad301 ptr=0xffff888a31747600 bytes_req=128 bytes_alloc=128 gfp_flags=GFP_KERNEL 2.50% call_site=ffffffffb92ad511 ptr=0xffff888a9d26a2a0 bytes_req=28 bytes_alloc=32 gfp_flags=GFP_KERNEL 2.50% call_site=ffffffffb936a7fb ptr=0xffff88873e8c11a0 bytes_req=24 bytes_alloc=32 gfp_flags=GFP_KERNEL 2.50% call_site=ffffffffb936a7fb ptr=0xffff88873e8c12c0 bytes_req=24 bytes_alloc=32 gfp_flags=GFP_KERNEL 2.50% call_site=ffffffffb936a7fb ptr=0xffff88873e8c1540 bytes_req=24 bytes_alloc=32 gfp_flags=GFP_KERNEL 2.50% call_site=ffffffffb936a7fb ptr=0xffff88873e8c15a0 bytes_req=24 bytes_alloc=32 gfp_flags=GFP_KERNEL 2.50% call_site=ffffffffb936a7fb ptr=0xffff88873e8c15e0 bytes_req=24 bytes_alloc=32 gfp_flags=GFP_KERNEL 2.50% call_site=ffffffffb936a7fb ptr=0xffff88873e8c16e0 bytes_req=24 bytes_alloc=32 gfp_flags=GFP_KERNEL 2.50% call_site=ffffffffb936a7fb ptr=0xffff88873e8c1c20 bytes_req=24 bytes_alloc=32 gfp_flags=GFP_KERNEL 2.50% call_site=ffffffffb936a7fb ptr=0xffff888a9d26a2a0 bytes_req=24 bytes_alloc=32 gfp_flags=GFP_KERNEL 2.50% call_site=ffffffffb9373e66 ptr=0xffff8889f1931240 bytes_req=64 bytes_alloc=64 gfp_flags=GFP_ATOMIC|__GFP_ZERO 2.50% call_site=ffffffffb9373e66 ptr=0xffff8889f1931980 bytes_req=64 bytes_alloc=64 gfp_flags=GFP_ATOMIC|__GFP_ZERO 2.50% call_site=ffffffffb9373e66 ptr=0xffff8889f1931a00 bytes_req=64 bytes_alloc=64 gfp_flags=GFP_ATOMIC|__GFP_ZERO # # # And then limiting using the example for 'perf kmem stat --time' used # # in the previous changeset committer note we see that there were no # # kmem:kmalloc in that last part of the file, but there were some # # kmem:kmem_cache_alloc ones: # # perf report --time 20119.782088, --stdio # # Total Lost Samples: 0 # # Samples: 0 of event 'kmem:kmalloc' # Event count (approx.): 0 # # Overhead Trace output # ........ ............ # # Samples: 0 of event 'kmem:kmalloc_node' # Event count (approx.): 0 # # Overhead Trace output # ........ ............ # # Samples: 0 of event 'kmem:kfree' # Event count (approx.): 0 # # Overhead Trace output # ........ ............ # # Samples: 8 of event 'kmem:kmem_cache_alloc' # Event count (approx.): 8 # # Overhead Trace output # ........ .................................................................................................................. # 75.00% call_site=ffffffffb9333b42 ptr=0xffff888bdf1a39c0 bytes_req=48 bytes_alloc=48 gfp_flags=GFP_NOFS|__GFP_ZERO 12.50% call_site=ffffffffb90ad33a ptr=0xffff8889f071f6e0 bytes_req=160 bytes_alloc=160 gfp_flags=GFP_ATOMIC|__GFP_NOTRACK 12.50% call_site=ffffffffb9287cc1 ptr=0xffff8889b12722d8 bytes_req=104 bytes_alloc=104 gfp_flags=GFP_NOFS|__GFP_ZERO # Signed-off-by: David Ahern <dsahern@gmail.com> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Acked-by: Namhyung Kim <namhyung@kernel.org> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/1480439746-42695-7-git-send-email-dsahern@gmail.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/Documentation/perf-report.txt | 7 +++++++ tools/perf/builtin-report.c | 14 +++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/tools/perf/Documentation/perf-report.txt b/tools/perf/Documentation/perf-report.txt index 2d1746295abf..3a166ae4a4d3 100644 --- a/tools/perf/Documentation/perf-report.txt +++ b/tools/perf/Documentation/perf-report.txt @@ -382,6 +382,13 @@ OPTIONS --header-only:: Show only perf.data header (forces --stdio). +--time:: + Only analyze samples within given time window: <start>,<stop>. Times + have the format seconds.microseconds. If start is not given (i.e., time + string is ',x.y') then analysis starts at the beginning of the file. If + stop time is not given (i.e, time string is 'x.y,') then analysis goes + to end of file. + --itrace:: Options for decoding instruction tracing data. The options are: diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index 3dfbfffe2ecd..d2afbe4a240d 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c @@ -36,7 +36,7 @@ #include "util/hist.h" #include "util/data.h" #include "arch/common.h" - +#include "util/time-utils.h" #include "util/auxtrace.h" #include <dlfcn.h> @@ -59,6 +59,8 @@ struct report { const char *pretty_printing_style; const char *cpu_list; const char *symbol_filter_str; + const char *time_str; + struct perf_time_interval ptime; float min_percent; u64 nr_entries; u64 queue_size; @@ -158,6 +160,9 @@ static int process_sample_event(struct perf_tool *tool, }; int ret = 0; + if (perf_time__skip_sample(&rep->ptime, sample->time)) + return 0; + if (machine__resolve(machine, &al, sample) < 0) { pr_debug("problem processing %d event, skipping it.\n", event->header.type); @@ -830,6 +835,8 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused) OPT_CALLBACK_DEFAULT(0, "stdio-color", NULL, "mode", "'always' (default), 'never' or 'auto' only applicable to --stdio mode", stdio__config_color, "always"), + OPT_STRING(0, "time", &report.time_str, "str", + "Time span of interest (start,stop)"), OPT_END() }; struct perf_data_file file = { @@ -1015,6 +1022,11 @@ int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused) if (symbol__init(&session->header.env) < 0) goto error; + if (perf_time__parse_str(&report.ptime, report.time_str) != 0) { + pr_err("Invalid time string\n"); + return -EINVAL; + } + sort__setup_elide(stdout); ret = __cmd_report(&report); -- 2.9.3 ^ permalink raw reply related [flat|nested] 53+ messages in thread
* [PATCH 18/19] perf annotate: Use arch->objdump.comment_char in dec__parse() 2016-12-01 18:02 [GIT PULL 00/19] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (16 preceding siblings ...) 2016-12-01 18:02 ` [PATCH 17/19] perf report: " Arnaldo Carvalho de Melo @ 2016-12-01 18:02 ` Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 19/19] perf annotate: AArch64 support Arnaldo Carvalho de Melo 2016-12-02 9:10 ` [GIT PULL 00/19] perf/core improvements and fixes Ingo Molnar 19 siblings, 0 replies; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-12-01 18:02 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Kim Phillips, Alexander Shishkin, Chris Ryder, Mark Rutland, Pawel Moll, Peter Zijlstra, Will Deacon, Arnaldo Carvalho de Melo From: Kim Phillips <kim.phillips@arm.com> Presume neglected in commit 786c1b5 "perf annotate: Start supporting cross arch annotation". This doesn't fix a bug since none of the affected arches support parsing dec/inc instructions yet. Signed-off-by: Kim Phillips <kim.phillips@arm.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Chris Ryder <chris.ryder@arm.com> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Pawel Moll <pawel.moll@arm.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Will Deacon <will.deacon@arm.com> Link: http://lkml.kernel.org/r/20161130092333.1cca5dd2c77e1790d61c1e9c@arm.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/util/annotate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c index 3e34ee0fde28..191599eca807 100644 --- a/tools/perf/util/annotate.c +++ b/tools/perf/util/annotate.c @@ -408,7 +408,7 @@ static int dec__parse(struct arch *arch __maybe_unused, struct ins_operands *ops if (ops->target.raw == NULL) return -1; - comment = strchr(s, '#'); + comment = strchr(s, arch->objdump.comment_char); if (comment == NULL) return 0; -- 2.9.3 ^ permalink raw reply related [flat|nested] 53+ messages in thread
* [PATCH 19/19] perf annotate: AArch64 support 2016-12-01 18:02 [GIT PULL 00/19] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (17 preceding siblings ...) 2016-12-01 18:02 ` [PATCH 18/19] perf annotate: Use arch->objdump.comment_char in dec__parse() Arnaldo Carvalho de Melo @ 2016-12-01 18:02 ` Arnaldo Carvalho de Melo 2016-12-02 9:10 ` [GIT PULL 00/19] perf/core improvements and fixes Ingo Molnar 19 siblings, 0 replies; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-12-01 18:02 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Kim Phillips, Chris Ryder, Alexander Shishkin, Mark Rutland, Pawel Moll, Peter Zijlstra, Will Deacon, Arnaldo Carvalho de Melo From: Kim Phillips <kim.phillips@arm.com> This is a regex converted version from the original: https://lkml.org/lkml/2016/5/19/461 Add basic support to recognise AArch64 assembly. This allows perf to identify AArch64 instructions that branch to other parts within the same function, thereby properly annotating them. Rebased onto new cross-arch annotation bits: https://lkml.org/lkml/2016/11/25/546 Sample output: security_file_permission vmlinux 5.80 │ ← ret ▒ │70: ldr w0, [x21,#68] ▒ 4.44 │ ↓ tbnz d0 ▒ │ mov w0, #0x24 // #36 ▒ 1.37 │ ands w0, w22, w0 ▒ │ ↑ b.eq 60 ▒ 1.37 │ ↓ tbnz e4 ▒ │ mov w19, #0x20000 // #131072 ▒ 1.02 │ ↓ tbz ec ▒ │90:┌─→ldr x3, [x21,#24] ▒ 1.37 │ │ add x21, x21, #0x10 ▒ │ │ mov w2, w19 ▒ 1.02 │ │ mov x0, x21 ▒ │ │ mov x1, x3 ▒ 1.71 │ │ ldr x20, [x3,#48] ▒ │ │→ bl __fsnotify_parent ▒ 0.68 │ │↑ cbnz 60 ▒ │ │ mov x2, x21 ▒ 1.37 │ │ mov w1, w19 ▒ │ │ mov x0, x20 ▒ 0.68 │ │ mov w5, #0x0 // #0 ▒ │ │ mov x4, #0x0 // #0 ▒ 1.71 │ │ mov w3, #0x1 // #1 ▒ │ │→ bl fsnotify ▒ 1.37 │ │↑ b 60 ▒ │d0:│ mov w0, #0x0 // #0 ▒ │ │ ldp x19, x20, [sp,#16] ▒ │ │ ldp x21, x22, [sp,#32] ▒ │ │ ldp x29, x30, [sp],#48 ▒ │ │← ret ▒ │e4:│ mov w19, #0x10000 // #65536 ▒ │ └──b 90 ◆ │ec: brk #0x800 ▒ Press 'h' for help on key bindings Signed-off-by: Kim Phillips <kim.phillips@arm.com> Signed-off-by: Chris Ryder <chris.ryder@arm.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Pawel Moll <pawel.moll@arm.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Will Deacon <will.deacon@arm.com> Link: http://lkml.kernel.org/r/20161130092344.012e18e3e623bea395162f95@arm.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/arch/arm64/annotate/instructions.c | 62 +++++++++++++++++++++++++++ tools/perf/util/annotate.c | 5 +++ 2 files changed, 67 insertions(+) create mode 100644 tools/perf/arch/arm64/annotate/instructions.c diff --git a/tools/perf/arch/arm64/annotate/instructions.c b/tools/perf/arch/arm64/annotate/instructions.c new file mode 100644 index 000000000000..44eafd6f2d50 --- /dev/null +++ b/tools/perf/arch/arm64/annotate/instructions.c @@ -0,0 +1,62 @@ +#include <sys/types.h> +#include <regex.h> + +struct arm64_annotate { + regex_t call_insn, + jump_insn; +}; + +static struct ins_ops *arm64__associate_instruction_ops(struct arch *arch, const char *name) +{ + struct arm64_annotate *arm = arch->priv; + struct ins_ops *ops; + regmatch_t match[2]; + + if (!regexec(&arm->jump_insn, name, 2, match, 0)) + ops = &jump_ops; + else if (!regexec(&arm->call_insn, name, 2, match, 0)) + ops = &call_ops; + else if (!strcmp(name, "ret")) + ops = &ret_ops; + else + return NULL; + + arch__associate_ins_ops(arch, name, ops); + return ops; +} + +static int arm64__annotate_init(struct arch *arch) +{ + struct arm64_annotate *arm; + int err; + + if (arch->initialized) + return 0; + + arm = zalloc(sizeof(*arm)); + if (!arm) + return -1; + + /* bl, blr */ + err = regcomp(&arm->call_insn, "^blr?$", REG_EXTENDED); + if (err) + goto out_free_arm; + /* b, b.cond, br, cbz/cbnz, tbz/tbnz */ + err = regcomp(&arm->jump_insn, "^[ct]?br?\\.?(cc|cs|eq|ge|gt|hi|le|ls|lt|mi|ne|pl)?n?z?$", + REG_EXTENDED); + if (err) + goto out_free_call; + + arch->initialized = true; + arch->priv = arm; + arch->associate_instruction_ops = arm64__associate_instruction_ops; + arch->objdump.comment_char = ';'; + arch->objdump.skip_functions_char = '+'; + return 0; + +out_free_call: + regfree(&arm->call_insn); +out_free_arm: + free(arm); + return -1; +} diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c index 191599eca807..4012b1de2813 100644 --- a/tools/perf/util/annotate.c +++ b/tools/perf/util/annotate.c @@ -105,6 +105,7 @@ static int arch__associate_ins_ops(struct arch* arch, const char *name, struct i } #include "arch/arm/annotate/instructions.c" +#include "arch/arm64/annotate/instructions.c" #include "arch/x86/annotate/instructions.c" #include "arch/powerpc/annotate/instructions.c" @@ -114,6 +115,10 @@ static struct arch architectures[] = { .init = arm__annotate_init, }, { + .name = "arm64", + .init = arm64__annotate_init, + }, + { .name = "x86", .instructions = x86__instructions, .nr_instructions = ARRAY_SIZE(x86__instructions), -- 2.9.3 ^ permalink raw reply related [flat|nested] 53+ messages in thread
* Re: [GIT PULL 00/19] perf/core improvements and fixes 2016-12-01 18:02 [GIT PULL 00/19] perf/core improvements and fixes Arnaldo Carvalho de Melo ` (18 preceding siblings ...) 2016-12-01 18:02 ` [PATCH 19/19] perf annotate: AArch64 support Arnaldo Carvalho de Melo @ 2016-12-02 9:10 ` Ingo Molnar 19 siblings, 0 replies; 53+ messages in thread From: Ingo Molnar @ 2016-12-02 9:10 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: linux-kernel, Adrian Hunter, Alexander Shishkin, Alexei Starovoitov, Chris Ryder, David Ahern, He Kuang, Jiri Olsa, Joe Stringer, Kim Phillips, Mark Rutland, Namhyung Kim, Pawel Moll, Peter Zijlstra, Wang Nan, Will Deacon, Zefan Li, pi3orama, Arnaldo Carvalho de Melo * Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > Hi Ingo, > > Please consider pulling, > > - Arnaldo > > Test results at the end of this message, as usual. > > The following changes since commit 2471cece40d61b0035360338569d338f9dea6099: > > Merge tag 'perf-core-for-mingo-20161125' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2016-11-25 18:12:41 +0100) > > are available in the git repository at: > > git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20161201 > > for you to fetch changes up to 0fcb1da4aba6e6c7b32de5e0948b740b31ad822d: > > perf annotate: AArch64 support (2016-12-01 13:03:19 -0300) > > ---------------------------------------------------------------- > perf/core improvements and fixes: > > New features: > > - Support AArch64 in the 'annotate' code, native/local and > cross-arch/remote (Kim Phillips) > > - Allow considering just events in a given time interval, via the > '--time start.s.ms,end.s.ms' command line, added to 'perf kmem', > 'perf report', 'perf sched timehist' and 'perf script' (David Ahern) > > - Add option to stop printing a callchain at one of a given group of > symbol names (David Ahern) > > - Handle cpu migration events in 'perf sched timehist' (David Ahern) > > - Track memory freed in 'perf kmem stat' (David Ahern) > > Infrastructure: > > - Initial support (and perf test entry) for tooling hooks, starting with > 'record_start' and 'record_end', that will have as its initial user the > eBPF infrastructure, where perf_ prefixed functions will be JITed and > run when such hooks are called (Wang Nan) > > - Remove redundant "test" and similar strings from 'perf test' descriptions > (Arnaldo Carvalho de Melo) > > - libbpf assorted improvements (Wang Nan) > > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> > > ---------------------------------------------------------------- > Arnaldo Carvalho de Melo (3): > perf ui helpline: Provide a printf variant > perf annotate: Show invalid jump offset in error message > perf test: Remove "test" and similar strings from test descriptions > > David Ahern (10): > perf sched timehist: Handle cpu migration events > perf trace: Update tid/pid filtering option to leverage symbol_conf > perf kmem stat: Track memory freed > perf script: Add option to stop printing callchain > perf tools: Add time-based utility functions > perf tools: Move parse_nsec_time to time-utils.c > perf script: Add option to specify time window of interest > perf sched timehist: Add option to specify time window of interest > perf kmem: Add option to specify time window of interest > perf report: Add option to specify time window of interest > > Kim Phillips (2): > perf annotate: Use arch->objdump.comment_char in dec__parse() > perf annotate: AArch64 support > > Wang Nan (4): > tools lib bpf: Add missing BPF functions > tools lib bpf: Add private field for bpf_object > tools lib bpf: Retrive bpf_map through offset of bpf_map_def > perf tools: Introduce perf hooks > > tools/lib/bpf/bpf.c | 56 ++++++++++ > tools/lib/bpf/bpf.h | 7 ++ > tools/lib/bpf/libbpf.c | 35 ++++++ > tools/lib/bpf/libbpf.h | 13 +++ > tools/perf/Documentation/perf-kmem.txt | 7 ++ > tools/perf/Documentation/perf-report.txt | 7 ++ > tools/perf/Documentation/perf-sched.txt | 12 +++ > tools/perf/Documentation/perf-script.txt | 10 ++ > tools/perf/arch/arm64/annotate/instructions.c | 62 +++++++++++ > tools/perf/arch/x86/tests/arch-tests.c | 10 +- > tools/perf/builtin-kmem.c | 36 ++++++- > tools/perf/builtin-record.c | 11 ++ > tools/perf/builtin-report.c | 14 ++- > tools/perf/builtin-sched.c | 148 ++++++++++++++++++++++++-- > tools/perf/builtin-script.c | 17 ++- > tools/perf/builtin-trace.c | 49 ++------- > tools/perf/tests/Build | 1 + > tools/perf/tests/bpf.c | 6 +- > tools/perf/tests/builtin-test.c | 96 +++++++++-------- > tools/perf/tests/llvm.c | 8 +- > tools/perf/tests/perf-hooks.c | 44 ++++++++ > tools/perf/tests/tests.h | 1 + > tools/perf/ui/browsers/annotate.c | 6 +- > tools/perf/ui/helpline.c | 10 ++ > tools/perf/ui/helpline.h | 1 + > tools/perf/util/Build | 3 + > tools/perf/util/annotate.c | 7 +- > tools/perf/util/evsel_fprintf.c | 8 ++ > tools/perf/util/perf-hooks-list.h | 3 + > tools/perf/util/perf-hooks.c | 84 +++++++++++++++ > tools/perf/util/perf-hooks.h | 37 +++++++ > tools/perf/util/symbol.c | 8 ++ > tools/perf/util/symbol.h | 6 +- > tools/perf/util/time-utils.c | 119 +++++++++++++++++++++ > tools/perf/util/time-utils.h | 14 +++ > tools/perf/util/util.c | 33 ------ > tools/perf/util/util.h | 2 - > 37 files changed, 842 insertions(+), 149 deletions(-) > create mode 100644 tools/perf/arch/arm64/annotate/instructions.c > create mode 100644 tools/perf/tests/perf-hooks.c > create mode 100644 tools/perf/util/perf-hooks-list.h > create mode 100644 tools/perf/util/perf-hooks.c > create mode 100644 tools/perf/util/perf-hooks.h > create mode 100644 tools/perf/util/time-utils.c > create mode 100644 tools/perf/util/time-utils.h > > # uname -a > Linux jouet 4.8.8-300.fc25.x86_64 #1 SMP Tue Nov 15 18:10:06 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux > # perf test > 1: vmlinux symtab matches kallsyms : Ok > 2: Detect openat syscall event : Ok > 3: Detect openat syscall event on all cpus : Ok > 4: Read samples using the mmap interface : Ok > 5: Parse event definition strings : Ok > 6: PERF_RECORD_* events & perf_sample fields : Ok > 7: Parse perf pmu format : Ok > 8: DSO data read : Ok > 9: DSO data cache : Ok > 10: DSO data reopen : Ok > 11: Roundtrip evsel->name : Ok > 12: Parse sched tracepoints fields : Ok > 13: syscalls:sys_enter_openat event fields : Ok > 14: Setup struct perf_event_attr : Ok > 15: Match and link multiple hists : Ok > 16: 'import perf' in python : Ok > 17: Breakpoint overflow signal handler : Ok > 18: Breakpoint overflow sampling : Ok > 19: Number of exit events of a simple workload : Ok > 20: Software clock events period values : Ok > 21: Object code reading : Ok > 22: Sample parsing : Ok > 23: Use a dummy software event to keep tracking: Ok > 24: Parse with no sample_id_all bit set : Ok > 25: Filter hist entries : Ok > 26: Lookup mmap thread : Ok > 27: Share thread mg : Ok > 28: Sort output of hist entries : Ok > 29: Cumulate child hist entries : Ok > 30: Track with sched_switch : Ok > 31: Filter fds with revents mask in a fdarray : Ok > 32: Add fd to a fdarray, making it autogrow : Ok > 33: kmod_path__parse : Ok > 34: Thread map : Ok > 35: LLVM search and compile : > 35.1: Basic BPF llvm compile : Ok > 35.2: kbuild searching : Ok > 35.3: Compile source for BPF prologue generation: Ok > 35.4: Compile source for BPF relocation : Ok > 36: Session topology : Ok > 37: BPF filter : > 37.1: Basic BPF filtering : Ok > 37.2: BPF prologue generation : Ok > 37.3: BPF relocation checker : Ok > 38: Synthesize thread map : Ok > 39: Synthesize cpu map : Ok > 40: Synthesize stat config : Ok > 41: Synthesize stat : Ok > 42: Synthesize stat round : Ok > 43: Synthesize attr update : Ok > 44: Event times : Ok > 45: Read backward ring buffer : Ok > 46: Print cpu map : Ok > 47: Probe SDT events : Ok > 48: is_printable_array : Ok > 49: Print bitmap : Ok > 50: perf hooks : Ok > 51: x86 rdpmc : Ok > 52: Convert perf time to TSC : Ok > 53: DWARF unwind : Ok > 54: x86 instruction decoder - new instructions : Ok > 55: Intel cqm nmi context read : Skip > # > # uname -a > Linux zoo 4.7.3-200.fc24.x86_64 #1 SMP Wed Sep 7 17:31:21 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux > # dm > 1 alpine:3.4: Ok > 2 android-ndk:r12b-arm: Ok > 3 archlinux:latest: Ok > 4 centos:5: Ok > 5 centos:6: Ok > 6 centos:7: Ok > 7 debian:7: Ok > 8 debian:8: Ok > 9 debian:experimental: Ok > 10 fedora:20: Ok > 11 fedora:21: Ok > 12 fedora:22: Ok > 13 fedora:23: Ok > 14 fedora:24: Ok > 15 fedora:24-x-ARC-uClibc: Ok > 16 fedora:rawhide: Ok > 17 mageia:5: Ok > 18 opensuse:13.2: Ok > 19 opensuse:42.1: Ok > 20 opensuse:tumbleweed: Ok > 21 ubuntu:12.04.5: Ok > 22 ubuntu:14.04: Ok > 23 ubuntu:14.04.4: Ok > 24 ubuntu:15.10: Ok > 25 ubuntu:16.04: Ok > 26 ubuntu:16.04-x-arm: Ok > 27 ubuntu:16.04-x-arm64: Ok > 28 ubuntu:16.04-x-powerpc: Ok > 29 ubuntu:16.04-x-powerpc64: Ok > 30 ubuntu:16.04-x-powerpc64el: Ok > 31 ubuntu:16.04-x-s390: Ok > 32 ubuntu:16.10: Ok > # > $ grep PRETTY_NAME /etc/os-release > PRETTY_NAME="Fedora 25 (Workstation Edition)" > $ > $ perf stat make -C tools/perf build-test > make: Entering directory '/home/acme/git/linux/tools/perf' > - tarpkg: ./tests/perf-targz-src-pkg . > make_no_slang_O: make NO_SLANG=1 > make_util_map_o_O: make util/map.o > make_static_O: make LDFLAGS=-static > make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1 > make_perf_o_O: make perf.o > make_no_libunwind_O: make NO_LIBUNWIND=1 > make_no_libelf_O: make NO_LIBELF=1 > make_util_pmu_bison_o_O: make util/pmu-bison.o > make_no_backtrace_O: make NO_BACKTRACE=1 > make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1 > make_no_demangle_O: make NO_DEMANGLE=1 > make_no_libperl_O: make NO_LIBPERL=1 > make_tags_O: make tags > make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1 > make_install_prefix_slash_O: make install prefix=/tmp/krava/ > make_no_auxtrace_O: make NO_AUXTRACE=1 > make_no_libnuma_O: make NO_LIBNUMA=1 > make_install_bin_O: make install-bin > make_no_newt_O: make NO_NEWT=1 > make_pure_O: make > make_minimal_O: make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1 > make_clean_all_O: make clean all > make_no_gtk2_O: make NO_GTK2=1 > make_no_libbionic_O: make NO_LIBBIONIC=1 > make_install_prefix_O: make install prefix=/tmp/krava > make_no_libbpf_O: make NO_LIBBPF=1 > make_no_libaudit_O: make NO_LIBAUDIT=1 > make_with_babeltrace_O: make LIBBABELTRACE=1 > make_no_libpython_O: make NO_LIBPYTHON=1 > make_help_O: make help > make_doc_O: make doc > make_debug_O: make DEBUG=1 > make_install_O: make install > OK > make: Leaving directory '/home/acme/git/linux/tools/perf' > $ > Pulled, thanks a lot Arnaldo! Ingo ^ permalink raw reply [flat|nested] 53+ messages in thread
* [GIT PULL 00/19] perf/core improvements and fixes @ 2017-11-03 13:54 Arnaldo Carvalho de Melo 0 siblings, 0 replies; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2017-11-03 13:54 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, linux-perf-users, Arnaldo Carvalho de Melo, Adrian Hunter, Andi Kleen, Andrey Vagin, Andy Lutomirski, Changbin Du, Cyrill Gorcunov, David Ahern, Jin Yao, Jiri Olsa, kernel-team, Michael Ellerman, Milian Wolff, Namhyung Kim, Peter Zijlstra, Wang Nan, yuzhoujian, Arnaldo Carvalho de Melo Hi Ingo, A bit of trivia info is now automatically shown in the container builds, the gcc version used to build the tools, that gets changed as the distros update gcc and as I update the container build images :-) Please consider pulling, - Arnaldo Test results at the end of this message, as usual. The following changes since commit 0d3d73aac2ff05c78387aa9dcc2c8aa3804405e7: perf/core: Rewrite event timekeeping (2017-10-27 10:31:59 +0200) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-4.15-20171103 for you to fetch changes up to 7285cf3325b4a1dfb336d31eebc27dfbc30fb9aa: perf srcline: Show correct function name for srcline of callchains (2017-11-01 11:44:38 -0300) ---------------------------------------------------------------- perf/core improvements and fixes: - Beautify the 'kcmp' and 'prctl' syscall arguments in 'perf trace' (Arnaldo Carvalho de Melo) - Implement a way to print formatted output to per-event files in 'perf script' to facilitate generate flamegraphs, elliminating the need to write scripts to do that separation (yuzhoujian, Arnaldo Carvalho de Melo) Make 'perf stat --per-thread' update shadow stats to show metrics (Jiri Olsa) - Fix double mapping al->addr in callchain processing for children without self period (Namhyung Kim) - Fix memory leak in addr2inlines() when libbfd is not used (Namhyung Kim) - Show correct function name for srcline of callchains when libbfd is not used (Namhyung Kim) Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> ---------------------------------------------------------------- Arnaldo Carvalho de Melo (11): perf script: Add a few missing conversions to fprintf style perf script: Use pr_debug where appropriate perf script: Use event_format__fprintf() perf evsel: Restore evsel->priv as a tool private area perf script: Allow creating per-event dump files tools include uapi: Grab a copy of linux/prctl.h perf trace beauty prctl: Generate 'option' string table from kernel headers perf script: Print information about per-event-dump files tools include uapi: Grab a copy of linux/kcmp.h perf trace beauty: Implement pid_fd beautifier perf trace beauty kcmp: Beautify arguments Jiri Olsa (5): perf tools: Rename struct perf_data_file to perf_data perf tools: Add struct perf_data_file perf tools: Add perf_data_file__write function perf stat: Move the shadow stats scale computation in perf_stat__update_shadow_stats perf stat: Make --per-thread update shadow stats to show metrics Namhyung Kim (3): perf callchain: Fix double mapping al->addr for children without self period perf srcline: Fix memory leak in addr2inlines() perf srcline: Show correct function name for srcline of callchains tools/include/uapi/linux/kcmp.h | 27 +++++ tools/include/uapi/linux/prctl.h | 200 +++++++++++++++++++++++++++++++ tools/perf/Documentation/perf-script.txt | 4 + tools/perf/Makefile.perf | 22 +++- tools/perf/builtin-annotate.c | 10 +- tools/perf/builtin-buildid-cache.c | 8 +- tools/perf/builtin-buildid-list.c | 16 +-- tools/perf/builtin-c2c.c | 10 +- tools/perf/builtin-diff.c | 18 +-- tools/perf/builtin-evlist.c | 12 +- tools/perf/builtin-inject.c | 36 +++--- tools/perf/builtin-kmem.c | 8 +- tools/perf/builtin-kvm.c | 14 ++- tools/perf/builtin-lock.c | 12 +- tools/perf/builtin-mem.c | 12 +- tools/perf/builtin-record.c | 50 ++++---- tools/perf/builtin-report.c | 14 +-- tools/perf/builtin-sched.c | 24 ++-- tools/perf/builtin-script.c | 169 ++++++++++++++++++++++---- tools/perf/builtin-stat.c | 39 +++--- tools/perf/builtin-timechart.c | 14 ++- tools/perf/builtin-trace.c | 40 ++++++- tools/perf/check-headers.sh | 2 + tools/perf/tests/topology.c | 22 ++-- tools/perf/trace/beauty/Build | 2 + tools/perf/trace/beauty/beauty.h | 18 +++ tools/perf/trace/beauty/kcmp.c | 44 +++++++ tools/perf/trace/beauty/kcmp_type.sh | 10 ++ tools/perf/trace/beauty/prctl.c | 82 +++++++++++++ tools/perf/trace/beauty/prctl_option.sh | 17 +++ tools/perf/util/auxtrace.c | 4 +- tools/perf/util/callchain.c | 5 +- tools/perf/util/data-convert-bt.c | 12 +- tools/perf/util/data.c | 94 ++++++++------- tools/perf/util/data.h | 38 +++--- tools/perf/util/evsel.h | 3 + tools/perf/util/header.c | 20 ++-- tools/perf/util/intel-bts.c | 6 +- tools/perf/util/intel-pt.c | 6 +- tools/perf/util/jit.h | 2 +- tools/perf/util/jitdump.c | 10 +- tools/perf/util/session.c | 44 +++---- tools/perf/util/session.h | 4 +- tools/perf/util/srcline.c | 102 +++++++++------- tools/perf/util/stat-shadow.c | 48 ++++---- tools/perf/util/stat.c | 24 ++-- tools/perf/util/stat.h | 2 +- 47 files changed, 999 insertions(+), 381 deletions(-) create mode 100644 tools/include/uapi/linux/kcmp.h create mode 100644 tools/include/uapi/linux/prctl.h create mode 100644 tools/perf/trace/beauty/kcmp.c create mode 100755 tools/perf/trace/beauty/kcmp_type.sh create mode 100644 tools/perf/trace/beauty/prctl.c create mode 100755 tools/perf/trace/beauty/prctl_option.sh Test results: The first ones are container (docker) based builds of tools/perf with and without libelf support. Where clang is available, it is also used to build perf with/without libelf. The objtool and samples/bpf/ builds are disabled now that I'm switching from using the sources in a local volume to fetching them from a http server to build it inside the container, to make it easier to build in a container cluster. Those will come back later. Several are cross builds, the ones with -x-ARCH and the android one, and those may not have all the features built, due to lack of multi-arch devel packages, available and being used so far on just a few, like debian:experimental-x-{arm64,mipsel}. The 'perf test' one will perform a variety of tests exercising tools/perf/util/, tools/lib/{bpf,traceevent,etc}, as well as run perf commands with a variety of command line event specifications to then intercept the sys_perf_event syscall to check that the perf_event_attr fields are set up as expected, among a variety of other unit tests. Then there is the 'make -C tools/perf build-test' ones, that build tools/perf/ with a variety of feature sets, exercising the build with an incomplete set of features as well as with a complete one. It is planned to have it run on each of the containers mentioned above, using some container orchestration infrastructure. Get in contact if interested in helping having this in place. # dm 1 alpine:3.4: Ok gcc (Alpine 5.3.0) 5.3.0 2 alpine:3.5: Ok gcc (Alpine 6.2.1) 6.2.1 20160822 3 alpine:3.6: Ok gcc (Alpine 6.3.0) 6.3.0 4 alpine:edge: Ok gcc (Alpine 6.4.0) 6.4.0 5 android-ndk:r12b-arm: Ok arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease) 6 android-ndk:r15c-arm: Ok arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease) 7 centos:5: Ok gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55) 8 centos:6: Ok gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18) 9 centos:7: Ok gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16) 10 debian:7: Ok gcc (Debian 4.7.2-5) 4.7.2 11 debian:8: Ok gcc (Debian 4.9.2-10) 4.9.2 12 debian:9: Ok gcc (Debian 6.3.0-18) 6.3.0 20170516 13 debian:experimental: Ok gcc (Debian 7.2.0-11) 7.2.0 14 debian:experimental-x-arm64: Ok aarch64-linux-gnu-gcc (Debian 7.2.0-6) 7.2.0 15 debian:experimental-x-mips: Ok mips-linux-gnu-gcc (Debian 7.2.0-6) 7.2.0 16 debian:experimental-x-mips64: Ok mips64-linux-gnuabi64-gcc (Debian 7.2.0-6) 7.2.0 17 debian:experimental-x-mipsel: Ok mipsel-linux-gnu-gcc (Debian 7.2.0-6) 7.2.0 18 fedora:20: Ok gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-7) 19 fedora:21: Ok gcc (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6) 20 fedora:22: Ok gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6) 21 fedora:23: Ok gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6) 22 fedora:24: Ok gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1) 23 fedora:24-x-ARC-uClibc: Ok arc-linux-gcc (ARCompact ISA Linux uClibc toolchain 2017.09-rc2) 7.1.1 20170710 24 fedora:25: Ok gcc (GCC) 6.4.1 20170727 (Red Hat 6.4.1-1) 25 fedora:26: Ok gcc (GCC) 7.2.1 20170915 (Red Hat 7.2.1-2) 26 fedora:rawhide: Ok gcc (GCC) 7.2.1 20170829 (Red Hat 7.2.1-1) 27 mageia:5: Ok gcc (GCC) 4.9.2 28 mageia:6: Ok gcc (Mageia 5.4.0-5.mga6) 5.4.0 29 opensuse:42.1: Ok gcc (SUSE Linux) 4.8.5 30 opensuse:42.2: Ok gcc (SUSE Linux) 4.8.5 31 opensuse:42.3: Ok gcc (SUSE Linux) 4.8.5 32 opensuse:tumbleweed: Ok gcc (SUSE Linux) 7.2.1 20170901 [gcc-7-branch revision 251580] 33 oraclelinux:6: Ok gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18) 34 oraclelinux:7: Ok gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16) 35 ubuntu:12.04.5: Ok gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 36 ubuntu:14.04.4: Ok gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4 37 ubuntu:14.04.4-x-linaro-arm64: Ok aarch64-linux-gnu-gcc (Linaro GCC 5.4-2017.05) 5.4.1 20170404 38 ubuntu:15.04: Ok gcc (Ubuntu 4.9.2-10ubuntu13) 4.9.2 39 ubuntu:15.10: Ok gcc (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010 40 ubuntu:16.04: Ok gcc (Ubuntu 5.4.0-6ubuntu1~16.04.5) 5.4.0 20160609 41 ubuntu:16.04-x-arm: Ok arm-linux-gnueabihf-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609 42 ubuntu:16.04-x-arm64: Ok aarch64-linux-gnu-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609 43 ubuntu:16.04-x-powerpc: Ok powerpc-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609 44 ubuntu:16.04-x-powerpc64: Ok powerpc64-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.1) 5.4.0 20160609 45 ubuntu:16.04-x-powerpc64el: Ok powerpc64le-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609 46 ubuntu:16.04-x-s390: Ok s390x-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609 47 ubuntu:16.10: Ok gcc (Ubuntu 6.2.0-5ubuntu12) 6.2.0 20161005 48 ubuntu:17.04: Ok gcc (Ubuntu 6.3.0-12ubuntu2) 6.3.0 20170406 49 ubuntu:17.10: Ok gcc (Ubuntu 7.2.0-8ubuntu3) 7.2.0 # # uname -a Linux jouet 4.14.0-rc6+ #1 SMP Tue Oct 31 14:43:51 -03 2017 x86_64 x86_64 x86_64 GNU/Linux # perf test 1: vmlinux symtab matches kallsyms : Ok 2: Detect openat syscall event : Ok 3: Detect openat syscall event on all cpus : Ok 4: Read samples using the mmap interface : Ok 5: Test data source output : Ok 6: Parse event definition strings : Ok 7: Simple expression parser : Ok 8: PERF_RECORD_* events & perf_sample fields : Ok 9: Parse perf pmu format : Ok 10: DSO data read : Ok 11: DSO data cache : Ok 12: DSO data reopen : Ok 13: Roundtrip evsel->name : Ok 14: Parse sched tracepoints fields : Ok 15: syscalls:sys_enter_openat event fields : Ok 16: Setup struct perf_event_attr : Ok 17: Match and link multiple hists : Ok 18: 'import perf' in python : Ok 19: Breakpoint overflow signal handler : Ok 20: Breakpoint overflow sampling : Ok 21: Number of exit events of a simple workload : Ok 22: Software clock events period values : Ok 23: Object code reading : Ok 24: Sample parsing : Ok 25: Use a dummy software event to keep tracking : Ok 26: Parse with no sample_id_all bit set : Ok 27: Filter hist entries : Ok 28: Lookup mmap thread : Ok 29: Share thread mg : Ok 30: Sort output of hist entries : Ok 31: Cumulate child hist entries : Ok 32: Track with sched_switch : Ok 33: Filter fds with revents mask in a fdarray : Ok 34: Add fd to a fdarray, making it autogrow : Ok 35: kmod_path__parse : Ok 36: Thread map : Ok 37: LLVM search and compile : 37.1: Basic BPF llvm compile : Ok 37.2: kbuild searching : Ok 37.3: Compile source for BPF prologue generation : Ok 37.4: Compile source for BPF relocation : Ok 38: Session topology : Ok 39: BPF filter : 39.1: Basic BPF filtering : Ok 39.2: BPF pinning : Ok 39.3: BPF prologue generation : Ok 39.4: BPF relocation checker : Ok 40: Synthesize thread map : Ok 41: Remove thread map : Ok 42: Synthesize cpu map : Ok 43: Synthesize stat config : Ok 44: Synthesize stat : Ok 45: Synthesize stat round : Ok 46: Synthesize attr update : Ok 47: Event times : Ok 48: Read backward ring buffer : Ok 49: Print cpu map : Ok 50: Probe SDT events : Ok 51: is_printable_array : Ok 52: Print bitmap : Ok 53: perf hooks : Ok 54: builtin clang support : Skip (not compiled in) 55: unit_number__scnprintf : Ok 56: x86 rdpmc : Ok 57: Convert perf time to TSC : Ok 58: DWARF unwind : Ok 59: x86 instruction decoder - new instructions : Ok 60: Use vfs_getname probe to get syscall args filenames : Ok 61: probe libc's inet_pton & backtrace it with ping : Ok 62: Check open filename arg using perf trace + vfs_getname: Ok 63: Add vfs_getname probe to get syscall args filenames : Ok # $ make -C tools/perf build-test make: Entering directory '/home/acme/git/linux/tools/perf' - tarpkg: ./tests/perf-targz-src-pkg . make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1 make_clean_all_O: make clean all make_no_libnuma_O: make NO_LIBNUMA=1 make_no_demangle_O: make NO_DEMANGLE=1 make_with_clangllvm_O: make LIBCLANGLLVM=1 make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1 make_no_gtk2_O: make NO_GTK2=1 make_static_O: make LDFLAGS=-static make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1 make_pure_O: make make_no_libaudit_O: make NO_LIBAUDIT=1 make_debug_O: make DEBUG=1 make_no_newt_O: make NO_NEWT=1 make_util_pmu_bison_o_O: make util/pmu-bison.o make_install_prefix_slash_O: make install prefix=/tmp/krava/ make_no_slang_O: make NO_SLANG=1 make_no_auxtrace_O: make NO_AUXTRACE=1 make_install_prefix_O: make install prefix=/tmp/krava make_no_libbionic_O: make NO_LIBBIONIC=1 make_doc_O: make doc make_tags_O: make tags make_with_babeltrace_O: make LIBBABELTRACE=1 make_no_libelf_O: make NO_LIBELF=1 make_no_libpython_O: make NO_LIBPYTHON=1 make_help_O: make help make_no_libbpf_O: make NO_LIBBPF=1 make_perf_o_O: make perf.o make_no_libunwind_O: make NO_LIBUNWIND=1 make_install_O: make install make_util_map_o_O: make util/map.o make_install_bin_O: make install-bin make_no_backtrace_O: make NO_BACKTRACE=1 make_no_libperl_O: make NO_LIBPERL=1 make_minimal_O: make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1 OK make: Leaving directory '/home/acme/git/linux/tools/perf' $ ^ permalink raw reply [flat|nested] 53+ messages in thread
* [GIT PULL 00/19] perf/core improvements and fixes @ 2017-08-14 16:27 Arnaldo Carvalho de Melo 2017-08-14 17:39 ` Ingo Molnar 0 siblings, 1 reply; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2017-08-14 16:27 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, linux-perf-users, Arnaldo Carvalho de Melo, Adrian Hunter, Andi Kleen, Anton Blanchard, David Ahern, Hendrik Brueckner, Jiri Olsa, linuxppc-dev, Matt Fleming, Michael Ellerman, Michael Petlan, Milian Wolff, Namhyung Kim, Naveen N . Rao, Paul Clarke, Peter Zijlstra, Sukadev Bhattiprolu, Thomas-Mich Richter, Wang Nan, Yao Jin, Zvonko Kosic, Arnaldo Carvalho de Melo Hi Ingo, Please consider pulling, - Arnaldo Test results at the end of this message, as usual. The following changes since commit 82119cbe8e1e32cc2a941393e59816e731681310: Merge tag 'perf-core-for-mingo-4.14-20170801' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2017-08-10 17:07:02 +0200) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-4.14-20170814 for you to fetch changes up to 8fc375d7d36c72b4c2d55f5c24be022a939295d4: perf test shell: Add uprobes + backtrace ping test (2017-08-11 16:18:49 -0300) ---------------------------------------------------------------- perf/core improvements and fixes: Infrastructure: - Do not consider empty files as valid srclines (Milian Wolff) - Fix wrong size in perf_record_mmap for last kernel module, which resulted in erroneous symbol resolution in at least s390x (Thomas Richter) - Add missing newline to expr parser error messages (Andi Kleen) - Fix saved values rbtree lookup in 'perf stat' (Andi Kleen) - Add support for shell based tests in 'perf test', add a few that run 'perf probe', 'perf trace', using kprobes, uprobes to check the output of those tools and the effects on the system, checking, for instance, DWARF backtraces from uprobes (Arnaldo Carvalho de Melo) Arch specific: - Add ppc64le to audit uname list in the python scripting support (Naveen N. Rao) - Update POWER9 vendor events tables (Sukadev Bhattiprolu) - Fix module symbol adjustment for s390x (Thomas Richter) Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> ---------------------------------------------------------------- Andi Kleen (2): perf stat: Fix saved values rbtree lookup perf tools: Add missing newline to expr parser error messages Arnaldo Carvalho de Melo (10): perf test: Make 'list' subcommand match main 'perf test' numbering/matching perf test: Add 'struct test *' to the test functions perf test: Add infrastructure to run shell based tests perf test: Make 'list' use same filtering code as main 'perf test' perf test shell: Add 'probe_vfs_getname' shell test perf test shell: Install shell tests perf test shell: Move vfs_getname probe function to lib perf test shell: Add test using probe:vfs_getname and verifying results perf test shell: Add test using vfs_getname + 'perf trace' perf test shell: Add uprobes + backtrace ping test Milian Wolff (2): perf util: Take elf_name as const string in dso__demangle_sym perf srcline: Do not consider empty files as valid srclines Naveen N. Rao (1): perf scripting python: Add ppc64le to audit uname list Sukadev Bhattiprolu (2): perf vendor events powerpc: remove suffix in mapfile perf vendor events powerpc: Update POWER9 events Thomas Richter (2): perf record: Fix wrong size in perf_record_mmap for last kernel module perf report: Fix module symbol adjustment for s390x tools/perf/Makefile.perf | 6 +- tools/perf/arch/s390/util/sym-handling.c | 7 + tools/perf/arch/x86/include/arch-tests.h | 11 +- tools/perf/arch/x86/tests/insn-x86.c | 2 +- tools/perf/arch/x86/tests/intel-cqm.c | 2 +- tools/perf/arch/x86/tests/perf-time-to-tsc.c | 2 +- tools/perf/arch/x86/tests/rdpmc.c | 2 +- tools/perf/pmu-events/arch/powerpc/mapfile.csv | 20 +- .../perf/pmu-events/arch/powerpc/power9/cache.json | 191 +- .../arch/powerpc/power9/floating-point.json | 42 +- .../pmu-events/arch/powerpc/power9/frontend.json | 517 ++-- .../pmu-events/arch/powerpc/power9/marked.json | 905 +++---- .../pmu-events/arch/powerpc/power9/memory.json | 178 +- .../perf/pmu-events/arch/powerpc/power9/other.json | 2768 ++++++++++++++++---- .../pmu-events/arch/powerpc/power9/pipeline.json | 779 +++--- tools/perf/pmu-events/arch/powerpc/power9/pmc.json | 167 +- .../arch/powerpc/power9/translation.json | 314 +-- .../python/Perf-Trace-Util/lib/Perf/Trace/Util.py | 1 + tools/perf/tests/attr.c | 2 +- tools/perf/tests/backward-ring-buffer.c | 2 +- tools/perf/tests/bitmap.c | 2 +- tools/perf/tests/bp_signal.c | 2 +- tools/perf/tests/bp_signal_overflow.c | 2 +- tools/perf/tests/bpf.c | 4 +- tools/perf/tests/builtin-test.c | 184 +- tools/perf/tests/clang.c | 4 +- tools/perf/tests/code-reading.c | 2 +- tools/perf/tests/cpumap.c | 4 +- tools/perf/tests/dso-data.c | 6 +- tools/perf/tests/dwarf-unwind.c | 2 +- tools/perf/tests/event-times.c | 2 +- tools/perf/tests/event_update.c | 2 +- tools/perf/tests/evsel-roundtrip-name.c | 2 +- tools/perf/tests/evsel-tp-sched.c | 2 +- tools/perf/tests/expr.c | 2 +- tools/perf/tests/fdarray.c | 4 +- tools/perf/tests/hists_cumulate.c | 2 +- tools/perf/tests/hists_filter.c | 2 +- tools/perf/tests/hists_link.c | 2 +- tools/perf/tests/hists_output.c | 2 +- tools/perf/tests/is_printable_array.c | 2 +- tools/perf/tests/keep-tracking.c | 2 +- tools/perf/tests/kmod-path.c | 2 +- tools/perf/tests/llvm.c | 2 +- tools/perf/tests/mmap-basic.c | 2 +- tools/perf/tests/mmap-thread-lookup.c | 2 +- tools/perf/tests/openat-syscall-all-cpus.c | 2 +- tools/perf/tests/openat-syscall-tp-fields.c | 2 +- tools/perf/tests/openat-syscall.c | 2 +- tools/perf/tests/parse-events.c | 2 +- tools/perf/tests/parse-no-sample-id-all.c | 2 +- tools/perf/tests/perf-hooks.c | 2 +- tools/perf/tests/perf-record.c | 2 +- tools/perf/tests/pmu.c | 2 +- tools/perf/tests/python-use.c | 2 +- tools/perf/tests/sample-parsing.c | 2 +- tools/perf/tests/sdt.c | 4 +- tools/perf/tests/shell/lib/probe_vfs_getname.sh | 28 + tools/perf/tests/shell/probe_vfs_getname.sh | 10 + .../tests/shell/record+script_probe_vfs_getname.sh | 37 + .../perf/tests/shell/trace+probe_libc_inet_pton.sh | 40 + tools/perf/tests/shell/trace+probe_vfs_getname.sh | 31 + tools/perf/tests/stat.c | 6 +- tools/perf/tests/sw-clock.c | 2 +- tools/perf/tests/switch-tracking.c | 2 +- tools/perf/tests/task-exit.c | 2 +- tools/perf/tests/tests.h | 113 +- tools/perf/tests/thread-map.c | 6 +- tools/perf/tests/thread-mg-share.c | 2 +- tools/perf/tests/topology.c | 2 +- tools/perf/tests/unit_number__scnprintf.c | 2 +- tools/perf/tests/vmlinux-kallsyms.c | 2 +- tools/perf/util/expr.y | 2 +- tools/perf/util/machine.c | 4 +- tools/perf/util/srcline.c | 6 + tools/perf/util/stat-shadow.c | 6 +- tools/perf/util/symbol-elf.c | 12 +- tools/perf/util/symbol-minimal.c | 2 +- tools/perf/util/symbol.c | 21 +- tools/perf/util/symbol.h | 7 +- 80 files changed, 4054 insertions(+), 2479 deletions(-) create mode 100644 tools/perf/tests/shell/lib/probe_vfs_getname.sh create mode 100755 tools/perf/tests/shell/probe_vfs_getname.sh create mode 100755 tools/perf/tests/shell/record+script_probe_vfs_getname.sh create mode 100755 tools/perf/tests/shell/trace+probe_libc_inet_pton.sh create mode 100755 tools/perf/tests/shell/trace+probe_vfs_getname.sh Test results: The first ones are container (docker) based builds of tools/perf with and without libelf support, objtool where it is supported and samples/bpf/, ditto. Where clang is available, it is also used to build perf with/without libelf. Several are cross builds, the ones with -x-ARCH, and the android one, and those may not have all the features built, due to lack of multi-arch devel packages, available and being used so far on just a few, like debian:experimental-x-{arm64,mipsel}. The 'perf test' one will perform a variety of tests exercising tools/perf/util/, tools/lib/{bpf,traceevent,etc}, as well as run perf commands with a variety of command line event specifications to then intercept the sys_perf_event syscall to check that the perf_event_attr fields are set up as expected, among a variety of other unit tests. The 'perf test' also runs shell scripts exercising the tools, checking if they affect the system in certain ways, like setting up kprobes and uprobes, request callchains for well known programs and check that they are the expected ones, see if 'perf trace' beautifies system call arguments correctly, etc. Additionally, a new set of tests, script based, runs the tools in a live system, setting probes in place that then gets used by 'perf trace', with its output compared against expected results. Then there is the 'make -C tools/perf build-test' ones, that build tools/perf/ with a variety of feature sets, exercising the build with an incomplete set of features as well as with a complete one. It is planned to have it run on each of the containers mentioned above, using some container orchestration infrastructure. Get in contact if interested in helping having this in place. # dm 1 alpine:3.4: Ok 2 alpine:3.5: Ok 3 alpine:3.6: Ok 4 alpine:edge: Ok 5 android-ndk:r12b-arm: Ok 6 archlinux:latest: Ok 7 centos:5: Ok 8 centos:6: Ok 9 centos:7: Ok 10 debian:7: Ok 11 debian:8: Ok 12 debian:9: Ok 13 debian:experimental: Ok 14 debian:experimental-x-arm64: Ok 15 debian:experimental-x-mips: Ok 16 debian:experimental-x-mips64: Ok 17 debian:experimental-x-mipsel: Ok 18 fedora:20: Ok 19 fedora:21: Ok 20 fedora:22: Ok 21 fedora:23: Ok 22 fedora:24: Ok 23 fedora:24-x-ARC-uClibc: Ok 24 fedora:25: Ok 25 fedora:26: Ok 26 fedora:rawhide: Ok 27 mageia:5: Ok 28 opensuse:13.2: Ok 29 opensuse:42.1: Ok 30 opensuse:42.2: Ok 31 opensuse:tumbleweed: Ok 32 oraclelinux:6: Ok 33 oraclelinux:7: Ok 34 ubuntu:12.04.5: Ok 35 ubuntu:14.04.4: Ok 36 ubuntu:14.04.4-x-linaro-arm64: Ok 37 ubuntu:15.10: Ok 38 ubuntu:16.04: Ok 39 ubuntu:16.04-x-arm: Ok 40 ubuntu:16.04-x-arm64: Ok 41 ubuntu:16.04-x-powerpc: Ok 42 ubuntu:16.04-x-powerpc64: Ok 43 ubuntu:16.04-x-powerpc64el: Ok 44 ubuntu:16.04-x-s390: Ok 45 ubuntu:16.10: Ok 46 ubuntu:17.04: Ok 47 ubuntu:17.10: Ok # # uname -a Linux jouet 4.13.0-rc4+ #2 SMP Fri Aug 11 12:39:09 -03 2017 x86_64 x86_64 x86_64 GNU/Linux # perf test 1: vmlinux symtab matches kallsyms : Ok 2: Detect openat syscall event : Ok 3: Detect openat syscall event on all cpus : Ok 4: Read samples using the mmap interface : Ok 5: Parse event definition strings : Ok 6: Simple expression parser : Ok 7: PERF_RECORD_* events & perf_sample fields : Ok 8: Parse perf pmu format : Ok 9: DSO data read : Ok 10: DSO data cache : Ok 11: DSO data reopen : Ok 12: Roundtrip evsel->name : Ok 13: Parse sched tracepoints fields : Ok 14: syscalls:sys_enter_openat event fields : Ok 15: Setup struct perf_event_attr : Ok 16: Match and link multiple hists : Ok 17: 'import perf' in python : Ok 18: Breakpoint overflow signal handler : Ok 19: Breakpoint overflow sampling : Ok 20: Number of exit events of a simple workload : Ok 21: Software clock events period values : Ok 22: Object code reading : Ok 23: Sample parsing : Ok 24: Use a dummy software event to keep tracking : Ok 25: Parse with no sample_id_all bit set : Ok 26: Filter hist entries : Ok 27: Lookup mmap thread : Ok 28: Share thread mg : Ok 29: Sort output of hist entries : Ok 30: Cumulate child hist entries : Ok 31: Track with sched_switch : Ok 32: Filter fds with revents mask in a fdarray : Ok 33: Add fd to a fdarray, making it autogrow : Ok 34: kmod_path__parse : Ok 35: Thread map : Ok 36: LLVM search and compile : 36.1: Basic BPF llvm compile : Ok 36.2: kbuild searching : Ok 36.3: Compile source for BPF prologue generation : Ok 36.4: Compile source for BPF relocation : Ok 37: Session topology : Ok 38: BPF filter : 38.1: Basic BPF filtering : Ok 38.2: BPF pinning : Ok 38.3: BPF prologue generation : Ok 38.4: BPF relocation checker : Ok 39: Synthesize thread map : Ok 40: Remove thread map : Ok 41: Synthesize cpu map : Ok 42: Synthesize stat config : Ok 43: Synthesize stat : Ok 44: Synthesize stat round : Ok 45: Synthesize attr update : Ok 46: Event times : Ok 47: Read backward ring buffer : Ok 48: Print cpu map : Ok 49: Probe SDT events : Ok 50: is_printable_array : Ok 51: Print bitmap : Ok 52: perf hooks : Ok 53: builtin clang support : Skip (not compiled in) 54: unit_number__scnprintf : Ok 55: x86 rdpmc : Ok 56: Convert perf time to TSC : Ok 57: DWARF unwind : Ok 58: x86 instruction decoder - new instructions : Ok 59: Intel cqm nmi context read : Skip 60: Use vfs_getname probe to get syscall args filenames : Ok 61: probe libc's inet_pton & backtrace it with ping : Ok 62: Check open filename arg using perf trace + vfs_getname: Ok 63: Add vfs_getname probe to get syscall args filenames : Ok # # The static build test works on Fedora 25, is failing on Fedora 26, # this issue is being investigated. $ make -C tools/perf build-test make: Entering directory '/home/acme/git/linux/tools/perf' - tarpkg: ./tests/perf-targz-src-pkg . make_no_slang_O: make NO_SLANG=1 make_install_prefix_O: make install prefix=/tmp/krava make_install_bin_O: make install-bin make_debug_O: make DEBUG=1 make_clean_all_O: make clean all make_install_prefix_slash_O: make install prefix=/tmp/krava/ make_no_auxtrace_O: make NO_AUXTRACE=1 make_with_babeltrace_O: make LIBBABELTRACE=1 make_minimal_O: make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1 make_no_libpython_O: make NO_LIBPYTHON=1 make_no_libaudit_O: make NO_LIBAUDIT=1 make_help_O: make help make_no_demangle_O: make NO_DEMANGLE=1 make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1 make_no_libunwind_O: make NO_LIBUNWIND=1 make_install_O: make install make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1 make_no_newt_O: make NO_NEWT=1 make_util_pmu_bison_o_O: make util/pmu-bison.o make_perf_o_O: make perf.o make_no_gtk2_O: make NO_GTK2=1 make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1 make_no_libbpf_O: make NO_LIBBPF=1 make_with_clangllvm_O: make LIBCLANGLLVM=1 make_tags_O: make tags make_util_map_o_O: make util/map.o make_pure_O: make make_no_libperl_O: make NO_LIBPERL=1 make_no_libbionic_O: make NO_LIBBIONIC=1 make_no_backtrace_O: make NO_BACKTRACE=1 make_no_libnuma_O: make NO_LIBNUMA=1 make_no_libelf_O: make NO_LIBELF=1 make_doc_O: make doc OK make: Leaving directory '/home/acme/git/linux/tools/perf' $ ^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: [GIT PULL 00/19] perf/core improvements and fixes 2017-08-14 16:27 Arnaldo Carvalho de Melo @ 2017-08-14 17:39 ` Ingo Molnar 2017-08-14 17:52 ` Arnaldo Carvalho de Melo 0 siblings, 1 reply; 53+ messages in thread From: Ingo Molnar @ 2017-08-14 17:39 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: linux-kernel, linux-perf-users, Adrian Hunter, Andi Kleen, Anton Blanchard, David Ahern, Hendrik Brueckner, Jiri Olsa, linuxppc-dev, Matt Fleming, Michael Ellerman, Michael Petlan, Milian Wolff, Namhyung Kim, Naveen N . Rao, Paul Clarke, Peter Zijlstra, Sukadev Bhattiprolu, Thomas-Mich Richter, Wang Nan, Yao Jin, Zvonko Kosic, Arnaldo Carvalho de Melo * Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > Hi Ingo, > > Please consider pulling, > > - Arnaldo > > Test results at the end of this message, as usual. > > > The following changes since commit 82119cbe8e1e32cc2a941393e59816e731681310: > > Merge tag 'perf-core-for-mingo-4.14-20170801' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2017-08-10 17:07:02 +0200) > > are available in the git repository at: > > git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-4.14-20170814 > > for you to fetch changes up to 8fc375d7d36c72b4c2d55f5c24be022a939295d4: > > perf test shell: Add uprobes + backtrace ping test (2017-08-11 16:18:49 -0300) > > ---------------------------------------------------------------- > perf/core improvements and fixes: > > Infrastructure: > > - Do not consider empty files as valid srclines (Milian Wolff) > > - Fix wrong size in perf_record_mmap for last kernel module, > which resulted in erroneous symbol resolution in at least s390x (Thomas Richter) > > - Add missing newline to expr parser error messages (Andi Kleen) > > - Fix saved values rbtree lookup in 'perf stat' (Andi Kleen) > > - Add support for shell based tests in 'perf test', add a few that > run 'perf probe', 'perf trace', using kprobes, uprobes to check > the output of those tools and the effects on the system, checking, > for instance, DWARF backtraces from uprobes (Arnaldo Carvalho de Melo) > > Arch specific: > > - Add ppc64le to audit uname list in the python scripting support (Naveen N. Rao) > > - Update POWER9 vendor events tables (Sukadev Bhattiprolu) > > - Fix module symbol adjustment for s390x (Thomas Richter) > > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> > > ---------------------------------------------------------------- > Andi Kleen (2): > perf stat: Fix saved values rbtree lookup > perf tools: Add missing newline to expr parser error messages > > Arnaldo Carvalho de Melo (10): > perf test: Make 'list' subcommand match main 'perf test' numbering/matching > perf test: Add 'struct test *' to the test functions > perf test: Add infrastructure to run shell based tests > perf test: Make 'list' use same filtering code as main 'perf test' > perf test shell: Add 'probe_vfs_getname' shell test > perf test shell: Install shell tests > perf test shell: Move vfs_getname probe function to lib > perf test shell: Add test using probe:vfs_getname and verifying results > perf test shell: Add test using vfs_getname + 'perf trace' > perf test shell: Add uprobes + backtrace ping test > > Milian Wolff (2): > perf util: Take elf_name as const string in dso__demangle_sym > perf srcline: Do not consider empty files as valid srclines > > Naveen N. Rao (1): > perf scripting python: Add ppc64le to audit uname list > > Sukadev Bhattiprolu (2): > perf vendor events powerpc: remove suffix in mapfile > perf vendor events powerpc: Update POWER9 events > > Thomas Richter (2): > perf record: Fix wrong size in perf_record_mmap for last kernel module > perf report: Fix module symbol adjustment for s390x > > tools/perf/Makefile.perf | 6 +- > tools/perf/arch/s390/util/sym-handling.c | 7 + > tools/perf/arch/x86/include/arch-tests.h | 11 +- > tools/perf/arch/x86/tests/insn-x86.c | 2 +- > tools/perf/arch/x86/tests/intel-cqm.c | 2 +- > tools/perf/arch/x86/tests/perf-time-to-tsc.c | 2 +- > tools/perf/arch/x86/tests/rdpmc.c | 2 +- > tools/perf/pmu-events/arch/powerpc/mapfile.csv | 20 +- > .../perf/pmu-events/arch/powerpc/power9/cache.json | 191 +- > .../arch/powerpc/power9/floating-point.json | 42 +- > .../pmu-events/arch/powerpc/power9/frontend.json | 517 ++-- > .../pmu-events/arch/powerpc/power9/marked.json | 905 +++---- > .../pmu-events/arch/powerpc/power9/memory.json | 178 +- > .../perf/pmu-events/arch/powerpc/power9/other.json | 2768 ++++++++++++++++---- > .../pmu-events/arch/powerpc/power9/pipeline.json | 779 +++--- > tools/perf/pmu-events/arch/powerpc/power9/pmc.json | 167 +- > .../arch/powerpc/power9/translation.json | 314 +-- > .../python/Perf-Trace-Util/lib/Perf/Trace/Util.py | 1 + > tools/perf/tests/attr.c | 2 +- > tools/perf/tests/backward-ring-buffer.c | 2 +- > tools/perf/tests/bitmap.c | 2 +- > tools/perf/tests/bp_signal.c | 2 +- > tools/perf/tests/bp_signal_overflow.c | 2 +- > tools/perf/tests/bpf.c | 4 +- > tools/perf/tests/builtin-test.c | 184 +- > tools/perf/tests/clang.c | 4 +- > tools/perf/tests/code-reading.c | 2 +- > tools/perf/tests/cpumap.c | 4 +- > tools/perf/tests/dso-data.c | 6 +- > tools/perf/tests/dwarf-unwind.c | 2 +- > tools/perf/tests/event-times.c | 2 +- > tools/perf/tests/event_update.c | 2 +- > tools/perf/tests/evsel-roundtrip-name.c | 2 +- > tools/perf/tests/evsel-tp-sched.c | 2 +- > tools/perf/tests/expr.c | 2 +- > tools/perf/tests/fdarray.c | 4 +- > tools/perf/tests/hists_cumulate.c | 2 +- > tools/perf/tests/hists_filter.c | 2 +- > tools/perf/tests/hists_link.c | 2 +- > tools/perf/tests/hists_output.c | 2 +- > tools/perf/tests/is_printable_array.c | 2 +- > tools/perf/tests/keep-tracking.c | 2 +- > tools/perf/tests/kmod-path.c | 2 +- > tools/perf/tests/llvm.c | 2 +- > tools/perf/tests/mmap-basic.c | 2 +- > tools/perf/tests/mmap-thread-lookup.c | 2 +- > tools/perf/tests/openat-syscall-all-cpus.c | 2 +- > tools/perf/tests/openat-syscall-tp-fields.c | 2 +- > tools/perf/tests/openat-syscall.c | 2 +- > tools/perf/tests/parse-events.c | 2 +- > tools/perf/tests/parse-no-sample-id-all.c | 2 +- > tools/perf/tests/perf-hooks.c | 2 +- > tools/perf/tests/perf-record.c | 2 +- > tools/perf/tests/pmu.c | 2 +- > tools/perf/tests/python-use.c | 2 +- > tools/perf/tests/sample-parsing.c | 2 +- > tools/perf/tests/sdt.c | 4 +- > tools/perf/tests/shell/lib/probe_vfs_getname.sh | 28 + > tools/perf/tests/shell/probe_vfs_getname.sh | 10 + > .../tests/shell/record+script_probe_vfs_getname.sh | 37 + > .../perf/tests/shell/trace+probe_libc_inet_pton.sh | 40 + > tools/perf/tests/shell/trace+probe_vfs_getname.sh | 31 + > tools/perf/tests/stat.c | 6 +- > tools/perf/tests/sw-clock.c | 2 +- > tools/perf/tests/switch-tracking.c | 2 +- > tools/perf/tests/task-exit.c | 2 +- > tools/perf/tests/tests.h | 113 +- > tools/perf/tests/thread-map.c | 6 +- > tools/perf/tests/thread-mg-share.c | 2 +- > tools/perf/tests/topology.c | 2 +- > tools/perf/tests/unit_number__scnprintf.c | 2 +- > tools/perf/tests/vmlinux-kallsyms.c | 2 +- > tools/perf/util/expr.y | 2 +- > tools/perf/util/machine.c | 4 +- > tools/perf/util/srcline.c | 6 + > tools/perf/util/stat-shadow.c | 6 +- > tools/perf/util/symbol-elf.c | 12 +- > tools/perf/util/symbol-minimal.c | 2 +- > tools/perf/util/symbol.c | 21 +- > tools/perf/util/symbol.h | 7 +- > 80 files changed, 4054 insertions(+), 2479 deletions(-) > create mode 100644 tools/perf/tests/shell/lib/probe_vfs_getname.sh > create mode 100755 tools/perf/tests/shell/probe_vfs_getname.sh > create mode 100755 tools/perf/tests/shell/record+script_probe_vfs_getname.sh > create mode 100755 tools/perf/tests/shell/trace+probe_libc_inet_pton.sh > create mode 100755 tools/perf/tests/shell/trace+probe_vfs_getname.sh Pulled, thanks a lot Arnaldo! Ingo ^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: [GIT PULL 00/19] perf/core improvements and fixes 2017-08-14 17:39 ` Ingo Molnar @ 2017-08-14 17:52 ` Arnaldo Carvalho de Melo 0 siblings, 0 replies; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2017-08-14 17:52 UTC (permalink / raw) To: Ingo Molnar Cc: Kim Phillips, linux-kernel, linux-perf-users, Adrian Hunter, Andi Kleen, Anton Blanchard, David Ahern, Hendrik Brueckner, Jiri Olsa, linuxppc-dev, Matt Fleming, Michael Ellerman, Michael Petlan, Milian Wolff, Namhyung Kim, Naveen N . Rao, Paul Clarke, Peter Zijlstra, Sukadev Bhattiprolu, Thomas-Mich Richter, Wang Nan, Yao Jin, Zvonko Kosic, acme Em Mon, Aug 14, 2017 at 07:39:48PM +0200, Ingo Molnar escreveu: > * Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > > Infrastructure: > > - Add support for shell based tests in 'perf test', add a few that > > run 'perf probe', 'perf trace', using kprobes, uprobes to check > > the output of those tools and the effects on the system, checking, > > for instance, DWARF backtraces from uprobes (Arnaldo Carvalho de Melo) <SNIP> > > create mode 100644 tools/perf/tests/shell/lib/probe_vfs_getname.sh > > create mode 100755 tools/perf/tests/shell/probe_vfs_getname.sh > > create mode 100755 tools/perf/tests/shell/record+script_probe_vfs_getname.sh > > create mode 100755 tools/perf/tests/shell/trace+probe_libc_inet_pton.sh > > create mode 100755 tools/perf/tests/shell/trace+probe_vfs_getname.sh > > Pulled, thanks a lot Arnaldo! Thanks! I'm working with Kim Phillips to fix some issues he noticed while testing on his ARM systems where 'perf probe' is not available, my perf/core branch has several fixes to handle this that will be in my next pull request. - Arnaldo ^ permalink raw reply [flat|nested] 53+ messages in thread
* [GIT PULL 00/19] perf/core improvements and fixes @ 2017-03-14 18:50 Arnaldo Carvalho de Melo 2017-03-15 18:29 ` Ingo Molnar 0 siblings, 1 reply; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2017-03-14 18:50 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Arnaldo Carvalho de Melo, Alexander Shishkin, Alexei Starovoitov, Ananth N Mavinakayanahalli, Andi Kleen, Aravinda Prasad, Brendan Gregg, Changbin Du, Daniel Borkmann, Eric Biederman, Feng Tang, Hari Bathini, Jiri Olsa, kernel-team, linuxppc-dev, Masami Hiramatsu, Michael Ellerman, Namhyung Kim, Naveen N . Rao, Peter Zijlstra, Sargun Dhillon, Steven Rostedt, Arnaldo Carvalho de Melo Hi Ingo, Please consider pulling, - Arnaldo Test results at the end of this message, as usual. The following changes since commit 84e5b549214f2160c12318aac549de85f600c79a: Merge tag 'perf-core-for-mingo-4.11-20170306' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2017-03-07 08:14:14 +0100) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-4.12-20170314 for you to fetch changes up to 5f6bee34707973ea7879a7857fd63ddccc92fff3: kprobes: Convert kprobe_exceptions_notify to use NOKPROBE_SYMBOL (2017-03-14 15:17:40 -0300) ---------------------------------------------------------------- perf/core improvements and fixes: New features: - Add PERF_RECORD_NAMESPACES so that the kernel can record information required to associate samples to namespaces, helping in container problem characterization. Now the 'perf record has a --namespace' option to ask for such info, and when present, it can be used, initially, via a new sort order, 'cgroup_id', allowing histogram entry bucketization by a (device, inode) based cgroup identifier (Hari Bathini) - Add --next option to 'perf sched timehist', showing what is the next thread to run (Brendan Gregg) Fixes: - Fix segfault with basic block 'cycles' sort dimension (Changbin Du) - Add c2c to command-list.txt, making it appear in the 'perf help' output (Changbin Du) - Fix zeroing of 'abs_path' variable in the perf hists browser switch file code (Changbin Du) - Hide tips messages when -q/--quiet is given to 'perf report' (Namhyung Kim) Infrastructure: - Use ref_reloc_sym + offset to setup kretprobes (Naveen Rao) - Ignore generated files pmu-events/{jevents,pmu-events.c} for git (Changbin Du) Documentation: - Document +field style argument support for --field option (Changbin Du) - Clarify 'perf c2c --stats' help message (Namhyung Kim) Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> ---------------------------------------------------------------- Brendan Gregg (1): perf sched timehist: Add --next option Changbin Du (5): perf tools: Missing c2c command in command-list perf tools: Ignore generated files pmu-events/{jevents,pmu-events.c} for git perf sort: Fix segfault with basic block 'cycles' sort dimension perf report: Document +field style argument support for --field option perf hists browser: Fix typo in function switch_data_file Hari Bathini (5): perf: Add PERF_RECORD_NAMESPACES to include namespaces related info perf tools: Add PERF_RECORD_NAMESPACES to include namespaces related info perf record: Synthesize namespace events for current processes perf script: Add script print support for namespace events perf tools: Add 'cgroup_id' sort order keyword Namhyung Kim (3): perf report: Hide tip message when -q option is given perf c2c: Clarify help message of --stats option perf c2c: Fix display bug when using pipe Naveen N. Rao (5): perf probe: Factor out the ftrace README scanning perf kretprobes: Offset from reloc_sym if kernel supports it perf powerpc: Choose local entry point with kretprobes doc: trace/kprobes: add information about NOKPROBE_SYMBOL kprobes: Convert kprobe_exceptions_notify to use NOKPROBE_SYMBOL Documentation/trace/kprobetrace.txt | 5 +- include/linux/perf_event.h | 2 + include/uapi/linux/perf_event.h | 32 +++++- kernel/events/core.c | 139 ++++++++++++++++++++++++++ kernel/fork.c | 2 + kernel/kprobes.c | 5 +- kernel/nsproxy.c | 3 + tools/include/uapi/linux/perf_event.h | 32 +++++- tools/perf/.gitignore | 2 + tools/perf/Documentation/perf-record.txt | 3 + tools/perf/Documentation/perf-report.txt | 7 +- tools/perf/Documentation/perf-sched.txt | 4 + tools/perf/Documentation/perf-script.txt | 3 + tools/perf/arch/powerpc/util/sym-handling.c | 14 ++- tools/perf/builtin-annotate.c | 1 + tools/perf/builtin-c2c.c | 4 +- tools/perf/builtin-diff.c | 1 + tools/perf/builtin-inject.c | 13 +++ tools/perf/builtin-kmem.c | 1 + tools/perf/builtin-kvm.c | 2 + tools/perf/builtin-lock.c | 1 + tools/perf/builtin-mem.c | 1 + tools/perf/builtin-record.c | 35 ++++++- tools/perf/builtin-report.c | 4 +- tools/perf/builtin-sched.c | 26 ++++- tools/perf/builtin-script.c | 41 ++++++++ tools/perf/builtin-trace.c | 3 +- tools/perf/command-list.txt | 1 + tools/perf/perf.h | 1 + tools/perf/ui/browsers/hists.c | 2 +- tools/perf/util/Build | 1 + tools/perf/util/data-convert-bt.c | 1 + tools/perf/util/event.c | 150 ++++++++++++++++++++++++++-- tools/perf/util/event.h | 19 ++++ tools/perf/util/evsel.c | 3 + tools/perf/util/hist.c | 7 ++ tools/perf/util/hist.h | 1 + tools/perf/util/machine.c | 34 +++++++ tools/perf/util/machine.h | 3 + tools/perf/util/namespaces.c | 36 +++++++ tools/perf/util/namespaces.h | 26 +++++ tools/perf/util/probe-event.c | 12 +-- tools/perf/util/probe-file.c | 77 ++++++++------ tools/perf/util/probe-file.h | 1 + tools/perf/util/session.c | 7 ++ tools/perf/util/sort.c | 46 +++++++++ tools/perf/util/sort.h | 7 ++ tools/perf/util/thread.c | 44 +++++++- tools/perf/util/thread.h | 6 ++ tools/perf/util/tool.h | 2 + 50 files changed, 799 insertions(+), 74 deletions(-) create mode 100644 tools/perf/util/namespaces.c create mode 100644 tools/perf/util/namespaces.h Test results: The first ones are container (docker) based builds of tools/perf with and without libelf support, objtool where it is supported and samples/bpf/, ditto. Where clang is available, it is also used to build perf with/without libelf. Several are cross builds, the ones with -x-ARCH, and the android one, and those may not have all the features built, due to lack of multi-arch devel packages, available and being used so far on just a few, like debian:experimental-x-{arm64,mipsel}. The 'perf test' one will perform a variety of tests exercising tools/perf/util/, tools/lib/{bpf,traceevent,etc}, as well as run perf commands with a variety of command line event specifications to then intercept the sys_perf_event syscall to check that the perf_event_attr fields are set up as expected, among a variety of other unit tests. Then there is the 'make -C tools/perf build-test' ones, that build tools/perf/ with a variety of feature sets, exercising the build with an incomplete set of features as well as with a complete one. It is planned to have it run on each of the containers mentioned above, using some container orchestration infrastructure. Get in contact if interested in helping having this in place. # dm 1 alpine:3.4: Ok 2 alpine:3.5: Ok 3 alpine:edge: Ok 4 android-ndk:r12b-arm: Ok 5 archlinux:latest: Ok 6 centos:5: Ok 7 centos:6: Ok 8 centos:7: Ok 9 debian:7: Ok 10 debian:8: Ok 11 debian:experimental: Ok 12 debian:experimental-x-arm64: Ok 13 debian:experimental-x-mips: Ok 14 debian:experimental-x-mips64: Ok 15 debian:experimental-x-mipsel: Ok 16 fedora:20: Ok 17 fedora:21: Ok 18 fedora:22: Ok 19 fedora:23: Ok 20 fedora:24: Ok 21 fedora:24-x-ARC-uClibc: Ok 22 fedora:25: Ok 23 fedora:rawhide: Ok 24 mageia:5: Ok 25 opensuse:13.2: Ok 26 opensuse:42.1: Ok 27 opensuse:tumbleweed: Ok 28 ubuntu:12.04.5: Ok 29 ubuntu:14.04.4: Ok 30 ubuntu:14.04.4-x-linaro-arm64: Ok 31 ubuntu:15.10: Ok 32 ubuntu:16.04: Ok 33 ubuntu:16.04-x-arm: Ok 34 ubuntu:16.04-x-arm64: Ok 35 ubuntu:16.04-x-powerpc: Ok 36 ubuntu:16.04-x-powerpc64: Ok 37 ubuntu:16.04-x-s390: Ok 38 ubuntu:16.10: Ok 39 ubuntu:17.04: Ok # # uname -a Linux zoo 4.9.13-100.fc24.x86_64 #1 SMP Mon Feb 27 16:57:22 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux # perf test 1: vmlinux symtab matches kallsyms : Ok 2: Detect openat syscall event : Ok 3: Detect openat syscall event on all cpus : Ok 4: Read samples using the mmap interface : Ok 5: Parse event definition strings : Ok 6: PERF_RECORD_* events & perf_sample fields : Ok 7: Parse perf pmu format : Ok 8: DSO data read : Ok 9: DSO data cache : Ok 10: DSO data reopen : Ok 11: Roundtrip evsel->name : Ok 12: Parse sched tracepoints fields : Ok 13: syscalls:sys_enter_openat event fields : Ok 14: Setup struct perf_event_attr : Ok 15: Match and link multiple hists : Ok 16: 'import perf' in python : Ok 17: Breakpoint overflow signal handler : Ok 18: Breakpoint overflow sampling : Ok 19: Number of exit events of a simple workload : Ok 20: Software clock events period values : Ok 21: Object code reading : Ok 22: Sample parsing : Ok 23: Use a dummy software event to keep tracking: Ok 24: Parse with no sample_id_all bit set : Ok 25: Filter hist entries : Ok 26: Lookup mmap thread : Ok 27: Share thread mg : Ok 28: Sort output of hist entries : Ok 29: Cumulate child hist entries : Ok 30: Track with sched_switch : Ok 31: Filter fds with revents mask in a fdarray : Ok 32: Add fd to a fdarray, making it autogrow : Ok 33: kmod_path__parse : Ok 34: Thread map : Ok 35: LLVM search and compile : 35.1: Basic BPF llvm compile : Ok 35.2: kbuild searching : Ok 35.3: Compile source for BPF prologue generation: Ok 35.4: Compile source for BPF relocation : Ok 36: Session topology : Ok 37: BPF filter : 37.1: Basic BPF filtering : Ok 37.2: BPF pinning : Ok 37.3: BPF prologue generation : Ok 37.4: BPF relocation checker : Ok 38: Synthesize thread map : Ok 39: Remove thread map : Ok 40: Synthesize cpu map : Ok 41: Synthesize stat config : Ok 42: Synthesize stat : Ok 43: Synthesize stat round : Ok 44: Synthesize attr update : Ok 45: Event times : Ok 46: Read backward ring buffer : Ok 47: Print cpu map : Ok 48: Probe SDT events : Ok 49: is_printable_array : Ok 50: Print bitmap : Ok 51: perf hooks : Ok 52: builtin clang support : Skip (not compiled in) 53: unit_number__scnprintf : Ok 54: x86 rdpmc : Ok 55: Convert perf time to TSC : Ok 56: DWARF unwind : Ok 57: x86 instruction decoder - new instructions : Ok 58: Intel cqm nmi context read : Skip # $ make -C tools/perf build-test make: Entering directory '/home/acme/git/linux/tools/perf' - tarpkg: ./tests/perf-targz-src-pkg . make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1 make_debug_O: make DEBUG=1 make_no_libelf_O: make NO_LIBELF=1 make_no_libbionic_O: make NO_LIBBIONIC=1 make_no_libaudit_O: make NO_LIBAUDIT=1 make_pure_O: make make_no_libbpf_O: make NO_LIBBPF=1 make_tags_O: make tags make_with_babeltrace_O: make LIBBABELTRACE=1 make_with_clangllvm_O: make LIBCLANGLLVM=1 make_no_auxtrace_O: make NO_AUXTRACE=1 make_perf_o_O: make perf.o make_no_demangle_O: make NO_DEMANGLE=1 make_clean_all_O: make clean all make_no_slang_O: make NO_SLANG=1 make_doc_O: make doc make_no_newt_O: make NO_NEWT=1 make_no_libpython_O: make NO_LIBPYTHON=1 make_util_pmu_bison_o_O: make util/pmu-bison.o make_install_bin_O: make install-bin make_no_gtk2_O: make NO_GTK2=1 make_no_backtrace_O: make NO_BACKTRACE=1 make_no_libnuma_O: make NO_LIBNUMA=1 make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1 make_util_map_o_O: make util/map.o make_no_libperl_O: make NO_LIBPERL=1 make_static_O: make LDFLAGS=-static make_no_libunwind_O: make NO_LIBUNWIND=1 make_minimal_O: make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1 make_help_O: make help make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1 OK $ ^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: [GIT PULL 00/19] perf/core improvements and fixes 2017-03-14 18:50 Arnaldo Carvalho de Melo @ 2017-03-15 18:29 ` Ingo Molnar 0 siblings, 0 replies; 53+ messages in thread From: Ingo Molnar @ 2017-03-15 18:29 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: linux-kernel, Alexander Shishkin, Alexei Starovoitov, Ananth N Mavinakayanahalli, Andi Kleen, Aravinda Prasad, Brendan Gregg, Changbin Du, Daniel Borkmann, Eric Biederman, Feng Tang, Hari Bathini, Jiri Olsa, kernel-team, linuxppc-dev, Masami Hiramatsu, Michael Ellerman, Namhyung Kim, Naveen N . Rao, Peter Zijlstra, Sargun Dhillon, Steven Rostedt, Arnaldo Carvalho de Melo * Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > Hi Ingo, > > Please consider pulling, > > - Arnaldo > > Test results at the end of this message, as usual. > > The following changes since commit 84e5b549214f2160c12318aac549de85f600c79a: > > Merge tag 'perf-core-for-mingo-4.11-20170306' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2017-03-07 08:14:14 +0100) > > are available in the git repository at: > > git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-4.12-20170314 > > for you to fetch changes up to 5f6bee34707973ea7879a7857fd63ddccc92fff3: > > kprobes: Convert kprobe_exceptions_notify to use NOKPROBE_SYMBOL (2017-03-14 15:17:40 -0300) > > ---------------------------------------------------------------- > perf/core improvements and fixes: > > New features: > > - Add PERF_RECORD_NAMESPACES so that the kernel can record information > required to associate samples to namespaces, helping in container > problem characterization. > > Now the 'perf record has a --namespace' option to ask for such info, > and when present, it can be used, initially, via a new sort order, > 'cgroup_id', allowing histogram entry bucketization by a (device, inode) > based cgroup identifier (Hari Bathini) > > - Add --next option to 'perf sched timehist', showing what is the next > thread to run (Brendan Gregg) > > Fixes: > > - Fix segfault with basic block 'cycles' sort dimension (Changbin Du) > > - Add c2c to command-list.txt, making it appear in the 'perf help' > output (Changbin Du) > > - Fix zeroing of 'abs_path' variable in the perf hists browser switch > file code (Changbin Du) > > - Hide tips messages when -q/--quiet is given to 'perf report' (Namhyung Kim) > > Infrastructure: > > - Use ref_reloc_sym + offset to setup kretprobes (Naveen Rao) > > - Ignore generated files pmu-events/{jevents,pmu-events.c} for git (Changbin Du) > > Documentation: > > - Document +field style argument support for --field option (Changbin Du) > > - Clarify 'perf c2c --stats' help message (Namhyung Kim) > > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> > > ---------------------------------------------------------------- > Brendan Gregg (1): > perf sched timehist: Add --next option > > Changbin Du (5): > perf tools: Missing c2c command in command-list > perf tools: Ignore generated files pmu-events/{jevents,pmu-events.c} for git > perf sort: Fix segfault with basic block 'cycles' sort dimension > perf report: Document +field style argument support for --field option > perf hists browser: Fix typo in function switch_data_file > > Hari Bathini (5): > perf: Add PERF_RECORD_NAMESPACES to include namespaces related info > perf tools: Add PERF_RECORD_NAMESPACES to include namespaces related info > perf record: Synthesize namespace events for current processes > perf script: Add script print support for namespace events > perf tools: Add 'cgroup_id' sort order keyword > > Namhyung Kim (3): > perf report: Hide tip message when -q option is given > perf c2c: Clarify help message of --stats option > perf c2c: Fix display bug when using pipe > > Naveen N. Rao (5): > perf probe: Factor out the ftrace README scanning > perf kretprobes: Offset from reloc_sym if kernel supports it > perf powerpc: Choose local entry point with kretprobes > doc: trace/kprobes: add information about NOKPROBE_SYMBOL > kprobes: Convert kprobe_exceptions_notify to use NOKPROBE_SYMBOL > > Documentation/trace/kprobetrace.txt | 5 +- > include/linux/perf_event.h | 2 + > include/uapi/linux/perf_event.h | 32 +++++- > kernel/events/core.c | 139 ++++++++++++++++++++++++++ > kernel/fork.c | 2 + > kernel/kprobes.c | 5 +- > kernel/nsproxy.c | 3 + > tools/include/uapi/linux/perf_event.h | 32 +++++- > tools/perf/.gitignore | 2 + > tools/perf/Documentation/perf-record.txt | 3 + > tools/perf/Documentation/perf-report.txt | 7 +- > tools/perf/Documentation/perf-sched.txt | 4 + > tools/perf/Documentation/perf-script.txt | 3 + > tools/perf/arch/powerpc/util/sym-handling.c | 14 ++- > tools/perf/builtin-annotate.c | 1 + > tools/perf/builtin-c2c.c | 4 +- > tools/perf/builtin-diff.c | 1 + > tools/perf/builtin-inject.c | 13 +++ > tools/perf/builtin-kmem.c | 1 + > tools/perf/builtin-kvm.c | 2 + > tools/perf/builtin-lock.c | 1 + > tools/perf/builtin-mem.c | 1 + > tools/perf/builtin-record.c | 35 ++++++- > tools/perf/builtin-report.c | 4 +- > tools/perf/builtin-sched.c | 26 ++++- > tools/perf/builtin-script.c | 41 ++++++++ > tools/perf/builtin-trace.c | 3 +- > tools/perf/command-list.txt | 1 + > tools/perf/perf.h | 1 + > tools/perf/ui/browsers/hists.c | 2 +- > tools/perf/util/Build | 1 + > tools/perf/util/data-convert-bt.c | 1 + > tools/perf/util/event.c | 150 ++++++++++++++++++++++++++-- > tools/perf/util/event.h | 19 ++++ > tools/perf/util/evsel.c | 3 + > tools/perf/util/hist.c | 7 ++ > tools/perf/util/hist.h | 1 + > tools/perf/util/machine.c | 34 +++++++ > tools/perf/util/machine.h | 3 + > tools/perf/util/namespaces.c | 36 +++++++ > tools/perf/util/namespaces.h | 26 +++++ > tools/perf/util/probe-event.c | 12 +-- > tools/perf/util/probe-file.c | 77 ++++++++------ > tools/perf/util/probe-file.h | 1 + > tools/perf/util/session.c | 7 ++ > tools/perf/util/sort.c | 46 +++++++++ > tools/perf/util/sort.h | 7 ++ > tools/perf/util/thread.c | 44 +++++++- > tools/perf/util/thread.h | 6 ++ > tools/perf/util/tool.h | 2 + > 50 files changed, 799 insertions(+), 74 deletions(-) > create mode 100644 tools/perf/util/namespaces.c > create mode 100644 tools/perf/util/namespaces.h Pulled, thanks a lot Arnaldo! Ingo ^ permalink raw reply [flat|nested] 53+ messages in thread
* [GIT PULL 00/19] perf/core improvements and fixes @ 2016-09-01 16:45 Arnaldo Carvalho de Melo 2016-09-05 13:16 ` Ingo Molnar 0 siblings, 1 reply; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-09-01 16:45 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter, Alexander Shishkin, Anton Blanchard, David Ahern, Hemant Kumar, Jiri Olsa, Masami Hiramatsu, Michael Petlan, Milian Wolff, Namhyung Kim, Naveen N . Rao, Peter Zijlstra, Ravi Bangoria, Shawn Lin, Wang Nan, Yauheni Kaliuta, Arnaldo Carvalho de Melo Hi Ingo, Please consider pulling, - Arnaldo The following changes since commit 36e674a05164cdbb9d4a5b1b0b279fabae6c13bd: Merge tag 'perf-core-for-mingo-20160823' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2016-08-24 11:08:10 +0200) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20160901 for you to fetch changes up to 6243b9dc4c991fe8bdc53a0e029908aef3ddb101: perf probe: Move dwarf specific functions to dwarf-aux.c (2016-09-01 12:42:26 -0300) ---------------------------------------------------------------- perf/core improvements and fixes: User visible: - Support generating cross arch probes, i.e. if you specify a vmlinux file for different arch than the one in the host machine, $ perf probe --definition function_name args will generate the probe definition string needed to append to the target machine /sys/kernel/debug/tracing/kprobes_events file, using scripting (Masami Hiramatsu). - Make 'perf probe' skip the function prologue in uprobes if program compiled without optimization, using the same strategy as gdb and systemtap uses, fixing a bug where: $ perf probe -x ./test 'foo i' When 'foo(42)' was used on the "./test" executable would produce i=0 instead of the expected i=42 (Ravi Bangoria) - Demangle symbols for synthesized @plt entries too (Millian Wolff) Documentation: - Show default report configuration in 'perf config' example and docs (Millian Wolff) Infrastructure: - Make 'perf test vmlinux' tolerate the symbol aliasing pruning done when loading kallsyms and vmlinux (Arnaldo Carvalho de Melo) - Improve output of 'perf test vmlinux' test, to help identify on the verbose output which lines are warning and which are errors (Arnaldo Carvalho de Melo) - Prep work to stop having to pass symbol_filter_t to lots of functions, simplifying symtab loading routines (Arnaldo Carvalho de Melo) - Honor symbol_conf.allow_aliases when loading kallsyms as well, it was using it only when loading vmlinux files (Arnaldo Carvalho de Melo) - Fixup symbol->end before doing alias pruning when loading symbol tables (Arnaldo Carvalho de Melo) - Fix error handling of lzma kernel module decompression (Shawn Lin) Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> ---------------------------------------------------------------- Arnaldo Carvalho de Melo (8): perf annotate: Initialize the priv are in symbol__new() perf symbols: Rename ->ignore to ->idle perf probe: Do not use map_load filters for function perf test vmlinux: Clarify which -v lines are errors or warning perf test vmlinux: Avoid printing headers for empty lists perf test vmlinux: Tolerate symbol aliases perf symbols: Check symbol_conf.allow_aliases for kallsyms loading too perf symbols: Fixup symbol sizes before picking best ones Masami Hiramatsu (5): perf probe: Remove unused tracing_dir variable perf probe: Show trace event definition perf probe: Ignore vmlinux buildid if offline kernel is given perf probe: Support probing on offline cross-arch binary perf probe: Ignore vmlinux Build-id when offline vmlinux given Milian Wolff (2): perf symbols: Demangle symbols for synthesized @plt entries. perf config: Show default report configuration in example and docs Ravi Bangoria (3): perf probe: Add helper function to check if probe with variable perf uprobe: Skip prologue if program compiled without optimization perf probe: Move dwarf specific functions to dwarf-aux.c Shawn Lin (1): perf tools: Fix error handling of lzma decompression tools/perf/Documentation/perf-config.txt | 8 + tools/perf/Documentation/perf-probe.txt | 9 ++ tools/perf/Documentation/perfconfig.example | 9 ++ tools/perf/arch/arm/include/dwarf-regs-table.h | 9 ++ tools/perf/arch/arm64/include/dwarf-regs-table.h | 13 ++ tools/perf/arch/powerpc/include/dwarf-regs-table.h | 27 ++++ tools/perf/arch/s390/include/dwarf-regs-table.h | 8 + tools/perf/arch/sh/include/dwarf-regs-table.h | 25 +++ tools/perf/arch/sparc/include/dwarf-regs-table.h | 18 +++ tools/perf/arch/x86/include/dwarf-regs-table.h | 14 ++ tools/perf/arch/xtensa/include/dwarf-regs-table.h | 8 + tools/perf/builtin-annotate.c | 7 +- tools/perf/builtin-probe.c | 35 +++- tools/perf/builtin-report.c | 6 +- tools/perf/builtin-top.c | 8 +- tools/perf/tests/vmlinux-kallsyms.c | 44 +++-- tools/perf/util/Build | 1 + tools/perf/util/annotate.c | 7 - tools/perf/util/annotate.h | 1 - tools/perf/util/dwarf-aux.c | 179 +++++++++++++++++++++ tools/perf/util/dwarf-aux.h | 8 + tools/perf/util/dwarf-regs.c | 59 +++++++ tools/perf/util/evsel_fprintf.c | 4 +- tools/perf/util/include/dwarf-regs.h | 6 + tools/perf/util/lzma.c | 15 +- tools/perf/util/probe-event.c | 101 +++++++++--- tools/perf/util/probe-event.h | 3 + tools/perf/util/probe-file.c | 5 +- tools/perf/util/probe-finder.c | 60 +++++-- tools/perf/util/probe-finder.h | 1 + tools/perf/util/symbol-elf.c | 86 ++++++---- tools/perf/util/symbol.c | 30 +++- tools/perf/util/symbol.h | 5 +- 33 files changed, 698 insertions(+), 121 deletions(-) create mode 100644 tools/perf/arch/arm/include/dwarf-regs-table.h create mode 100644 tools/perf/arch/arm64/include/dwarf-regs-table.h create mode 100644 tools/perf/arch/powerpc/include/dwarf-regs-table.h create mode 100644 tools/perf/arch/s390/include/dwarf-regs-table.h create mode 100644 tools/perf/arch/sh/include/dwarf-regs-table.h create mode 100644 tools/perf/arch/sparc/include/dwarf-regs-table.h create mode 100644 tools/perf/arch/x86/include/dwarf-regs-table.h create mode 100644 tools/perf/arch/xtensa/include/dwarf-regs-table.h create mode 100644 tools/perf/util/dwarf-regs.c Build stats: 1 alpine:3.4: Ok 2 android-ndk:r12b-arm: Ok 3 archlinux:latest: Ok 4 centos:5: Ok 5 centos:6: Ok 6 centos:7: Ok 7 debian:7: Ok 8 debian:8: Ok 9 fedora:20: Ok 10 fedora:21: Ok 11 fedora:22: Ok 12 fedora:23: Ok 13 fedora:24: Ok 14 fedora:24-x-ARC-uClibc: Ok 15 fedora:rawhide: Ok 16 mageia:5: Ok 17 opensuse:13.2: Ok 18 opensuse:42.1: Ok 19 opensuse:tumbleweed: Ok 20 ubuntu:12.04.5: Ok 21 ubuntu:14.04.4: Ok 22 ubuntu:15.10: Ok 23 ubuntu:16.04: Ok 24 ubuntu:16.04-x-arm: Ok 25 ubuntu:16.04-x-arm64: Ok 26 ubuntu:16.04-x-powerpc64: Ok 27 ubuntu:16.04-x-powerpc64el: Ok 28 ubuntu:16.10: Ok 29 ubuntu:16.10-x-s390: Ok ^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: [GIT PULL 00/19] perf/core improvements and fixes 2016-09-01 16:45 Arnaldo Carvalho de Melo @ 2016-09-05 13:16 ` Ingo Molnar 0 siblings, 0 replies; 53+ messages in thread From: Ingo Molnar @ 2016-09-05 13:16 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: linux-kernel, Adrian Hunter, Alexander Shishkin, Anton Blanchard, David Ahern, Hemant Kumar, Jiri Olsa, Masami Hiramatsu, Michael Petlan, Milian Wolff, Namhyung Kim, Naveen N . Rao, Peter Zijlstra, Ravi Bangoria, Shawn Lin, Wang Nan, Yauheni Kaliuta, Arnaldo Carvalho de Melo * Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > Hi Ingo, > > Please consider pulling, > > - Arnaldo > > The following changes since commit 36e674a05164cdbb9d4a5b1b0b279fabae6c13bd: > > Merge tag 'perf-core-for-mingo-20160823' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2016-08-24 11:08:10 +0200) > > are available in the git repository at: > > git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20160901 > > for you to fetch changes up to 6243b9dc4c991fe8bdc53a0e029908aef3ddb101: > > perf probe: Move dwarf specific functions to dwarf-aux.c (2016-09-01 12:42:26 -0300) > > ---------------------------------------------------------------- > perf/core improvements and fixes: > > User visible: > > - Support generating cross arch probes, i.e. if you specify a vmlinux > file for different arch than the one in the host machine, > > $ perf probe --definition function_name args > > will generate the probe definition string needed to append to the > target machine /sys/kernel/debug/tracing/kprobes_events file, using > scripting (Masami Hiramatsu). > > - Make 'perf probe' skip the function prologue in uprobes if program > compiled without optimization, using the same strategy as gdb and > systemtap uses, fixing a bug where: > > $ perf probe -x ./test 'foo i' > > When 'foo(42)' was used on the "./test" executable would produce i=0 > instead of the expected i=42 (Ravi Bangoria) > > - Demangle symbols for synthesized @plt entries too (Millian Wolff) > > Documentation: > > - Show default report configuration in 'perf config' example > and docs (Millian Wolff) > > Infrastructure: > > - Make 'perf test vmlinux' tolerate the symbol aliasing pruning done when > loading kallsyms and vmlinux (Arnaldo Carvalho de Melo) > > - Improve output of 'perf test vmlinux' test, to help identify on the verbose > output which lines are warning and which are errors (Arnaldo Carvalho de Melo) > > - Prep work to stop having to pass symbol_filter_t to lots of functions, > simplifying symtab loading routines (Arnaldo Carvalho de Melo) > > - Honor symbol_conf.allow_aliases when loading kallsyms as well, it was using > it only when loading vmlinux files (Arnaldo Carvalho de Melo) > > - Fixup symbol->end before doing alias pruning when loading symbol tables > (Arnaldo Carvalho de Melo) > > - Fix error handling of lzma kernel module decompression (Shawn Lin) > > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> > > ---------------------------------------------------------------- > Arnaldo Carvalho de Melo (8): > perf annotate: Initialize the priv are in symbol__new() > perf symbols: Rename ->ignore to ->idle > perf probe: Do not use map_load filters for function > perf test vmlinux: Clarify which -v lines are errors or warning > perf test vmlinux: Avoid printing headers for empty lists > perf test vmlinux: Tolerate symbol aliases > perf symbols: Check symbol_conf.allow_aliases for kallsyms loading too > perf symbols: Fixup symbol sizes before picking best ones > > Masami Hiramatsu (5): > perf probe: Remove unused tracing_dir variable > perf probe: Show trace event definition > perf probe: Ignore vmlinux buildid if offline kernel is given > perf probe: Support probing on offline cross-arch binary > perf probe: Ignore vmlinux Build-id when offline vmlinux given > > Milian Wolff (2): > perf symbols: Demangle symbols for synthesized @plt entries. > perf config: Show default report configuration in example and docs > > Ravi Bangoria (3): > perf probe: Add helper function to check if probe with variable > perf uprobe: Skip prologue if program compiled without optimization > perf probe: Move dwarf specific functions to dwarf-aux.c > > Shawn Lin (1): > perf tools: Fix error handling of lzma decompression > > tools/perf/Documentation/perf-config.txt | 8 + > tools/perf/Documentation/perf-probe.txt | 9 ++ > tools/perf/Documentation/perfconfig.example | 9 ++ > tools/perf/arch/arm/include/dwarf-regs-table.h | 9 ++ > tools/perf/arch/arm64/include/dwarf-regs-table.h | 13 ++ > tools/perf/arch/powerpc/include/dwarf-regs-table.h | 27 ++++ > tools/perf/arch/s390/include/dwarf-regs-table.h | 8 + > tools/perf/arch/sh/include/dwarf-regs-table.h | 25 +++ > tools/perf/arch/sparc/include/dwarf-regs-table.h | 18 +++ > tools/perf/arch/x86/include/dwarf-regs-table.h | 14 ++ > tools/perf/arch/xtensa/include/dwarf-regs-table.h | 8 + > tools/perf/builtin-annotate.c | 7 +- > tools/perf/builtin-probe.c | 35 +++- > tools/perf/builtin-report.c | 6 +- > tools/perf/builtin-top.c | 8 +- > tools/perf/tests/vmlinux-kallsyms.c | 44 +++-- > tools/perf/util/Build | 1 + > tools/perf/util/annotate.c | 7 - > tools/perf/util/annotate.h | 1 - > tools/perf/util/dwarf-aux.c | 179 +++++++++++++++++++++ > tools/perf/util/dwarf-aux.h | 8 + > tools/perf/util/dwarf-regs.c | 59 +++++++ > tools/perf/util/evsel_fprintf.c | 4 +- > tools/perf/util/include/dwarf-regs.h | 6 + > tools/perf/util/lzma.c | 15 +- > tools/perf/util/probe-event.c | 101 +++++++++--- > tools/perf/util/probe-event.h | 3 + > tools/perf/util/probe-file.c | 5 +- > tools/perf/util/probe-finder.c | 60 +++++-- > tools/perf/util/probe-finder.h | 1 + > tools/perf/util/symbol-elf.c | 86 ++++++---- > tools/perf/util/symbol.c | 30 +++- > tools/perf/util/symbol.h | 5 +- > 33 files changed, 698 insertions(+), 121 deletions(-) > create mode 100644 tools/perf/arch/arm/include/dwarf-regs-table.h > create mode 100644 tools/perf/arch/arm64/include/dwarf-regs-table.h > create mode 100644 tools/perf/arch/powerpc/include/dwarf-regs-table.h > create mode 100644 tools/perf/arch/s390/include/dwarf-regs-table.h > create mode 100644 tools/perf/arch/sh/include/dwarf-regs-table.h > create mode 100644 tools/perf/arch/sparc/include/dwarf-regs-table.h > create mode 100644 tools/perf/arch/x86/include/dwarf-regs-table.h > create mode 100644 tools/perf/arch/xtensa/include/dwarf-regs-table.h > create mode 100644 tools/perf/util/dwarf-regs.c > > Build stats: > > 1 alpine:3.4: Ok > 2 android-ndk:r12b-arm: Ok > 3 archlinux:latest: Ok > 4 centos:5: Ok > 5 centos:6: Ok > 6 centos:7: Ok > 7 debian:7: Ok > 8 debian:8: Ok > 9 fedora:20: Ok > 10 fedora:21: Ok > 11 fedora:22: Ok > 12 fedora:23: Ok > 13 fedora:24: Ok > 14 fedora:24-x-ARC-uClibc: Ok > 15 fedora:rawhide: Ok > 16 mageia:5: Ok > 17 opensuse:13.2: Ok > 18 opensuse:42.1: Ok > 19 opensuse:tumbleweed: Ok > 20 ubuntu:12.04.5: Ok > 21 ubuntu:14.04.4: Ok > 22 ubuntu:15.10: Ok > 23 ubuntu:16.04: Ok > 24 ubuntu:16.04-x-arm: Ok > 25 ubuntu:16.04-x-arm64: Ok > 26 ubuntu:16.04-x-powerpc64: Ok > 27 ubuntu:16.04-x-powerpc64el: Ok > 28 ubuntu:16.10: Ok > 29 ubuntu:16.10-x-s390: Ok Pulled, thanks a lot Arnaldo! Ingo ^ permalink raw reply [flat|nested] 53+ messages in thread
* [GIT PULL 00/19] perf/core improvements and fixes @ 2016-07-14 2:20 Arnaldo Carvalho de Melo 2016-07-14 6:58 ` Ingo Molnar 0 siblings, 1 reply; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-07-14 2:20 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter, Alexei Starovoitov, Ananth N Mavinakayanahalli, Brendan Gregg, David Ahern, Hemant Kumar, Jiri Olsa, Josh Poimboeuf, Masami Hiramatsu, Namhyung Kim, Peter Zijlstra, pi3orama, Wang Nan, Zefan Li, Arnaldo Carvalho de Melo Hi Ingo, Please consider pulling, I've added building objtool to most of the containers in my build test setup: [root@jouet ~]# perf stat dm alpine:3.4: Ok centos:5: Ok centos:6: Ok centos:7: Ok debian:7: Ok debian:8: Ok debian:experimental: Ok fedora:21: Ok fedora:22: Ok fedora:23: Ok fedora:24: Ok fedora:rawhide: Ok mageia:5: Ok opensuse:13.2: Ok opensuse:42.1: Ok ubuntu:12.04.5: Ok ubuntu:14.04.4: Ok ubuntu:15.10: Ok ubuntu:16.04: Ok Performance counter stats for 'dm': 2601.121782 task-clock (msec) # 0.002 CPUs utilized 86,368 context-switches # 0.033 M/sec 5,740 cpu-migrations # 0.002 M/sec 53,962 page-faults # 0.021 M/sec 7,217,605,183 cycles # 2.775 GHz 6,534,540,119 instructions # 0.91 insn per cycle 1,408,715,184 branches # 541.580 M/sec 18,523,459 branch-misses # 1.31% of all branches 1541.746171526 seconds time elapsed [root@jouet ~]# - Arnaldo The following changes since commit 7b39cafb7aa68ef8e32a9f51fbe737d96084ca74: tools: Work around BITS_PER_LONG related build failure in objtool (2016-07-13 09:37:43 +0200) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20160713 for you to fetch changes up to 8e5dc848356ecf6ea8d27d641c4d7ad8d42fe92b: perf test: Add a test case for SDT event (2016-07-13 23:09:10 -0300) ---------------------------------------------------------------- perf/core improvements and fixes: User visible: - Finish merging initial SDT (Statically Defined Traces) support, see cset comments for details about how it all works (Masami Hiramatsu) - Support attaching eBPF programs to tracepoints (Wang Nan) Infrastructure: - Fix up BITS_PER_LONG setting (Arnaldo Carvalho de Melo) - Add fallback from ELF_C_READ_MMAP to ELF_C_READ in objtool, fixing the build in libelf implementations lacking that elf_begin() cmd, such as Alpine Linux's (Arnaldo Carvalho de Melo) - Avoid checking code drift on busybox's diff in objtool (Arnaldo Carvalho de Melo) Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> ---------------------------------------------------------------- Arnaldo Carvalho de Melo (3): tools: Fix up BITS_PER_LONG setting objtool: Add fallback from ELF_C_READ_MMAP to ELF_C_READ objtool: Avoid checking code drift on busybox's diff Masami Hiramatsu (11): perf probe: Fix to show correct error message for $vars and $params perf probe: Accept %sdt and %cached event name perf probe: Make --list show only available cached events perf probe-cache: Add for_each_probe_cache_entry() wrapper perf probe: Allow wildcard for cached events perf probe: Search SDT/cached event from all probe caches perf list: Show SDT and pre-cached events perf probe: Support @BUILDID or @FILE suffix for SDT events perf probe: Support a special SDT probe format perf build: Add sdt feature detection perf test: Add a test case for SDT event Wang Nan (5): tools lib bpf: New API to adjust type of a BPF program tools lib bpf: Report error when kernel doesn't support program type perf event parser: Add const qualifier to evt_name and sys_name perf bpf: Rename bpf__foreach_tev() to bpf__foreach_event() perf bpf: Support BPF program attach to tracepoints tools/build/Makefile.feature | 3 +- tools/build/feature/Makefile | 6 +- tools/build/feature/test-all.c | 5 + tools/build/feature/test-sdt.c | 7 + tools/include/asm-generic/bitsperlong.h | 24 ++- tools/lib/bpf/libbpf.c | 80 +++++++-- tools/lib/bpf/libbpf.h | 10 ++ tools/objtool/Makefile | 5 +- tools/objtool/elf.c | 7 + tools/perf/Documentation/perf-probe.txt | 11 +- tools/perf/Makefile.perf | 3 + tools/perf/builtin-list.c | 6 +- tools/perf/builtin-probe.c | 2 +- tools/perf/config/Makefile | 10 ++ tools/perf/tests/Build | 1 + tools/perf/tests/builtin-test.c | 4 + tools/perf/tests/make | 3 +- tools/perf/tests/sdt.c | 115 ++++++++++++ tools/perf/tests/tests.h | 1 + tools/perf/util/bpf-loader.c | 73 +++++++- tools/perf/util/bpf-loader.h | 12 +- tools/perf/util/build-id.c | 76 +++++++- tools/perf/util/build-id.h | 3 +- tools/perf/util/parse-events.c | 110 ++++++++++-- tools/perf/util/parse-events.h | 4 +- tools/perf/util/probe-event.c | 309 +++++++++++++++++++++++++++----- tools/perf/util/probe-event.h | 1 + tools/perf/util/probe-file.c | 57 ++++-- tools/perf/util/probe-file.h | 14 ++ 29 files changed, 850 insertions(+), 112 deletions(-) create mode 100644 tools/build/feature/test-sdt.c create mode 100644 tools/perf/tests/sdt.c ^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: [GIT PULL 00/19] perf/core improvements and fixes 2016-07-14 2:20 Arnaldo Carvalho de Melo @ 2016-07-14 6:58 ` Ingo Molnar 0 siblings, 0 replies; 53+ messages in thread From: Ingo Molnar @ 2016-07-14 6:58 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: linux-kernel, Adrian Hunter, Alexei Starovoitov, Ananth N Mavinakayanahalli, Brendan Gregg, David Ahern, Hemant Kumar, Jiri Olsa, Josh Poimboeuf, Masami Hiramatsu, Namhyung Kim, Peter Zijlstra, pi3orama, Wang Nan, Zefan Li, Arnaldo Carvalho de Melo * Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > Hi Ingo, > > Please consider pulling, > > I've added building objtool to most of the containers in my build test setup: > > [root@jouet ~]# perf stat dm > alpine:3.4: Ok > centos:5: Ok > centos:6: Ok > centos:7: Ok > debian:7: Ok > debian:8: Ok > debian:experimental: Ok > fedora:21: Ok > fedora:22: Ok > fedora:23: Ok > fedora:24: Ok > fedora:rawhide: Ok > mageia:5: Ok > opensuse:13.2: Ok > opensuse:42.1: Ok > ubuntu:12.04.5: Ok > ubuntu:14.04.4: Ok > ubuntu:15.10: Ok > ubuntu:16.04: Ok > > Performance counter stats for 'dm': > > 2601.121782 task-clock (msec) # 0.002 CPUs utilized > 86,368 context-switches # 0.033 M/sec > 5,740 cpu-migrations # 0.002 M/sec > 53,962 page-faults # 0.021 M/sec > 7,217,605,183 cycles # 2.775 GHz > 6,534,540,119 instructions # 0.91 insn per cycle > 1,408,715,184 branches # 541.580 M/sec > 18,523,459 branch-misses # 1.31% of all branches > > 1541.746171526 seconds time elapsed > > [root@jouet ~]# > > - Arnaldo > > The following changes since commit 7b39cafb7aa68ef8e32a9f51fbe737d96084ca74: > > tools: Work around BITS_PER_LONG related build failure in objtool (2016-07-13 09:37:43 +0200) > > are available in the git repository at: > > git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20160713 > > for you to fetch changes up to 8e5dc848356ecf6ea8d27d641c4d7ad8d42fe92b: > > perf test: Add a test case for SDT event (2016-07-13 23:09:10 -0300) > > ---------------------------------------------------------------- > perf/core improvements and fixes: > > User visible: > > - Finish merging initial SDT (Statically Defined Traces) support, see > cset comments for details about how it all works (Masami Hiramatsu) > > - Support attaching eBPF programs to tracepoints (Wang Nan) > > Infrastructure: > > - Fix up BITS_PER_LONG setting (Arnaldo Carvalho de Melo) > > - Add fallback from ELF_C_READ_MMAP to ELF_C_READ in objtool, fixing > the build in libelf implementations lacking that elf_begin() cmd, > such as Alpine Linux's (Arnaldo Carvalho de Melo) > > - Avoid checking code drift on busybox's diff in objtool (Arnaldo Carvalho de Melo) > > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> > > ---------------------------------------------------------------- > Arnaldo Carvalho de Melo (3): > tools: Fix up BITS_PER_LONG setting > objtool: Add fallback from ELF_C_READ_MMAP to ELF_C_READ > objtool: Avoid checking code drift on busybox's diff > > Masami Hiramatsu (11): > perf probe: Fix to show correct error message for $vars and $params > perf probe: Accept %sdt and %cached event name > perf probe: Make --list show only available cached events > perf probe-cache: Add for_each_probe_cache_entry() wrapper > perf probe: Allow wildcard for cached events > perf probe: Search SDT/cached event from all probe caches > perf list: Show SDT and pre-cached events > perf probe: Support @BUILDID or @FILE suffix for SDT events > perf probe: Support a special SDT probe format > perf build: Add sdt feature detection > perf test: Add a test case for SDT event > > Wang Nan (5): > tools lib bpf: New API to adjust type of a BPF program > tools lib bpf: Report error when kernel doesn't support program type > perf event parser: Add const qualifier to evt_name and sys_name > perf bpf: Rename bpf__foreach_tev() to bpf__foreach_event() > perf bpf: Support BPF program attach to tracepoints > > tools/build/Makefile.feature | 3 +- > tools/build/feature/Makefile | 6 +- > tools/build/feature/test-all.c | 5 + > tools/build/feature/test-sdt.c | 7 + > tools/include/asm-generic/bitsperlong.h | 24 ++- > tools/lib/bpf/libbpf.c | 80 +++++++-- > tools/lib/bpf/libbpf.h | 10 ++ > tools/objtool/Makefile | 5 +- > tools/objtool/elf.c | 7 + > tools/perf/Documentation/perf-probe.txt | 11 +- > tools/perf/Makefile.perf | 3 + > tools/perf/builtin-list.c | 6 +- > tools/perf/builtin-probe.c | 2 +- > tools/perf/config/Makefile | 10 ++ > tools/perf/tests/Build | 1 + > tools/perf/tests/builtin-test.c | 4 + > tools/perf/tests/make | 3 +- > tools/perf/tests/sdt.c | 115 ++++++++++++ > tools/perf/tests/tests.h | 1 + > tools/perf/util/bpf-loader.c | 73 +++++++- > tools/perf/util/bpf-loader.h | 12 +- > tools/perf/util/build-id.c | 76 +++++++- > tools/perf/util/build-id.h | 3 +- > tools/perf/util/parse-events.c | 110 ++++++++++-- > tools/perf/util/parse-events.h | 4 +- > tools/perf/util/probe-event.c | 309 +++++++++++++++++++++++++++----- > tools/perf/util/probe-event.h | 1 + > tools/perf/util/probe-file.c | 57 ++++-- > tools/perf/util/probe-file.h | 14 ++ > 29 files changed, 850 insertions(+), 112 deletions(-) > create mode 100644 tools/build/feature/test-sdt.c > create mode 100644 tools/perf/tests/sdt.c Pulled, thanks a lot Arnaldo! Ingo ^ permalink raw reply [flat|nested] 53+ messages in thread
* [GIT PULL 00/19] perf/core improvements and fixes @ 2016-06-15 18:13 Arnaldo Carvalho de Melo 2016-06-16 6:29 ` Jiri Olsa 2016-06-16 8:29 ` Ingo Molnar 0 siblings, 2 replies; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-06-15 18:13 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Arnaldo Carvalho de Melo, Alexander Shishkin, Ananth N Mavinakayanahalli, Brendan Gregg, David Ahern, He Kuang, Hemant Kumar, Jiri Olsa, Masami Hiramatsu, Namhyung Kim, Peter Zijlstra, Taeung Song, Wang Nan, Arnaldo Carvalho de Melo Hi Ingo, Please consider pulling, - Arnaldo The following changes since commit 2c95afc1e83d93fac3be6923465e1753c2c53b0a: perf/x86/intel, watchdog: Switch NMI watchdog to ref cycles on x86 (2016-06-14 11:16:59 +0200) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20160615 for you to fetch changes up to 2fd457a34525ea3bc609e377b46af759af8a7934: perf probe: Add --cache option to cache the probe definitions (2016-06-15 14:34:42 -0300) ---------------------------------------------------------------- perf/core improvements and fixes: User visible: - Add --ldlat option to 'perf mem' to specify load latency for loads event (e.g. cpu/mem-loads/ ) (Jiri Olsa) Build fixes: - Fix libunwind related compile error for static cross build (He Kuang) Infrastructure: - UI refactorings to support headers with multiple lines, non-evsel hists browsers, toggle showing callchains, etc (Jiri Olsa) - More prep work for caching probe definitions, paving the way for supporting SDT (Statically Defined Traces) userspace probes (Masami Hiramatsu) - Handle NULL at perf_config_set__delete() (Taeung Song) Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> ---------------------------------------------------------------- He Kuang (1): perf unwind: Fix compile error for static cross build Jiri Olsa (10): perf mem: Add --ldlat option perf tools: Fix Data Object sort entry width index perf tui: Separate hierarchy and standard headers output perf stdio: Separate headers output perf stdio: Separate hierarchy headers output perf stdio: Separate standard headers output perf stdio: Do not pass hists in hist_entry__fprintf perf stdio: Add use_callchain parameter to hists__fprintf perf hists: Replace perf_evsel arg perf_hpp_fmt's header callback perf hists: Replace perf_evsel arg perf_hpp_fmt's width callback Masami Hiramatsu (7): perf tools: Fix rm_rf() to handle non-regular files correctly perf probe: Fix to add NULL check for strndup perf buildid: Rename and export build_id_cache__cachedir() perf probe: Add perf_probe_event__copy() perf probe: Uncomment and export synthesize_perf_probe_point() perf probe: Introduce perf_cache interfaces perf probe: Add --cache option to cache the probe definitions Taeung Song (1): perf config: Handle NULL at perf_config_set__delete() tools/perf/Documentation/perf-mem.txt | 3 + tools/perf/Documentation/perf-probe.txt | 4 + tools/perf/builtin-diff.c | 7 +- tools/perf/builtin-mem.c | 1 + tools/perf/builtin-probe.c | 1 + tools/perf/builtin-report.c | 3 +- tools/perf/builtin-top.c | 2 +- tools/perf/config/Makefile | 3 + tools/perf/ui/browsers/hists.c | 39 ++-- tools/perf/ui/gtk/hists.c | 2 +- tools/perf/ui/hist.c | 11 +- tools/perf/ui/stdio/hist.c | 133 +++++++------ tools/perf/util/build-id.c | 12 +- tools/perf/util/build-id.h | 2 + tools/perf/util/config.c | 3 + tools/perf/util/hist.c | 2 +- tools/perf/util/hist.h | 7 +- tools/perf/util/mem-events.c | 17 +- tools/perf/util/mem-events.h | 1 + tools/perf/util/probe-event.c | 128 ++++++++++-- tools/perf/util/probe-event.h | 5 + tools/perf/util/probe-file.c | 331 ++++++++++++++++++++++++++++++++ tools/perf/util/probe-file.h | 20 ++ tools/perf/util/sort.c | 14 +- tools/perf/util/util.c | 13 +- 25 files changed, 640 insertions(+), 124 deletions(-) ^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: [GIT PULL 00/19] perf/core improvements and fixes 2016-06-15 18:13 Arnaldo Carvalho de Melo @ 2016-06-16 6:29 ` Jiri Olsa 2016-06-16 19:54 ` Arnaldo Carvalho de Melo 2016-06-16 8:29 ` Ingo Molnar 1 sibling, 1 reply; 53+ messages in thread From: Jiri Olsa @ 2016-06-16 6:29 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: Ingo Molnar, linux-kernel, Alexander Shishkin, Ananth N Mavinakayanahalli, Brendan Gregg, David Ahern, He Kuang, Hemant Kumar, Masami Hiramatsu, Namhyung Kim, Peter Zijlstra, Taeung Song, Wang Nan, Arnaldo Carvalho de Melo On Wed, Jun 15, 2016 at 03:13:09PM -0300, Arnaldo Carvalho de Melo wrote: SNIP > ---------------------------------------------------------------- > He Kuang (1): > perf unwind: Fix compile error for static cross build > > Jiri Olsa (10): > perf mem: Add --ldlat option > perf tools: Fix Data Object sort entry width index > perf tui: Separate hierarchy and standard headers output > perf stdio: Separate headers output > perf stdio: Separate hierarchy headers output > perf stdio: Separate standard headers output > perf stdio: Do not pass hists in hist_entry__fprintf > perf stdio: Add use_callchain parameter to hists__fprintf > perf hists: Replace perf_evsel arg perf_hpp_fmt's header callback > perf hists: Replace perf_evsel arg perf_hpp_fmt's width callback hi, any reason for skipping this one?: perf tools: Rename __hists__add_entry to hists__add_entry thanks, jirka ^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: [GIT PULL 00/19] perf/core improvements and fixes 2016-06-16 6:29 ` Jiri Olsa @ 2016-06-16 19:54 ` Arnaldo Carvalho de Melo 0 siblings, 0 replies; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-06-16 19:54 UTC (permalink / raw) To: Jiri Olsa Cc: Ingo Molnar, linux-kernel, Alexander Shishkin, Ananth N Mavinakayanahalli, Brendan Gregg, David Ahern, He Kuang, Hemant Kumar, Masami Hiramatsu, Namhyung Kim, Peter Zijlstra, Taeung Song, Wang Nan, Arnaldo Carvalho de Melo Em Thu, Jun 16, 2016 at 08:29:47AM +0200, Jiri Olsa escreveu: > On Wed, Jun 15, 2016 at 03:13:09PM -0300, Arnaldo Carvalho de Melo wrote: > > SNIP > > > ---------------------------------------------------------------- > > He Kuang (1): > > perf unwind: Fix compile error for static cross build > > > > Jiri Olsa (10): > > perf mem: Add --ldlat option > > perf tools: Fix Data Object sort entry width index > > perf tui: Separate hierarchy and standard headers output > > perf stdio: Separate headers output > > perf stdio: Separate hierarchy headers output > > perf stdio: Separate standard headers output > > perf stdio: Do not pass hists in hist_entry__fprintf > > perf stdio: Add use_callchain parameter to hists__fprintf > > perf hists: Replace perf_evsel arg perf_hpp_fmt's header callback > > perf hists: Replace perf_evsel arg perf_hpp_fmt's width callback > hi, > any reason for skipping this one?: > perf tools: Rename __hists__add_entry to hists__add_entry nope, will apply. - Arnaldo ^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: [GIT PULL 00/19] perf/core improvements and fixes 2016-06-15 18:13 Arnaldo Carvalho de Melo 2016-06-16 6:29 ` Jiri Olsa @ 2016-06-16 8:29 ` Ingo Molnar 1 sibling, 0 replies; 53+ messages in thread From: Ingo Molnar @ 2016-06-16 8:29 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: linux-kernel, Alexander Shishkin, Ananth N Mavinakayanahalli, Brendan Gregg, David Ahern, He Kuang, Hemant Kumar, Jiri Olsa, Masami Hiramatsu, Namhyung Kim, Peter Zijlstra, Taeung Song, Wang Nan, Arnaldo Carvalho de Melo * Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > Hi Ingo, > > Please consider pulling, > > - Arnaldo > > The following changes since commit 2c95afc1e83d93fac3be6923465e1753c2c53b0a: > > perf/x86/intel, watchdog: Switch NMI watchdog to ref cycles on x86 (2016-06-14 11:16:59 +0200) > > are available in the git repository at: > > git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20160615 > > for you to fetch changes up to 2fd457a34525ea3bc609e377b46af759af8a7934: > > perf probe: Add --cache option to cache the probe definitions (2016-06-15 14:34:42 -0300) > > ---------------------------------------------------------------- > perf/core improvements and fixes: > > User visible: > > - Add --ldlat option to 'perf mem' to specify load latency for loads > event (e.g. cpu/mem-loads/ ) (Jiri Olsa) > > Build fixes: > > - Fix libunwind related compile error for static cross build (He Kuang) > > Infrastructure: > > - UI refactorings to support headers with multiple lines, non-evsel > hists browsers, toggle showing callchains, etc (Jiri Olsa) > > - More prep work for caching probe definitions, paving the way > for supporting SDT (Statically Defined Traces) userspace probes (Masami Hiramatsu) > > - Handle NULL at perf_config_set__delete() (Taeung Song) > > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> > > ---------------------------------------------------------------- > He Kuang (1): > perf unwind: Fix compile error for static cross build > > Jiri Olsa (10): > perf mem: Add --ldlat option > perf tools: Fix Data Object sort entry width index > perf tui: Separate hierarchy and standard headers output > perf stdio: Separate headers output > perf stdio: Separate hierarchy headers output > perf stdio: Separate standard headers output > perf stdio: Do not pass hists in hist_entry__fprintf > perf stdio: Add use_callchain parameter to hists__fprintf > perf hists: Replace perf_evsel arg perf_hpp_fmt's header callback > perf hists: Replace perf_evsel arg perf_hpp_fmt's width callback > > Masami Hiramatsu (7): > perf tools: Fix rm_rf() to handle non-regular files correctly > perf probe: Fix to add NULL check for strndup > perf buildid: Rename and export build_id_cache__cachedir() > perf probe: Add perf_probe_event__copy() > perf probe: Uncomment and export synthesize_perf_probe_point() > perf probe: Introduce perf_cache interfaces > perf probe: Add --cache option to cache the probe definitions > > Taeung Song (1): > perf config: Handle NULL at perf_config_set__delete() > > tools/perf/Documentation/perf-mem.txt | 3 + > tools/perf/Documentation/perf-probe.txt | 4 + > tools/perf/builtin-diff.c | 7 +- > tools/perf/builtin-mem.c | 1 + > tools/perf/builtin-probe.c | 1 + > tools/perf/builtin-report.c | 3 +- > tools/perf/builtin-top.c | 2 +- > tools/perf/config/Makefile | 3 + > tools/perf/ui/browsers/hists.c | 39 ++-- > tools/perf/ui/gtk/hists.c | 2 +- > tools/perf/ui/hist.c | 11 +- > tools/perf/ui/stdio/hist.c | 133 +++++++------ > tools/perf/util/build-id.c | 12 +- > tools/perf/util/build-id.h | 2 + > tools/perf/util/config.c | 3 + > tools/perf/util/hist.c | 2 +- > tools/perf/util/hist.h | 7 +- > tools/perf/util/mem-events.c | 17 +- > tools/perf/util/mem-events.h | 1 + > tools/perf/util/probe-event.c | 128 ++++++++++-- > tools/perf/util/probe-event.h | 5 + > tools/perf/util/probe-file.c | 331 ++++++++++++++++++++++++++++++++ > tools/perf/util/probe-file.h | 20 ++ > tools/perf/util/sort.c | 14 +- > tools/perf/util/util.c | 13 +- > 25 files changed, 640 insertions(+), 124 deletions(-) Pulled, thanks a lot Arnaldo! Ingo ^ permalink raw reply [flat|nested] 53+ messages in thread
* [GIT PULL 00/19] perf/core improvements and fixes @ 2016-04-07 20:58 Arnaldo Carvalho de Melo 2016-04-08 13:15 ` Arnaldo Carvalho de Melo 0 siblings, 1 reply; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-04-07 20:58 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter, Alexander Shishkin, Alexei Starovoitov, Andi Kleen, Andreas Hollmann, Cody P Schafer, David Ahern, Dima Kogan, Frederic Weisbecker, He Kuang, Jiri Olsa, Josh Poimboeuf, Kirill Smelkov, Li Zefan, Masami Hiramatsu, Milian Wolff, Namhyung Kim, Peter Zijlstra, pi3orama, Steven Rostedt, Taeung Song, Vinson Lee, Wang Nan, Arnaldo Carvalho de Melo Hi Ingo, Please consider pulling, build tested on: # perf stat -e cycles dm alldeps-ubuntu-12.04: Ok minimal-debian-experimental-x-mips64: Ok minimal-debian-experimental-x-mips64el: Ok minimal-debian-experimental-x-mipsel: Ok minimal-ubuntu-x-arm: Ok minimal-ubuntu-x-arm64: Ok minimal-ubuntu-x-ppc64: Ok minimal-ubuntu-x-ppc64el: Ok alldeps-debian: Ok alldeps-mageia: Ok alldeps-rhel7: Ok alldeps-centos: Ok alldeps-opensuse: Ok alldeps-ubuntu: Ok Performance counter stats for 'dm': 3,095,685,547 cycles 454.805537820 seconds time elapsed # 'perf test' passes on fedora23 x86_64, Thanks, - Arnaldo The following changes since commit dad38ca64a252144b4ccdfe9730a3fe2b7c61957: Merge tag 'perf-core-for-mingo-20160401' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2016-04-06 08:46:23 +0200) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20160407 for you to fetch changes up to 98c3d844cd0bc56d33800114e6b6adcd0a5ec381: perf symbols: Adjust symbol for shared objects (2016-04-07 17:17:01 -0300) ---------------------------------------------------------------- perf/core improvements and fixes: User visible: - Beautify more syscall arguments in 'perf trace', using the type column in tracepoint /format fields to attach, for instance, a pid_t resolver to the thread COMM, also attach a mode_t beautifier in the same fashion (Arnaldo Carvalho de Melo) - Build the syscall table id <-> name resolver using the same .tbl file used in the kernel to generate headers, to avoid the delay in getting new syscalls supported in the audit-libs external dependency, done so far only for x86_64 (Arnaldo Carvalho de Melo) - Improve the documentation of event specifications (Andi Kleen) - Process update events in 'perf script', fixing up this use case: # perf stat -a -I 1000 -e cycles record | perf script -s script.py - Shared object symbol adjustment fixes, fixing symbol resolution in Android (Wang Nan) Infrastructure: - Add dedicated unwind addr_space member into thread struct, to allow tools to use thread->priv, noticed while working on having callchains in 'perf trace' (Jiri Olsa) Build fixes: - Fix the build in Ubuntu 12.04 (Arnaldo Carvalho de Melo, Vinson Lee) Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> ---------------------------------------------------------------- Andi Kleen (1): perf list: Document event specifications better Arnaldo Carvalho de Melo (11): perf probe: Check if dwarf_getlocations() is available perf script perl: Do error checking on new backtrace routine perf trace: Beautify sched_setscheduler 'policy' argument perf trace: Beautify wait4/waitid 'options' argument perf trace: Infrastructure to show COMM strings for syscalls returning PIDs perf trace: Beautify set_tid_address, getpid, getppid return values perf trace: Beautify pid_t arguments perf trace: Beautify mode_t arguments perf trace: Move syscall table id <-> name routines to separate class perf tools: Allow generating per-arch syscall table arrays perf tools: Build syscall table .c header from kernel's syscall_64.tbl Jiri Olsa (4): perf tools: Remove superfluous ARCH Makefile includes perf tools: Introduce trim function perf tools: Add dedicated unwind addr_space member into thread struct perf script: Process event update events Vinson Lee (1): perf config: Fix build with older toolchain. Wang Nan (2): perf symbols: Record text offset in dso to calculate objdump address perf symbols: Adjust symbol for shared objects tools/build/Makefile.feature | 2 + tools/build/feature/Makefile | 4 + tools/build/feature/test-all.c | 5 + tools/build/feature/test-dwarf_getlocations.c | 12 + tools/perf/Documentation/perf-list.txt | 107 +++++- tools/perf/Makefile.perf | 13 +- tools/perf/arch/x86/Makefile | 23 ++ tools/perf/arch/x86/entry/syscalls/syscall_64.tbl | 374 +++++++++++++++++++++ tools/perf/arch/x86/entry/syscalls/syscalltbl.sh | 39 +++ tools/perf/builtin-script.c | 1 + tools/perf/builtin-trace.c | 156 +++++---- tools/perf/config/Makefile | 11 +- tools/perf/trace/beauty/mode_t.c | 68 ++++ tools/perf/trace/beauty/pid.c | 18 + tools/perf/trace/beauty/sched_policy.c | 44 +++ tools/perf/trace/beauty/waitid_options.c | 26 ++ tools/perf/ui/browsers/hists.c | 3 +- tools/perf/ui/stdio/hist.c | 3 +- tools/perf/util/Build | 5 + tools/perf/util/config.c | 6 +- tools/perf/util/dwarf-aux.c | 9 + tools/perf/util/map.c | 14 + .../perf/util/scripting-engines/trace-event-perl.c | 30 +- tools/perf/util/symbol-elf.c | 13 +- tools/perf/util/syscalltbl.c | 134 ++++++++ tools/perf/util/syscalltbl.h | 20 ++ tools/perf/util/thread.h | 6 + tools/perf/util/unwind-libunwind.c | 25 +- tools/perf/util/util.h | 5 + 29 files changed, 1060 insertions(+), 116 deletions(-) create mode 100644 tools/build/feature/test-dwarf_getlocations.c create mode 100644 tools/perf/arch/x86/entry/syscalls/syscall_64.tbl create mode 100755 tools/perf/arch/x86/entry/syscalls/syscalltbl.sh create mode 100644 tools/perf/trace/beauty/mode_t.c create mode 100644 tools/perf/trace/beauty/pid.c create mode 100644 tools/perf/trace/beauty/sched_policy.c create mode 100644 tools/perf/trace/beauty/waitid_options.c create mode 100644 tools/perf/util/syscalltbl.c create mode 100644 tools/perf/util/syscalltbl.h ^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: [GIT PULL 00/19] perf/core improvements and fixes 2016-04-07 20:58 Arnaldo Carvalho de Melo @ 2016-04-08 13:15 ` Arnaldo Carvalho de Melo 2016-04-13 6:58 ` Ingo Molnar 0 siblings, 1 reply; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-04-08 13:15 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Adrian Hunter, Alexander Shishkin, Alexei Starovoitov, Andi Kleen, Andreas Hollmann, Cody P Schafer, David Ahern, Dima Kogan, Frederic Weisbecker, He Kuang, Jiri Olsa, Josh Poimboeuf, Kirill Smelkov, Li Zefan, Masami Hiramatsu, Milian Wolff, Namhyung Kim, Peter Zijlstra, pi3orama, Steven Rostedt, Taeung Song, Vinson Lee, Wang Nan, Arnaldo Carvalho de Melo Em Thu, Apr 07, 2016 at 05:58:21PM -0300, Arnaldo Carvalho de Melo escreveu: > Hi Ingo, > > Please consider pulling, build tested on: Ingo, if you haven't pulled this one, please pull instead perf-core-for-mingo-20160408, which has the same tag text and contents + a Tested-by tag from Milian for the unwind thread one and a bisection fix one liner for the syscall_tbl generation from Wang, Thanks, - Arnaldo > # perf stat -e cycles dm > alldeps-ubuntu-12.04: Ok > minimal-debian-experimental-x-mips64: Ok > minimal-debian-experimental-x-mips64el: Ok > minimal-debian-experimental-x-mipsel: Ok > minimal-ubuntu-x-arm: Ok > minimal-ubuntu-x-arm64: Ok > minimal-ubuntu-x-ppc64: Ok > minimal-ubuntu-x-ppc64el: Ok > alldeps-debian: Ok > alldeps-mageia: Ok > alldeps-rhel7: Ok > alldeps-centos: Ok > alldeps-opensuse: Ok > alldeps-ubuntu: Ok > > Performance counter stats for 'dm': > > 3,095,685,547 cycles > > 454.805537820 seconds time elapsed > > # > > 'perf test' passes on fedora23 x86_64, > > Thanks, > > - Arnaldo > > The following changes since commit dad38ca64a252144b4ccdfe9730a3fe2b7c61957: > > Merge tag 'perf-core-for-mingo-20160401' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2016-04-06 08:46:23 +0200) > > are available in the git repository at: > > git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20160407 > > for you to fetch changes up to 98c3d844cd0bc56d33800114e6b6adcd0a5ec381: > > perf symbols: Adjust symbol for shared objects (2016-04-07 17:17:01 -0300) > > ---------------------------------------------------------------- > perf/core improvements and fixes: > > User visible: > > - Beautify more syscall arguments in 'perf trace', using the type column in > tracepoint /format fields to attach, for instance, a pid_t resolver to the > thread COMM, also attach a mode_t beautifier in the same fashion > (Arnaldo Carvalho de Melo) > > - Build the syscall table id <-> name resolver using the same .tbl file > used in the kernel to generate headers, to avoid the delay in getting > new syscalls supported in the audit-libs external dependency, done so > far only for x86_64 (Arnaldo Carvalho de Melo) > > - Improve the documentation of event specifications (Andi Kleen) > > - Process update events in 'perf script', fixing up this use case: > > # perf stat -a -I 1000 -e cycles record | perf script -s script.py > > - Shared object symbol adjustment fixes, fixing symbol resolution in > Android (Wang Nan) > > Infrastructure: > > - Add dedicated unwind addr_space member into thread struct, to allow > tools to use thread->priv, noticed while working on having callchains > in 'perf trace' (Jiri Olsa) > > Build fixes: > > - Fix the build in Ubuntu 12.04 (Arnaldo Carvalho de Melo, Vinson Lee) > > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> > > ---------------------------------------------------------------- > Andi Kleen (1): > perf list: Document event specifications better > > Arnaldo Carvalho de Melo (11): > perf probe: Check if dwarf_getlocations() is available > perf script perl: Do error checking on new backtrace routine > perf trace: Beautify sched_setscheduler 'policy' argument > perf trace: Beautify wait4/waitid 'options' argument > perf trace: Infrastructure to show COMM strings for syscalls returning PIDs > perf trace: Beautify set_tid_address, getpid, getppid return values > perf trace: Beautify pid_t arguments > perf trace: Beautify mode_t arguments > perf trace: Move syscall table id <-> name routines to separate class > perf tools: Allow generating per-arch syscall table arrays > perf tools: Build syscall table .c header from kernel's syscall_64.tbl > > Jiri Olsa (4): > perf tools: Remove superfluous ARCH Makefile includes > perf tools: Introduce trim function > perf tools: Add dedicated unwind addr_space member into thread struct > perf script: Process event update events > > Vinson Lee (1): > perf config: Fix build with older toolchain. > > Wang Nan (2): > perf symbols: Record text offset in dso to calculate objdump address > perf symbols: Adjust symbol for shared objects > > tools/build/Makefile.feature | 2 + > tools/build/feature/Makefile | 4 + > tools/build/feature/test-all.c | 5 + > tools/build/feature/test-dwarf_getlocations.c | 12 + > tools/perf/Documentation/perf-list.txt | 107 +++++- > tools/perf/Makefile.perf | 13 +- > tools/perf/arch/x86/Makefile | 23 ++ > tools/perf/arch/x86/entry/syscalls/syscall_64.tbl | 374 +++++++++++++++++++++ > tools/perf/arch/x86/entry/syscalls/syscalltbl.sh | 39 +++ > tools/perf/builtin-script.c | 1 + > tools/perf/builtin-trace.c | 156 +++++---- > tools/perf/config/Makefile | 11 +- > tools/perf/trace/beauty/mode_t.c | 68 ++++ > tools/perf/trace/beauty/pid.c | 18 + > tools/perf/trace/beauty/sched_policy.c | 44 +++ > tools/perf/trace/beauty/waitid_options.c | 26 ++ > tools/perf/ui/browsers/hists.c | 3 +- > tools/perf/ui/stdio/hist.c | 3 +- > tools/perf/util/Build | 5 + > tools/perf/util/config.c | 6 +- > tools/perf/util/dwarf-aux.c | 9 + > tools/perf/util/map.c | 14 + > .../perf/util/scripting-engines/trace-event-perl.c | 30 +- > tools/perf/util/symbol-elf.c | 13 +- > tools/perf/util/syscalltbl.c | 134 ++++++++ > tools/perf/util/syscalltbl.h | 20 ++ > tools/perf/util/thread.h | 6 + > tools/perf/util/unwind-libunwind.c | 25 +- > tools/perf/util/util.h | 5 + > 29 files changed, 1060 insertions(+), 116 deletions(-) > create mode 100644 tools/build/feature/test-dwarf_getlocations.c > create mode 100644 tools/perf/arch/x86/entry/syscalls/syscall_64.tbl > create mode 100755 tools/perf/arch/x86/entry/syscalls/syscalltbl.sh > create mode 100644 tools/perf/trace/beauty/mode_t.c > create mode 100644 tools/perf/trace/beauty/pid.c > create mode 100644 tools/perf/trace/beauty/sched_policy.c > create mode 100644 tools/perf/trace/beauty/waitid_options.c > create mode 100644 tools/perf/util/syscalltbl.c > create mode 100644 tools/perf/util/syscalltbl.h ^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: [GIT PULL 00/19] perf/core improvements and fixes 2016-04-08 13:15 ` Arnaldo Carvalho de Melo @ 2016-04-13 6:58 ` Ingo Molnar 0 siblings, 0 replies; 53+ messages in thread From: Ingo Molnar @ 2016-04-13 6:58 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: linux-kernel, Adrian Hunter, Alexander Shishkin, Alexei Starovoitov, Andi Kleen, Andreas Hollmann, Cody P Schafer, David Ahern, Dima Kogan, Frederic Weisbecker, He Kuang, Jiri Olsa, Josh Poimboeuf, Kirill Smelkov, Li Zefan, Masami Hiramatsu, Milian Wolff, Namhyung Kim, Peter Zijlstra, pi3orama, Steven Rostedt, Taeung Song, Vinson Lee, Wang Nan, Arnaldo Carvalho de Melo * Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > Em Thu, Apr 07, 2016 at 05:58:21PM -0300, Arnaldo Carvalho de Melo escreveu: > > Hi Ingo, > > > > Please consider pulling, build tested on: > > Ingo, if you haven't pulled this one, please pull instead > perf-core-for-mingo-20160408, which has the same tag text and contents + > a Tested-by tag from Milian for the unwind thread one and a bisection > fix one liner for the syscall_tbl generation from Wang, Pulled, thanks a lot Arnaldo! Ingo ^ permalink raw reply [flat|nested] 53+ messages in thread
* [GIT PULL 00/19] perf/core improvements and fixes @ 2016-03-10 21:04 Arnaldo Carvalho de Melo 2016-03-11 8:43 ` Ingo Molnar 0 siblings, 1 reply; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-03-10 21:04 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter, Alexander Shishkin, Andi Kleen, Borislav Petkov, Chris Phlipot, Colin Ian King, David Ahern, Davidlohr Bueso, He Kuang, H . Peter Anvin, Jiri Olsa, Mel Gorman, Namhyung Kim, Peter Zijlstra, Stephane Eranian, Steven Rostedt, Thomas Gleixner, Wang Nan, Arnaldo Carvalho de Melo Hi Ingo, Please consider pulling, - Arnaldo The following changes since commit 3a99e6db539e53cc9c79282e80f8362b0cb96ac8: perf bench mem: Prepare the x86-64 build for upstream memcpy_mcsafe() changes (2016-03-09 10:40:01 +0100) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20160310 for you to fetch changes up to 206cab651d07563d766c7f4cb73f858c5df3dec5: perf stat: Add --metric-only support for -A (2016-03-10 16:50:47 -0300) ---------------------------------------------------------------- perf/core improvements and fixes: User visible: - Implement 'perf stat --metric-only' (Andi Kleen) - Fix perf script python database export crash (Chris Phlipot) Infrastructure: - perf top/report --hierarchy assorted fixes for problems introduced in this perf/core cycle (Namhyung Kim) - Support '~' operation in libtraceevent (Steven Rosted) Build fixes: - Fix bulding of jitdump on opensuse on ubuntu systems when the DWARF devel files are not installed (Arnaldo Carvalho de Melo) - Do not try building jitdump on unsupported arches (Jiri Olsa) Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> ---------------------------------------------------------------- Andi Kleen (3): perf stat: Document CSV format in manpage perf stat: Implement --metric-only mode perf stat: Add --metric-only support for -A Arnaldo Carvalho de Melo (1): perf jitdump: DWARF is also needed Chris Phlipot (1): perf tools: Fix perf script python database export crash Jiri Olsa (3): perf tools: Pass perf_hpp_list all the way through setup_sort_list perf tools: Omit unnecessary cast in perf_pmu__parse_scale perf jitdump: Build only on supported archs Namhyung Kim (10): perf tools: Fix hist_entry__filter() for hierarchy perf tools: Add more sort entry check functions perf tools: Fix command line filters in hierarchy mode perf tools: Remove hist_entry->fmt field perf hists browser: Cleanup hist_browser__fprintf_hierarchy_entry() perf tools: Remove nr_sort_keys field perf tools: Recalc total periods using top-level entries in hierarchy perf tools: Add sort__has_comm variable perf hists browser: Allow thread filtering for comm sort key perf hists browser: Check sort keys before hot key actions Steven Rostedt (1): tools lib traceevent: Add '~' operation within arg_num_eval() tools/lib/traceevent/event-parse.c | 6 + tools/perf/Documentation/perf-stat.txt | 27 ++++ tools/perf/arch/arm/Makefile | 1 + tools/perf/arch/arm64/Makefile | 1 + tools/perf/arch/powerpc/Makefile | 1 + tools/perf/arch/x86/Makefile | 1 + tools/perf/builtin-inject.c | 12 +- tools/perf/builtin-stat.c | 244 +++++++++++++++++++++++++++++++-- tools/perf/config/Makefile | 7 + tools/perf/ui/browsers/hists.c | 73 ++++++---- tools/perf/ui/hist.c | 3 - tools/perf/util/Build | 3 + tools/perf/util/evsel.h | 6 +- tools/perf/util/hist.c | 144 +++++++++++++++++-- tools/perf/util/hist.h | 6 +- tools/perf/util/pmu.c | 4 +- tools/perf/util/sort.c | 147 +++++++++----------- tools/perf/util/sort.h | 2 +- 18 files changed, 542 insertions(+), 146 deletions(-) ^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: [GIT PULL 00/19] perf/core improvements and fixes 2016-03-10 21:04 Arnaldo Carvalho de Melo @ 2016-03-11 8:43 ` Ingo Molnar 0 siblings, 0 replies; 53+ messages in thread From: Ingo Molnar @ 2016-03-11 8:43 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: linux-kernel, Adrian Hunter, Alexander Shishkin, Andi Kleen, Borislav Petkov, Chris Phlipot, Colin Ian King, David Ahern, Davidlohr Bueso, He Kuang, H . Peter Anvin, Jiri Olsa, Mel Gorman, Namhyung Kim, Peter Zijlstra, Stephane Eranian, Steven Rostedt, Thomas Gleixner, Wang Nan, Arnaldo Carvalho de Melo * Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > Hi Ingo, > > Please consider pulling, > > - Arnaldo > > The following changes since commit 3a99e6db539e53cc9c79282e80f8362b0cb96ac8: > > perf bench mem: Prepare the x86-64 build for upstream memcpy_mcsafe() changes (2016-03-09 10:40:01 +0100) > > are available in the git repository at: > > git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20160310 > > for you to fetch changes up to 206cab651d07563d766c7f4cb73f858c5df3dec5: > > perf stat: Add --metric-only support for -A (2016-03-10 16:50:47 -0300) > > ---------------------------------------------------------------- > perf/core improvements and fixes: > > User visible: > > - Implement 'perf stat --metric-only' (Andi Kleen) > > - Fix perf script python database export crash (Chris Phlipot) > > Infrastructure: > > - perf top/report --hierarchy assorted fixes for problems introduced in this > perf/core cycle (Namhyung Kim) > > - Support '~' operation in libtraceevent (Steven Rosted) > > Build fixes: > > - Fix bulding of jitdump on opensuse on ubuntu systems when the DWARF > devel files are not installed (Arnaldo Carvalho de Melo) > > - Do not try building jitdump on unsupported arches (Jiri Olsa) > > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> > > ---------------------------------------------------------------- > Andi Kleen (3): > perf stat: Document CSV format in manpage > perf stat: Implement --metric-only mode > perf stat: Add --metric-only support for -A > > Arnaldo Carvalho de Melo (1): > perf jitdump: DWARF is also needed > > Chris Phlipot (1): > perf tools: Fix perf script python database export crash > > Jiri Olsa (3): > perf tools: Pass perf_hpp_list all the way through setup_sort_list > perf tools: Omit unnecessary cast in perf_pmu__parse_scale > perf jitdump: Build only on supported archs > > Namhyung Kim (10): > perf tools: Fix hist_entry__filter() for hierarchy > perf tools: Add more sort entry check functions > perf tools: Fix command line filters in hierarchy mode > perf tools: Remove hist_entry->fmt field > perf hists browser: Cleanup hist_browser__fprintf_hierarchy_entry() > perf tools: Remove nr_sort_keys field > perf tools: Recalc total periods using top-level entries in hierarchy > perf tools: Add sort__has_comm variable > perf hists browser: Allow thread filtering for comm sort key > perf hists browser: Check sort keys before hot key actions > > Steven Rostedt (1): > tools lib traceevent: Add '~' operation within arg_num_eval() > > tools/lib/traceevent/event-parse.c | 6 + > tools/perf/Documentation/perf-stat.txt | 27 ++++ > tools/perf/arch/arm/Makefile | 1 + > tools/perf/arch/arm64/Makefile | 1 + > tools/perf/arch/powerpc/Makefile | 1 + > tools/perf/arch/x86/Makefile | 1 + > tools/perf/builtin-inject.c | 12 +- > tools/perf/builtin-stat.c | 244 +++++++++++++++++++++++++++++++-- > tools/perf/config/Makefile | 7 + > tools/perf/ui/browsers/hists.c | 73 ++++++---- > tools/perf/ui/hist.c | 3 - > tools/perf/util/Build | 3 + > tools/perf/util/evsel.h | 6 +- > tools/perf/util/hist.c | 144 +++++++++++++++++-- > tools/perf/util/hist.h | 6 +- > tools/perf/util/pmu.c | 4 +- > tools/perf/util/sort.c | 147 +++++++++----------- > tools/perf/util/sort.h | 2 +- > 18 files changed, 542 insertions(+), 146 deletions(-) Pulled, thanks a lot Arnaldo! Ingo ^ permalink raw reply [flat|nested] 53+ messages in thread
* [GIT PULL 00/19] perf/core improvements and fixes @ 2016-02-26 23:18 Arnaldo Carvalho de Melo 2016-02-27 9:36 ` Ingo Molnar 0 siblings, 1 reply; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-02-26 23:18 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter, Alexei Starovoitov, Andi Kleen, David Ahern, Jiri Olsa, Kan Liang, Li Zefan, Masami Hiramatsu, Namhyung Kim, Peter Zijlstra, pi3orama, Stephane Eranian, Taeung Song, Wang Nan, Arnaldo Carvalho de Melo Hi Ingo, Please consider pulling, - Arnaldo The following changes since commit 06466212a69c0511c5dcff7363c207ffc8913731: Merge tag 'perf-core-for-mingo-20160224' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2016-02-25 08:20:56 +0100) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20160226 for you to fetch changes up to 1d6c9407d45dd622b277ca9f725da3cc9e95b5de: perf trace: Print content of bpf-output event (2016-02-26 19:57:07 -0300) ---------------------------------------------------------------- perf/core improvements and fixes: User visible: - Show extra line telling no entries below --percent-limit are at that --hierarchy level (Namhyung Kim) - 'perf report/top --hierarchy' assorted alignment fixes (Namhyung Kim) - Handle empty print fmts in 'perf script -s' i.e. when running python or perl scripts (Taeung Song) - Improve support for bpf-output events in 'perf trace' (Wang Nan) - Fix parsing of pmu events with empty list of modifiers, this cures a perf/core-only regression where '-e intel_pt//' got broken (Arnaldo Carvalho de Melo) Infrastructure: - Improve missing OpenJDK devel files error message in jvmti Makefile (Stephane Eranian) - Remove duplicated code and needless script_spec__findnew() (Taeung Song) - Bring perf_default_config to the very beginning at main(), removing the need for each subcommand to do this (Wang Nan) Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> ---------------------------------------------------------------- Arnaldo Carvalho de Melo (2): perf tools: Use asprintf() for simple string formatting/allocation perf tools: Fix parsing of pmu events with empty list of modifiers Namhyung Kim (10): perf hists: Add more helper functions for the hierarchy mode perf report: Show message for percent limit on stdio perf hists browser: Cleanup hist_browser__update_percent_limit() perf hists browser: Show message for percent limit perf report: Show message for percent limit on gtk perf hists: Fix comparing of dynamic entries perf report: Fix indentation of dynamic entries in hierarchy perf report: Left align dynamic entries in hierarchy perf hists: Fix dynamic entry display in hierarchy perf report: Update column width of dynamic entries Stephane Eranian (1): perf jvmti: improve error message in Makefile Taeung Song (2): perf script: Exception handling when the print fmt is empty perf script: Remove duplicated code and needless script_spec__findnew() Wang Nan (4): perf config: Bring perf_default_config to the very beginning at main() perf tools: Only set filter for tracepoints events perf trace: Call bpf__apply_obj_config in 'perf trace' perf trace: Print content of bpf-output event tools/perf/builtin-diff.c | 2 - tools/perf/builtin-help.c | 2 +- tools/perf/builtin-kmem.c | 4 +- tools/perf/builtin-report.c | 2 +- tools/perf/builtin-script.c | 21 +--- tools/perf/builtin-top.c | 4 +- tools/perf/builtin-trace.c | 46 +++++++- tools/perf/jvmti/Makefile | 17 ++- tools/perf/perf.c | 16 ++- tools/perf/tests/llvm.c | 8 -- tools/perf/ui/browsers/hists.c | 128 +++++++++++++++++++-- tools/perf/ui/gtk/hists.c | 11 ++ tools/perf/ui/hist.c | 22 ++++ tools/perf/ui/stdio/hist.c | 49 ++++++-- tools/perf/util/color.c | 5 +- tools/perf/util/data-convert-bt.c | 2 +- tools/perf/util/evlist.c | 3 + tools/perf/util/help-unknown-cmd.c | 5 +- tools/perf/util/hist.c | 48 +++++++- tools/perf/util/hist.h | 4 + tools/perf/util/parse-events.y | 6 +- .../perf/util/scripting-engines/trace-event-perl.c | 3 + .../util/scripting-engines/trace-event-python.c | 3 + tools/perf/util/sort.c | 30 ++++- tools/perf/util/sort.h | 1 + 25 files changed, 363 insertions(+), 79 deletions(-) ^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: [GIT PULL 00/19] perf/core improvements and fixes 2016-02-26 23:18 Arnaldo Carvalho de Melo @ 2016-02-27 9:36 ` Ingo Molnar 0 siblings, 0 replies; 53+ messages in thread From: Ingo Molnar @ 2016-02-27 9:36 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: linux-kernel, Adrian Hunter, Alexei Starovoitov, Andi Kleen, David Ahern, Jiri Olsa, Kan Liang, Li Zefan, Masami Hiramatsu, Namhyung Kim, Peter Zijlstra, pi3orama, Stephane Eranian, Taeung Song, Wang Nan, Arnaldo Carvalho de Melo * Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > Hi Ingo, > > Please consider pulling, > > - Arnaldo > > The following changes since commit 06466212a69c0511c5dcff7363c207ffc8913731: > > Merge tag 'perf-core-for-mingo-20160224' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2016-02-25 08:20:56 +0100) > > are available in the git repository at: > > git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20160226 > > for you to fetch changes up to 1d6c9407d45dd622b277ca9f725da3cc9e95b5de: > > perf trace: Print content of bpf-output event (2016-02-26 19:57:07 -0300) > > ---------------------------------------------------------------- > perf/core improvements and fixes: > > User visible: > > - Show extra line telling no entries below --percent-limit are > at that --hierarchy level (Namhyung Kim) > > - 'perf report/top --hierarchy' assorted alignment fixes (Namhyung Kim) > > - Handle empty print fmts in 'perf script -s' i.e. when running > python or perl scripts (Taeung Song) > > - Improve support for bpf-output events in 'perf trace' (Wang Nan) > > - Fix parsing of pmu events with empty list of modifiers, this > cures a perf/core-only regression where '-e intel_pt//' got > broken (Arnaldo Carvalho de Melo) > > Infrastructure: > > - Improve missing OpenJDK devel files error message in jvmti > Makefile (Stephane Eranian) > > - Remove duplicated code and needless script_spec__findnew() (Taeung Song) > > - Bring perf_default_config to the very beginning at main(), removing > the need for each subcommand to do this (Wang Nan) > > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> > > ---------------------------------------------------------------- > Arnaldo Carvalho de Melo (2): > perf tools: Use asprintf() for simple string formatting/allocation > perf tools: Fix parsing of pmu events with empty list of modifiers > > Namhyung Kim (10): > perf hists: Add more helper functions for the hierarchy mode > perf report: Show message for percent limit on stdio > perf hists browser: Cleanup hist_browser__update_percent_limit() > perf hists browser: Show message for percent limit > perf report: Show message for percent limit on gtk > perf hists: Fix comparing of dynamic entries > perf report: Fix indentation of dynamic entries in hierarchy > perf report: Left align dynamic entries in hierarchy > perf hists: Fix dynamic entry display in hierarchy > perf report: Update column width of dynamic entries > > Stephane Eranian (1): > perf jvmti: improve error message in Makefile > > Taeung Song (2): > perf script: Exception handling when the print fmt is empty > perf script: Remove duplicated code and needless script_spec__findnew() > > Wang Nan (4): > perf config: Bring perf_default_config to the very beginning at main() > perf tools: Only set filter for tracepoints events > perf trace: Call bpf__apply_obj_config in 'perf trace' > perf trace: Print content of bpf-output event > > tools/perf/builtin-diff.c | 2 - > tools/perf/builtin-help.c | 2 +- > tools/perf/builtin-kmem.c | 4 +- > tools/perf/builtin-report.c | 2 +- > tools/perf/builtin-script.c | 21 +--- > tools/perf/builtin-top.c | 4 +- > tools/perf/builtin-trace.c | 46 +++++++- > tools/perf/jvmti/Makefile | 17 ++- > tools/perf/perf.c | 16 ++- > tools/perf/tests/llvm.c | 8 -- > tools/perf/ui/browsers/hists.c | 128 +++++++++++++++++++-- > tools/perf/ui/gtk/hists.c | 11 ++ > tools/perf/ui/hist.c | 22 ++++ > tools/perf/ui/stdio/hist.c | 49 ++++++-- > tools/perf/util/color.c | 5 +- > tools/perf/util/data-convert-bt.c | 2 +- > tools/perf/util/evlist.c | 3 + > tools/perf/util/help-unknown-cmd.c | 5 +- > tools/perf/util/hist.c | 48 +++++++- > tools/perf/util/hist.h | 4 + > tools/perf/util/parse-events.y | 6 +- > .../perf/util/scripting-engines/trace-event-perl.c | 3 + > .../util/scripting-engines/trace-event-python.c | 3 + > tools/perf/util/sort.c | 30 ++++- > tools/perf/util/sort.h | 1 + > 25 files changed, 363 insertions(+), 79 deletions(-) Pulled, thanks a lot Arnaldo! Ingo ^ permalink raw reply [flat|nested] 53+ messages in thread
* [GIT PULL 00/19] perf/core improvements and fixes @ 2016-02-05 16:25 Arnaldo Carvalho de Melo 2016-02-09 9:40 ` Ingo Molnar 0 siblings, 1 reply; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2016-02-05 16:25 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter, Andi Kleen, Carl Love, David Ahern, Jiri Olsa, John McCutchan, Marcin Ślusarz, Namhyung Kim, Pawel Moll, Peter Zijlstra, Sonny Rao, Stephane Eranian, Sukadev Bhattiprolu, Taeung Song, Wang Nan, Arnaldo Carvalho de Melo Hi Ingo, Please consider pulling, - Arnaldo The following changes since commit d3aaf09f889b31f3b424bf9603b163ec1204c361: Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2016-02-04 08:58:01 +0100) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo for you to fetch changes up to 598b7c6919c7bbcc1243009721a01bc12275ff3e: perf jit: add source line info support (2016-02-05 12:33:09 -0300) ---------------------------------------------------------------- perf/core improvements and fixes: User visible fixes: - Handle spaces in file names obtained from /proc/pid/maps (Marcin Ślusarz) New features: - Improved support for java, using the JVMTI agent library to do jitdumps that then will be inserted in synthesized PERF_RECORD_MMAP2 events via 'perf inject' pointed to synthesized ELF files stored in ~/.debug and keyed with build-ids, to allow symbol resolution and even annotation with source line info, see the changeset comments to see how to use it (Stephane Eranian) Documentation: - Document mmore variables in the 'perf config' man page (Taeung Song) Infrastructure: - Improve a bit the 'make -C tools/perf build-test' output (Arnaldo Carvalho de Melo) - Do 'build-test' in parallell, using 'make -j' (Arnaldo Carvalho de Melo) - Fix handling of 'clean' in multi-target make invokations for parallell builds (Jiri Olsa) Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> ---------------------------------------------------------------- Arnaldo Carvalho de Melo (4): perf build tests: Elide "-f Makefile" from make invokation perf build tests: Move the feature related vars to the front of the make cmdline perf build tests: Do parallell builds with 'build-test' perf inject: Make sure mmap records are ordered when injecting build_ids Jiri Olsa (1): perf tools: Fix parallel build including 'clean' target Marcin Ślusarz (1): perf tools: handle spaces in file names obtained from /proc/pid/maps Stephane Eranian (5): perf symbols: add Java demangling support perf build: Add libcrypto feature detection perf inject: Add jitdump mmap injection support perf tools: add JVMTI agent library perf jit: add source line info support Taeung Song (8): perf config: Document 'ui.show-headers' variable in man page perf config: Document variables for 'call-graph' section in man page perf config: Document variables for 'report' section in man page perf config: Document 'top.children' variable in man page perf config: Document 'man.viewer' variable in man page perf config: Document 'pager.<subcommand>' variables in man page perf config: Document 'kmem.default' variable in man page perf config: Document 'record.build-id' variable in man page tools/build/Makefile.feature | 2 + tools/build/feature/Makefile | 4 + tools/build/feature/test-all.c | 5 + tools/build/feature/test-libcrypto.c | 17 + tools/perf/Documentation/perf-config.txt | 143 +++++++ tools/perf/Documentation/perf-inject.txt | 7 + tools/perf/Makefile | 16 +- tools/perf/Makefile.perf | 3 + tools/perf/builtin-inject.c | 107 ++++- tools/perf/config/Makefile | 11 + tools/perf/jvmti/Makefile | 76 ++++ tools/perf/jvmti/jvmti_agent.c | 465 +++++++++++++++++++++ tools/perf/jvmti/jvmti_agent.h | 36 ++ tools/perf/jvmti/libjvmti.c | 304 ++++++++++++++ tools/perf/tests/make | 11 +- tools/perf/util/Build | 6 + tools/perf/util/demangle-java.c | 199 +++++++++ tools/perf/util/demangle-java.h | 10 + tools/perf/util/event.c | 2 +- tools/perf/util/genelf.c | 449 +++++++++++++++++++++ tools/perf/util/genelf.h | 67 +++ tools/perf/util/genelf_debug.c | 610 ++++++++++++++++++++++++++++ tools/perf/util/jit.h | 15 + tools/perf/util/jitdump.c | 672 +++++++++++++++++++++++++++++++ tools/perf/util/jitdump.h | 124 ++++++ tools/perf/util/symbol-elf.c | 3 + 26 files changed, 3357 insertions(+), 7 deletions(-) create mode 100644 tools/build/feature/test-libcrypto.c create mode 100644 tools/perf/jvmti/Makefile create mode 100644 tools/perf/jvmti/jvmti_agent.c create mode 100644 tools/perf/jvmti/jvmti_agent.h create mode 100644 tools/perf/jvmti/libjvmti.c create mode 100644 tools/perf/util/demangle-java.c create mode 100644 tools/perf/util/demangle-java.h create mode 100644 tools/perf/util/genelf.c create mode 100644 tools/perf/util/genelf.h create mode 100644 tools/perf/util/genelf_debug.c create mode 100644 tools/perf/util/jit.h create mode 100644 tools/perf/util/jitdump.c create mode 100644 tools/perf/util/jitdump.h ^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: [GIT PULL 00/19] perf/core improvements and fixes 2016-02-05 16:25 Arnaldo Carvalho de Melo @ 2016-02-09 9:40 ` Ingo Molnar 0 siblings, 0 replies; 53+ messages in thread From: Ingo Molnar @ 2016-02-09 9:40 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: linux-kernel, Adrian Hunter, Andi Kleen, Carl Love, David Ahern, Jiri Olsa, John McCutchan, Marcin Ślusarz, Namhyung Kim, Pawel Moll, Peter Zijlstra, Sonny Rao, Stephane Eranian, Sukadev Bhattiprolu, Taeung Song, Wang Nan, Arnaldo Carvalho de Melo * Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > Hi Ingo, > > Please consider pulling, > > - Arnaldo > > The following changes since commit d3aaf09f889b31f3b424bf9603b163ec1204c361: > > Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2016-02-04 08:58:01 +0100) > > are available in the git repository at: > > git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo > > for you to fetch changes up to 598b7c6919c7bbcc1243009721a01bc12275ff3e: > > perf jit: add source line info support (2016-02-05 12:33:09 -0300) > > ---------------------------------------------------------------- > perf/core improvements and fixes: > > User visible fixes: > > - Handle spaces in file names obtained from /proc/pid/maps (Marcin Ślusarz) > > New features: > > - Improved support for java, using the JVMTI agent library to do jitdumps > that then will be inserted in synthesized PERF_RECORD_MMAP2 events via > 'perf inject' pointed to synthesized ELF files stored in ~/.debug and > keyed with build-ids, to allow symbol resolution and even annotation with > source line info, see the changeset comments to see how to use it (Stephane Eranian) > > Documentation: > > - Document mmore variables in the 'perf config' man page (Taeung Song) > > Infrastructure: > > - Improve a bit the 'make -C tools/perf build-test' output (Arnaldo Carvalho de Melo) > > - Do 'build-test' in parallell, using 'make -j' (Arnaldo Carvalho de Melo) > > - Fix handling of 'clean' in multi-target make invokations for parallell builds (Jiri Olsa) > > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> > > ---------------------------------------------------------------- > Arnaldo Carvalho de Melo (4): > perf build tests: Elide "-f Makefile" from make invokation > perf build tests: Move the feature related vars to the front of the make cmdline > perf build tests: Do parallell builds with 'build-test' > perf inject: Make sure mmap records are ordered when injecting build_ids > > Jiri Olsa (1): > perf tools: Fix parallel build including 'clean' target > > Marcin Ślusarz (1): > perf tools: handle spaces in file names obtained from /proc/pid/maps > > Stephane Eranian (5): > perf symbols: add Java demangling support > perf build: Add libcrypto feature detection > perf inject: Add jitdump mmap injection support > perf tools: add JVMTI agent library > perf jit: add source line info support > > Taeung Song (8): > perf config: Document 'ui.show-headers' variable in man page > perf config: Document variables for 'call-graph' section in man page > perf config: Document variables for 'report' section in man page > perf config: Document 'top.children' variable in man page > perf config: Document 'man.viewer' variable in man page > perf config: Document 'pager.<subcommand>' variables in man page > perf config: Document 'kmem.default' variable in man page > perf config: Document 'record.build-id' variable in man page > > tools/build/Makefile.feature | 2 + > tools/build/feature/Makefile | 4 + > tools/build/feature/test-all.c | 5 + > tools/build/feature/test-libcrypto.c | 17 + > tools/perf/Documentation/perf-config.txt | 143 +++++++ > tools/perf/Documentation/perf-inject.txt | 7 + > tools/perf/Makefile | 16 +- > tools/perf/Makefile.perf | 3 + > tools/perf/builtin-inject.c | 107 ++++- > tools/perf/config/Makefile | 11 + > tools/perf/jvmti/Makefile | 76 ++++ > tools/perf/jvmti/jvmti_agent.c | 465 +++++++++++++++++++++ > tools/perf/jvmti/jvmti_agent.h | 36 ++ > tools/perf/jvmti/libjvmti.c | 304 ++++++++++++++ > tools/perf/tests/make | 11 +- > tools/perf/util/Build | 6 + > tools/perf/util/demangle-java.c | 199 +++++++++ > tools/perf/util/demangle-java.h | 10 + > tools/perf/util/event.c | 2 +- > tools/perf/util/genelf.c | 449 +++++++++++++++++++++ > tools/perf/util/genelf.h | 67 +++ > tools/perf/util/genelf_debug.c | 610 ++++++++++++++++++++++++++++ > tools/perf/util/jit.h | 15 + > tools/perf/util/jitdump.c | 672 +++++++++++++++++++++++++++++++ > tools/perf/util/jitdump.h | 124 ++++++ > tools/perf/util/symbol-elf.c | 3 + > 26 files changed, 3357 insertions(+), 7 deletions(-) > create mode 100644 tools/build/feature/test-libcrypto.c > create mode 100644 tools/perf/jvmti/Makefile > create mode 100644 tools/perf/jvmti/jvmti_agent.c > create mode 100644 tools/perf/jvmti/jvmti_agent.h > create mode 100644 tools/perf/jvmti/libjvmti.c > create mode 100644 tools/perf/util/demangle-java.c > create mode 100644 tools/perf/util/demangle-java.h > create mode 100644 tools/perf/util/genelf.c > create mode 100644 tools/perf/util/genelf.h > create mode 100644 tools/perf/util/genelf_debug.c > create mode 100644 tools/perf/util/jit.h > create mode 100644 tools/perf/util/jitdump.c > create mode 100644 tools/perf/util/jitdump.h Pulled, thanks a lot Arnaldo! Ingo ^ permalink raw reply [flat|nested] 53+ messages in thread
* [GIT PULL 00/19] perf/core improvements and fixes @ 2015-04-08 14:23 Arnaldo Carvalho de Melo 2015-04-08 15:05 ` Ingo Molnar 0 siblings, 1 reply; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2015-04-08 14:23 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter, Alexander Shishkin, Andi Kleen, Andrew Morton, Borislav Petkov, David Ahern, Frederic Weisbecker, He Kuang, H. Peter Anvin, Jiri Olsa, John Stultz, Joonsoo Kim, Kaixu Xia, Kan Liang, Linus Torvalds, linux-mm, Markus T Metzger, Masami Hiramatsu, Mathieu Poirier, Mike Galbraith, Minchan Kim, Namhyung Kim, Paul Mackerras, Peter Zijlstra, pi3orama, Robert Richter, Stephane Eranian, Steven Rostedt, Thomas Gleixner, Wang Nan, William Cohen, Yunlong Song, Zefan Li, Arnaldo Carvalho de Melo Hi Ingo, Please consider pulling, it is the pull req from yesterday, minus a patch that introduced a problem, plus a fex fixes. I am investigating a problem I noticed for another patch that is upstream and after that will get back to the removed patch from yesterday's batch, - Arnaldo The following changes since commit 6645f3187f5beb64f7a40515cfa18f3889264ece: Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2015-04-03 07:00:02 +0200) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo for you to fetch changes up to a1e12da4796a4ddd0e911687a290eb396d1c64bf: perf tools: Add 'I' event modifier for exclude_idle bit (2015-04-08 11:00:16 -0300) ---------------------------------------------------------------- perf/core improvements and fixes: - Teach about perf_event_attr.clockid to 'perf record' (Peter Zijlstra) - perf sched replay improvements for high CPU core count machines (Yunlong Song) - Consider PERF_RECORD_ events with cpumode == 0 in 'perf top', removing one cause of long term memory usage buildup, i.e. not processing PERF_RECORD_EXIT events (Arnaldo Carvalho de Melo) - Add 'I' event modifier for perf_event_attr.exclude_idle bit (Jiri Olsa) - Respect -i option 'in perf kmem' (Jiri Olsa) Infrastructure: - Honor operator priority in libtraceevent (Namhyung Kim) - Merge all perf_event_attr print functions (Peter Zijlstra) - Check kmaps access to make code more robust (Wang Nan) - Fix inverted logic in perf_mmap__empty() (He Kuang) - Fix ARM 32 'perf probe' building error (Wang Nan) - Fix perf_event_attr tests (Jiri Olsa) Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> ---------------------------------------------------------------- He Kuang (1): perf evlist: Fix inverted logic in perf_mmap__empty Jiri Olsa (3): perf kmem: Respect -i option perf tests: Fix attr tests perf tools: Add 'I' event modifier for exclude_idle bit Namhyung Kim (1): tools lib traceevent: Honor operator priority Peter Zijlstra (2): perf record: Add clockid parameter perf tools: Merge all perf_event_attr print functions Wang Nan (3): perf kmaps: Check kmaps to make code more robust perf probe: Fix ARM 32 building error perf report: Don't call map__kmap if map is NULL. Yunlong Song (9): perf sched replay: Use struct task_desc instead of struct task_task for correct meaning perf sched replay: Increase the MAX_PID value to fix assertion failure problem perf sched replay: Alloc the memory of pid_to_task dynamically to adapt to the unexpected change of pid_max perf sched replay: Realloc the memory of pid_to_task stepwise to adapt to the different pid_max configurations perf sched replay: Fix the segmentation fault problem caused by pr_err in threads perf sched replay: Handle the dead halt of sem_wait when create_tasks() fails for any task perf sched replay: Fix the EMFILE error caused by the limitation of the maximum open files perf sched replay: Support using -f to override perf.data file ownership perf sched replay: Use replay_repeat to calculate the runavg of cpu usage instead of the default value 10 tools/lib/traceevent/event-parse.c | 17 +- tools/perf/Documentation/perf-list.txt | 1 + tools/perf/Documentation/perf-record.txt | 7 + tools/perf/builtin-kmem.c | 3 +- tools/perf/builtin-record.c | 87 +++++++++ tools/perf/builtin-report.c | 2 +- tools/perf/builtin-sched.c | 67 +++++-- tools/perf/perf.h | 2 + tools/perf/tests/attr/base-record | 2 +- tools/perf/tests/attr/base-stat | 2 +- tools/perf/tests/parse-events.c | 40 ++++ tools/perf/util/evlist.c | 2 +- tools/perf/util/evsel.c | 325 ++++++++++++++++--------------- tools/perf/util/evsel.h | 6 + tools/perf/util/header.c | 28 +-- tools/perf/util/machine.c | 5 +- tools/perf/util/map.c | 20 ++ tools/perf/util/map.h | 6 +- tools/perf/util/parse-events.c | 8 +- tools/perf/util/parse-events.l | 2 +- tools/perf/util/probe-event.c | 5 +- tools/perf/util/session.c | 3 + tools/perf/util/symbol-elf.c | 16 +- tools/perf/util/symbol.c | 34 +++- 24 files changed, 477 insertions(+), 213 deletions(-) ^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: [GIT PULL 00/19] perf/core improvements and fixes 2015-04-08 14:23 Arnaldo Carvalho de Melo @ 2015-04-08 15:05 ` Ingo Molnar 0 siblings, 0 replies; 53+ messages in thread From: Ingo Molnar @ 2015-04-08 15:05 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: linux-kernel, Adrian Hunter, Alexander Shishkin, Andi Kleen, Andrew Morton, Borislav Petkov, David Ahern, Frederic Weisbecker, He Kuang, H. Peter Anvin, Jiri Olsa, John Stultz, Joonsoo Kim, Kaixu Xia, Kan Liang, Linus Torvalds, linux-mm, Markus T Metzger, Masami Hiramatsu, Mathieu Poirier, Mike Galbraith, Minchan Kim, Namhyung Kim, Paul Mackerras, Peter Zijlstra, pi3orama, Robert Richter, Stephane Eranian, Steven Rostedt, Thomas Gleixner, Wang Nan, William Cohen, Yunlong Song, Zefan Li, Arnaldo Carvalho de Melo * Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > Hi Ingo, > > Please consider pulling, it is the pull req from yesterday, minus a patch > that introduced a problem, plus a fex fixes. > > I am investigating a problem I noticed for another patch that is upstream > and after that will get back to the removed patch from yesterday's batch, > > - Arnaldo > > The following changes since commit 6645f3187f5beb64f7a40515cfa18f3889264ece: > > Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2015-04-03 07:00:02 +0200) > > are available in the git repository at: > > > git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo > > for you to fetch changes up to a1e12da4796a4ddd0e911687a290eb396d1c64bf: > > perf tools: Add 'I' event modifier for exclude_idle bit (2015-04-08 11:00:16 -0300) > > ---------------------------------------------------------------- > perf/core improvements and fixes: > > - Teach about perf_event_attr.clockid to 'perf record' (Peter Zijlstra) > > - perf sched replay improvements for high CPU core count machines (Yunlong Song) > > - Consider PERF_RECORD_ events with cpumode == 0 in 'perf top', removing one > cause of long term memory usage buildup, i.e. not processing PERF_RECORD_EXIT > events (Arnaldo Carvalho de Melo) > > - Add 'I' event modifier for perf_event_attr.exclude_idle bit (Jiri Olsa) > > - Respect -i option 'in perf kmem' (Jiri Olsa) > > Infrastructure: > > - Honor operator priority in libtraceevent (Namhyung Kim) > > - Merge all perf_event_attr print functions (Peter Zijlstra) > > - Check kmaps access to make code more robust (Wang Nan) > > - Fix inverted logic in perf_mmap__empty() (He Kuang) > > - Fix ARM 32 'perf probe' building error (Wang Nan) > > - Fix perf_event_attr tests (Jiri Olsa) > > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> > > ---------------------------------------------------------------- > He Kuang (1): > perf evlist: Fix inverted logic in perf_mmap__empty > > Jiri Olsa (3): > perf kmem: Respect -i option > perf tests: Fix attr tests > perf tools: Add 'I' event modifier for exclude_idle bit > > Namhyung Kim (1): > tools lib traceevent: Honor operator priority > > Peter Zijlstra (2): > perf record: Add clockid parameter > perf tools: Merge all perf_event_attr print functions > > Wang Nan (3): > perf kmaps: Check kmaps to make code more robust > perf probe: Fix ARM 32 building error > perf report: Don't call map__kmap if map is NULL. > > Yunlong Song (9): > perf sched replay: Use struct task_desc instead of struct task_task for correct meaning > perf sched replay: Increase the MAX_PID value to fix assertion failure problem > perf sched replay: Alloc the memory of pid_to_task dynamically to adapt to the unexpected change of pid_max > perf sched replay: Realloc the memory of pid_to_task stepwise to adapt to the different pid_max configurations > perf sched replay: Fix the segmentation fault problem caused by pr_err in threads > perf sched replay: Handle the dead halt of sem_wait when create_tasks() fails for any task > perf sched replay: Fix the EMFILE error caused by the limitation of the maximum open files > perf sched replay: Support using -f to override perf.data file ownership > perf sched replay: Use replay_repeat to calculate the runavg of cpu usage instead of the default value 10 > > tools/lib/traceevent/event-parse.c | 17 +- > tools/perf/Documentation/perf-list.txt | 1 + > tools/perf/Documentation/perf-record.txt | 7 + > tools/perf/builtin-kmem.c | 3 +- > tools/perf/builtin-record.c | 87 +++++++++ > tools/perf/builtin-report.c | 2 +- > tools/perf/builtin-sched.c | 67 +++++-- > tools/perf/perf.h | 2 + > tools/perf/tests/attr/base-record | 2 +- > tools/perf/tests/attr/base-stat | 2 +- > tools/perf/tests/parse-events.c | 40 ++++ > tools/perf/util/evlist.c | 2 +- > tools/perf/util/evsel.c | 325 ++++++++++++++++--------------- > tools/perf/util/evsel.h | 6 + > tools/perf/util/header.c | 28 +-- > tools/perf/util/machine.c | 5 +- > tools/perf/util/map.c | 20 ++ > tools/perf/util/map.h | 6 +- > tools/perf/util/parse-events.c | 8 +- > tools/perf/util/parse-events.l | 2 +- > tools/perf/util/probe-event.c | 5 +- > tools/perf/util/session.c | 3 + > tools/perf/util/symbol-elf.c | 16 +- > tools/perf/util/symbol.c | 34 +++- > 24 files changed, 477 insertions(+), 213 deletions(-) Pulled, thanks a lot Arnaldo! Ingo ^ permalink raw reply [flat|nested] 53+ messages in thread
* [GIT PULL 00/19] perf/core improvements and fixes @ 2015-03-21 18:54 Arnaldo Carvalho de Melo 2015-03-22 9:58 ` Ingo Molnar 0 siblings, 1 reply; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2015-03-21 18:54 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter, Borislav Petkov, Corey Ashford, David Ahern, Don Zickus, Frederic Weisbecker, He Kuang, Jiri Olsa, Masami Hiramatsu, Mike Galbraith, Milos Vyletel, Namhyung Kim, Paul Mackerras, Peter Zijlstra, pi3orama, Stephane Eranian, Steven Rostedt, Wang Nan, Yunlong Song, Zefan Li, Arnaldo Carvalho de Melo Hi Ingo, Please consider pulling, this is on top of my previous pull request, Thanks, - Arnaldo The following changes since commit 0c8c20779c5d56b93b8cb4cd30ba129a927ab437: perf report: Don't allow empty argument for '-t'. (2015-03-19 13:53:28 -0300) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-2 for you to fetch changes up to ca33380adf74afb985bf7aab09ec46707a5d2d57: perf tools: Use kmod_path__parse for machine__new_dso (2015-03-21 14:58:07 -0300) ---------------------------------------------------------------- perf/core improvements and fixes: - Handle legacy syscalls tracepoints (David Ahern, Arnaldo Carvalho de Melo) - Indicate which callchain entries are annotated in the TUI hists browser (report/top) (Arnaldo Carvalho de Melo) - Fix failure to add multiple probes without debuginfo (He Kuang) - Fix 'trace' summary_only option (David Ahern) - Fix race in build_id_cache__add_s() in 'buildid-cache' (Milos Vyletel) - Don't allow empty argument for field-separator, fixing segfault (Wang Nan) Infrastructure: - Add destructor for format_field in libtraceevent (David Ahern) - Prep work for support lzma compressed kernel modules (Jiri Olsa) - Update .gitignore with recently added/renamed feature detection files (Yunlong Song) Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> ---------------------------------------------------------------- Arnaldo Carvalho de Melo (2): perf trace: Handle legacy syscalls tracepoints perf hists browser: Indicate which callchain entries are annotated David Ahern (2): perf trace: Fix summary_only option tools lib traceevent: Add destructor for format_field He Kuang (1): perf probe: Fix failure to add multiple probes without debuginfo Jiri Olsa (10): perf build: Fix feature_check name clash perf build: Separate feature make support into config/Makefile.feature perf build: Make features checks directory configurable perf build: Move feature checks code under tools/build tools build: Add feature check for lzma library perf tools: Add lzma decompression support for kernel module perf tools: Add kmod_path__parse function perf tools: Add dsos__addnew function perf tools: Add machine__module_dso function perf tools: Use kmod_path__parse for machine__new_dso Milos Vyletel (1): perf tools: Fix race in build_id_cache__add_s() Wang Nan (1): perf tools: Don't allow empty argument for field-separator Yunlong Song (2): perf build: Use FEATURE-DUMP instead of PERF-FEATURES in the .gitignore file perf build: Add config/feature-checks/*.output to the .gitignore file tools/build/Makefile.feature | 171 ++++++++++++++++++++ .../feature-checks => build/feature}/.gitignore | 1 + .../feature-checks => build/feature}/Makefile | 8 +- .../feature-checks => build/feature}/test-all.c | 5 + .../feature}/test-backtrace.c | 0 .../feature-checks => build/feature}/test-bionic.c | 0 .../feature}/test-compile.c | 0 .../feature}/test-cplus-demangle.c | 0 .../feature-checks => build/feature}/test-dwarf.c | 0 .../feature}/test-fortify-source.c | 0 .../feature-checks => build/feature}/test-glibc.c | 0 .../feature}/test-gtk2-infobar.c | 0 .../feature-checks => build/feature}/test-gtk2.c | 0 .../feature-checks => build/feature}/test-hello.c | 0 .../feature}/test-libaudit.c | 0 .../feature}/test-libbabeltrace.c | 0 .../feature-checks => build/feature}/test-libbfd.c | 0 .../feature}/test-libdw-dwarf-unwind.c | 0 .../feature}/test-libelf-getphdrnum.c | 0 .../feature}/test-libelf-mmap.c | 0 .../feature-checks => build/feature}/test-libelf.c | 0 .../feature}/test-libnuma.c | 0 .../feature}/test-libperl.c | 0 .../feature}/test-libpython-version.c | 0 .../feature}/test-libpython.c | 0 .../feature}/test-libslang.c | 0 .../feature}/test-libunwind-debug-frame.c | 0 .../feature}/test-libunwind.c | 0 tools/build/feature/test-lzma.c | 10 ++ .../feature}/test-pthread-attr-setaffinity-np.c | 0 .../feature}/test-stackprotector-all.c | 0 .../feature}/test-sync-compare-and-swap.c | 0 .../feature}/test-timerfd.c | 0 .../feature-checks => build/feature}/test-zlib.c | 0 tools/lib/traceevent/event-parse.c | 11 +- tools/lib/traceevent/event-parse.h | 1 + tools/perf/.gitignore | 2 +- tools/perf/Makefile.perf | 4 +- tools/perf/builtin-diff.c | 2 +- tools/perf/builtin-mem.c | 2 +- tools/perf/builtin-trace.c | 21 ++- tools/perf/config/Makefile | 176 ++------------------- tools/perf/tests/Build | 1 + tools/perf/tests/builtin-test.c | 4 + tools/perf/tests/kmod-path.c | 73 +++++++++ tools/perf/tests/tests.h | 1 + tools/perf/ui/browsers/hists.c | 4 +- tools/perf/util/Build | 1 + tools/perf/util/build-id.c | 3 +- tools/perf/util/dso.c | 90 +++++++++-- tools/perf/util/dso.h | 15 ++ tools/perf/util/lzma.c | 95 +++++++++++ tools/perf/util/machine.c | 83 +++++----- tools/perf/util/probe-event.c | 4 +- tools/perf/util/util.h | 4 + 55 files changed, 557 insertions(+), 235 deletions(-) create mode 100644 tools/build/Makefile.feature rename tools/{perf/config/feature-checks => build/feature}/.gitignore (52%) rename tools/{perf/config/feature-checks => build/feature}/Makefile (96%) rename tools/{perf/config/feature-checks => build/feature}/test-all.c (97%) rename tools/{perf/config/feature-checks => build/feature}/test-backtrace.c (100%) rename tools/{perf/config/feature-checks => build/feature}/test-bionic.c (100%) rename tools/{perf/config/feature-checks => build/feature}/test-compile.c (100%) rename tools/{perf/config/feature-checks => build/feature}/test-cplus-demangle.c (100%) rename tools/{perf/config/feature-checks => build/feature}/test-dwarf.c (100%) rename tools/{perf/config/feature-checks => build/feature}/test-fortify-source.c (100%) rename tools/{perf/config/feature-checks => build/feature}/test-glibc.c (100%) rename tools/{perf/config/feature-checks => build/feature}/test-gtk2-infobar.c (100%) rename tools/{perf/config/feature-checks => build/feature}/test-gtk2.c (100%) rename tools/{perf/config/feature-checks => build/feature}/test-hello.c (100%) rename tools/{perf/config/feature-checks => build/feature}/test-libaudit.c (100%) rename tools/{perf/config/feature-checks => build/feature}/test-libbabeltrace.c (100%) rename tools/{perf/config/feature-checks => build/feature}/test-libbfd.c (100%) rename tools/{perf/config/feature-checks => build/feature}/test-libdw-dwarf-unwind.c (100%) rename tools/{perf/config/feature-checks => build/feature}/test-libelf-getphdrnum.c (100%) rename tools/{perf/config/feature-checks => build/feature}/test-libelf-mmap.c (100%) rename tools/{perf/config/feature-checks => build/feature}/test-libelf.c (100%) rename tools/{perf/config/feature-checks => build/feature}/test-libnuma.c (100%) rename tools/{perf/config/feature-checks => build/feature}/test-libperl.c (100%) rename tools/{perf/config/feature-checks => build/feature}/test-libpython-version.c (100%) rename tools/{perf/config/feature-checks => build/feature}/test-libpython.c (100%) rename tools/{perf/config/feature-checks => build/feature}/test-libslang.c (100%) rename tools/{perf/config/feature-checks => build/feature}/test-libunwind-debug-frame.c (100%) rename tools/{perf/config/feature-checks => build/feature}/test-libunwind.c (100%) create mode 100644 tools/build/feature/test-lzma.c rename tools/{perf/config/feature-checks => build/feature}/test-pthread-attr-setaffinity-np.c (100%) rename tools/{perf/config/feature-checks => build/feature}/test-stackprotector-all.c (100%) rename tools/{perf/config/feature-checks => build/feature}/test-sync-compare-and-swap.c (100%) rename tools/{perf/config/feature-checks => build/feature}/test-timerfd.c (100%) rename tools/{perf/config/feature-checks => build/feature}/test-zlib.c (100%) create mode 100644 tools/perf/tests/kmod-path.c create mode 100644 tools/perf/util/lzma.c ^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: [GIT PULL 00/19] perf/core improvements and fixes 2015-03-21 18:54 Arnaldo Carvalho de Melo @ 2015-03-22 9:58 ` Ingo Molnar 0 siblings, 0 replies; 53+ messages in thread From: Ingo Molnar @ 2015-03-22 9:58 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: linux-kernel, Adrian Hunter, Borislav Petkov, Corey Ashford, David Ahern, Don Zickus, Frederic Weisbecker, He Kuang, Jiri Olsa, Masami Hiramatsu, Mike Galbraith, Milos Vyletel, Namhyung Kim, Paul Mackerras, Peter Zijlstra, pi3orama, Stephane Eranian, Steven Rostedt, Wang Nan, Yunlong Song, Zefan Li, Arnaldo Carvalho de Melo * Arnaldo Carvalho de Melo <acme@kernel.org> wrote: > Hi Ingo, > > Please consider pulling, this is on top of my previous pull request, > > Thanks, > > - Arnaldo > > The following changes since commit 0c8c20779c5d56b93b8cb4cd30ba129a927ab437: > > perf report: Don't allow empty argument for '-t'. (2015-03-19 13:53:28 -0300) > > are available in the git repository at: > > git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-2 > > for you to fetch changes up to ca33380adf74afb985bf7aab09ec46707a5d2d57: > > perf tools: Use kmod_path__parse for machine__new_dso (2015-03-21 14:58:07 -0300) > > ---------------------------------------------------------------- > perf/core improvements and fixes: > > - Handle legacy syscalls tracepoints (David Ahern, Arnaldo Carvalho de Melo) > > - Indicate which callchain entries are annotated in the > TUI hists browser (report/top) (Arnaldo Carvalho de Melo) > > - Fix failure to add multiple probes without debuginfo (He Kuang) > > - Fix 'trace' summary_only option (David Ahern) > > - Fix race in build_id_cache__add_s() in 'buildid-cache' (Milos Vyletel) > > - Don't allow empty argument for field-separator, fixing segfault (Wang Nan) > > Infrastructure: > > - Add destructor for format_field in libtraceevent (David Ahern) > > - Prep work for support lzma compressed kernel modules (Jiri Olsa) > > - Update .gitignore with recently added/renamed feature detection files (Yunlong Song) > > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> > > ---------------------------------------------------------------- > Arnaldo Carvalho de Melo (2): > perf trace: Handle legacy syscalls tracepoints > perf hists browser: Indicate which callchain entries are annotated > > David Ahern (2): > perf trace: Fix summary_only option > tools lib traceevent: Add destructor for format_field > > He Kuang (1): > perf probe: Fix failure to add multiple probes without debuginfo > > Jiri Olsa (10): > perf build: Fix feature_check name clash > perf build: Separate feature make support into config/Makefile.feature > perf build: Make features checks directory configurable > perf build: Move feature checks code under tools/build > tools build: Add feature check for lzma library > perf tools: Add lzma decompression support for kernel module > perf tools: Add kmod_path__parse function > perf tools: Add dsos__addnew function > perf tools: Add machine__module_dso function > perf tools: Use kmod_path__parse for machine__new_dso > > Milos Vyletel (1): > perf tools: Fix race in build_id_cache__add_s() > > Wang Nan (1): > perf tools: Don't allow empty argument for field-separator > > Yunlong Song (2): > perf build: Use FEATURE-DUMP instead of PERF-FEATURES in the .gitignore file > perf build: Add config/feature-checks/*.output to the .gitignore file > > tools/build/Makefile.feature | 171 ++++++++++++++++++++ > .../feature-checks => build/feature}/.gitignore | 1 + > .../feature-checks => build/feature}/Makefile | 8 +- > .../feature-checks => build/feature}/test-all.c | 5 + > .../feature}/test-backtrace.c | 0 > .../feature-checks => build/feature}/test-bionic.c | 0 > .../feature}/test-compile.c | 0 > .../feature}/test-cplus-demangle.c | 0 > .../feature-checks => build/feature}/test-dwarf.c | 0 > .../feature}/test-fortify-source.c | 0 > .../feature-checks => build/feature}/test-glibc.c | 0 > .../feature}/test-gtk2-infobar.c | 0 > .../feature-checks => build/feature}/test-gtk2.c | 0 > .../feature-checks => build/feature}/test-hello.c | 0 > .../feature}/test-libaudit.c | 0 > .../feature}/test-libbabeltrace.c | 0 > .../feature-checks => build/feature}/test-libbfd.c | 0 > .../feature}/test-libdw-dwarf-unwind.c | 0 > .../feature}/test-libelf-getphdrnum.c | 0 > .../feature}/test-libelf-mmap.c | 0 > .../feature-checks => build/feature}/test-libelf.c | 0 > .../feature}/test-libnuma.c | 0 > .../feature}/test-libperl.c | 0 > .../feature}/test-libpython-version.c | 0 > .../feature}/test-libpython.c | 0 > .../feature}/test-libslang.c | 0 > .../feature}/test-libunwind-debug-frame.c | 0 > .../feature}/test-libunwind.c | 0 > tools/build/feature/test-lzma.c | 10 ++ > .../feature}/test-pthread-attr-setaffinity-np.c | 0 > .../feature}/test-stackprotector-all.c | 0 > .../feature}/test-sync-compare-and-swap.c | 0 > .../feature}/test-timerfd.c | 0 > .../feature-checks => build/feature}/test-zlib.c | 0 > tools/lib/traceevent/event-parse.c | 11 +- > tools/lib/traceevent/event-parse.h | 1 + > tools/perf/.gitignore | 2 +- > tools/perf/Makefile.perf | 4 +- > tools/perf/builtin-diff.c | 2 +- > tools/perf/builtin-mem.c | 2 +- > tools/perf/builtin-trace.c | 21 ++- > tools/perf/config/Makefile | 176 ++------------------- > tools/perf/tests/Build | 1 + > tools/perf/tests/builtin-test.c | 4 + > tools/perf/tests/kmod-path.c | 73 +++++++++ > tools/perf/tests/tests.h | 1 + > tools/perf/ui/browsers/hists.c | 4 +- > tools/perf/util/Build | 1 + > tools/perf/util/build-id.c | 3 +- > tools/perf/util/dso.c | 90 +++++++++-- > tools/perf/util/dso.h | 15 ++ > tools/perf/util/lzma.c | 95 +++++++++++ > tools/perf/util/machine.c | 83 +++++----- > tools/perf/util/probe-event.c | 4 +- > tools/perf/util/util.h | 4 + > 55 files changed, 557 insertions(+), 235 deletions(-) > create mode 100644 tools/build/Makefile.feature > rename tools/{perf/config/feature-checks => build/feature}/.gitignore (52%) > rename tools/{perf/config/feature-checks => build/feature}/Makefile (96%) > rename tools/{perf/config/feature-checks => build/feature}/test-all.c (97%) > rename tools/{perf/config/feature-checks => build/feature}/test-backtrace.c (100%) > rename tools/{perf/config/feature-checks => build/feature}/test-bionic.c (100%) > rename tools/{perf/config/feature-checks => build/feature}/test-compile.c (100%) > rename tools/{perf/config/feature-checks => build/feature}/test-cplus-demangle.c (100%) > rename tools/{perf/config/feature-checks => build/feature}/test-dwarf.c (100%) > rename tools/{perf/config/feature-checks => build/feature}/test-fortify-source.c (100%) > rename tools/{perf/config/feature-checks => build/feature}/test-glibc.c (100%) > rename tools/{perf/config/feature-checks => build/feature}/test-gtk2-infobar.c (100%) > rename tools/{perf/config/feature-checks => build/feature}/test-gtk2.c (100%) > rename tools/{perf/config/feature-checks => build/feature}/test-hello.c (100%) > rename tools/{perf/config/feature-checks => build/feature}/test-libaudit.c (100%) > rename tools/{perf/config/feature-checks => build/feature}/test-libbabeltrace.c (100%) > rename tools/{perf/config/feature-checks => build/feature}/test-libbfd.c (100%) > rename tools/{perf/config/feature-checks => build/feature}/test-libdw-dwarf-unwind.c (100%) > rename tools/{perf/config/feature-checks => build/feature}/test-libelf-getphdrnum.c (100%) > rename tools/{perf/config/feature-checks => build/feature}/test-libelf-mmap.c (100%) > rename tools/{perf/config/feature-checks => build/feature}/test-libelf.c (100%) > rename tools/{perf/config/feature-checks => build/feature}/test-libnuma.c (100%) > rename tools/{perf/config/feature-checks => build/feature}/test-libperl.c (100%) > rename tools/{perf/config/feature-checks => build/feature}/test-libpython-version.c (100%) > rename tools/{perf/config/feature-checks => build/feature}/test-libpython.c (100%) > rename tools/{perf/config/feature-checks => build/feature}/test-libslang.c (100%) > rename tools/{perf/config/feature-checks => build/feature}/test-libunwind-debug-frame.c (100%) > rename tools/{perf/config/feature-checks => build/feature}/test-libunwind.c (100%) > create mode 100644 tools/build/feature/test-lzma.c > rename tools/{perf/config/feature-checks => build/feature}/test-pthread-attr-setaffinity-np.c (100%) > rename tools/{perf/config/feature-checks => build/feature}/test-stackprotector-all.c (100%) > rename tools/{perf/config/feature-checks => build/feature}/test-sync-compare-and-swap.c (100%) > rename tools/{perf/config/feature-checks => build/feature}/test-timerfd.c (100%) > rename tools/{perf/config/feature-checks => build/feature}/test-zlib.c (100%) > create mode 100644 tools/perf/tests/kmod-path.c > create mode 100644 tools/perf/util/lzma.c Pulled, thanks a lot Arnaldo! Ingo ^ permalink raw reply [flat|nested] 53+ messages in thread
* [GIT PULL 00/19] perf/core improvements and fixes @ 2015-02-27 19:22 Arnaldo Carvalho de Melo 0 siblings, 0 replies; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2015-02-27 19:22 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter, Andi Kleen, Borislav Petkov, David Ahern, He Kuang, Hemant Kumar, Jiri Olsa, Kan Liang, Masami Hiramatsu, Namhyung Kim, Naohiro Aota, Paul Mackerras, Peter Zijlstra, Wang Nan, Yunlong Song, Arnaldo Carvalho de Melo Hi Ingo, Please consider pulling, - Arnaldo The following changes since commit 0afb1704010f60e7ae85aef0f93fc10f2d99761e: Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2015-02-26 12:25:20 +0100) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo for you to fetch changes up to fefd2d9619de3bf0bf02a8622e9f445c3d19cc3f: perf report: Fix branch stack mode cannot be set (2015-02-27 15:52:42 -0300) ---------------------------------------------------------------- perf/core improvements and fixes: User visible: - Fix SIGBUS failures due to misaligned accesses in Sparc64 (David Ahern) - Fix branch stack mode in 'perf report' (He Kuang) - Fix a 'perf probe' operator precedence bug (He Kuang) - Fix Support for different binaries with same name in 'perf diff' (Kan Liang) - Check kprobes blacklist when adding new events via 'perf probe' (Masami Hiramatsu) - Add --purge FILE to remove all caches of FILE in 'perf buildid-cache' (Masami Hiramatsu) - Show usage with some incorrect params (Masami Hiramatsu) - Add new buildid cache if update target is not cached in 'buildid-cache' (Masami Hiramatsu) - Allow listing events with 'tracepoint' prefix in 'perf list' (Yunlong Song) - Sort the output of 'perf list' (Yunlong Song) - Fix bash completion of 'perf --' (Yunlong Song) Developer Zone: - Handle strdup() failure path in 'perf probe' (Arnaldo Carvalho de Melo) - Fix get_real_path to free allocated memory in error path in 'perf probe' (Masami Hiramatsu) - Use pr_debug instead of verbose && pr_info perf buildid-cache (Masami Hiramatsu) - Fix building of 'perf data' with some gcc versions due to incorrect array struct entry (Yunlong Song) Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> ---------------------------------------------------------------- Arnaldo Carvalho de Melo (1): perf probe: Handle strdup() failure David Ahern (1): perf trace: Fix SIGBUS failures due to misaligned accesses He Kuang (2): perf probe: Fix a precedence bug perf report: Fix branch stack mode cannot be set Kan Liang (1): perf diff: Support for different binaries Masami Hiramatsu (6): perf probe: Check kprobes blacklist when adding new events perf probe: Fix get_real_path to free allocated memory in error path perf buildid-cache: Add new buildid cache if update target is not cached perf buildid-cache: Add --purge FILE to remove all caches of FILE perf buildid-cache: Use pr_debug instead of verbose && pr_info perf buildid-cache: Show usage with incorrect params Yunlong Song (8): perf data: Fix sentinel setting for data_cmds array perf list: Sort the output of 'perf list' to view more clearly perf list: Allow listing events with 'tracepoint' prefix perf list: Avoid confusion of perf output and the next command prompt perf tools: Remove the '--(null)' long_name for --list-opts perf list: Clean up the printing functions of hardware/software events perf list: Extend raw-dump to certain kind of events perf tools: Fix the bash completion problem of 'perf --*' tools/perf/Documentation/perf-buildid-cache.txt | 24 ++- tools/perf/Documentation/perf-diff.txt | 5 + tools/perf/Documentation/perf-list.txt | 6 + tools/perf/builtin-buildid-cache.c | 72 ++++++-- tools/perf/builtin-data.c | 2 +- tools/perf/builtin-list.c | 27 ++- tools/perf/builtin-report.c | 2 +- tools/perf/builtin-trace.c | 36 +++- tools/perf/perf-completion.sh | 6 +- tools/perf/perf.c | 28 ++++ tools/perf/util/build-id.c | 105 ++++++++++-- tools/perf/util/build-id.h | 4 + tools/perf/util/parse-events.c | 210 +++++++++++++++++------- tools/perf/util/parse-events.h | 11 +- tools/perf/util/parse-options.c | 5 +- tools/perf/util/probe-event.c | 117 ++++++++++++- tools/perf/util/sort.c | 9 + 17 files changed, 542 insertions(+), 127 deletions(-) ^ permalink raw reply [flat|nested] 53+ messages in thread
* [GIT PULL 00/19] perf/core improvements and fixes @ 2014-01-17 14:57 Arnaldo Carvalho de Melo 2014-01-19 12:11 ` Ingo Molnar 0 siblings, 1 reply; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2014-01-17 14:57 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter, David Ahern, David A. Long, Frederic Weisbecker, Jiri Olsa, Masami Hiramatsu, Namhyung Kim, Oleg Nesterov, Paul Mackerras, Peter Zijlstra, Srikar Dronamraju, Stephane Eranian, Steven Rostedt, yrl.pp-manager.tt, Arnaldo Carvalho de Melo From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net> Hi Ingo, Please consider pulling, - Arnaldo The following changes since commit 3e7e09dbd1080de5dcf10092830e39bc2e2932ec: Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2014-01-16 09:34:01 +0100) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo for you to fetch changes up to 2a29190c040c0b11e39197c67abf6f87e0a61f9a: perf tools: Remove unnecessary callchain cursor state restore on unmatch (2014-01-17 11:25:24 -0300) ---------------------------------------------------------------- Developer stuff: . Improve callchain processing by removing unnecessary work. (Frederic Weisbecker) . Fix comm override error handling (Frederic Weisbecker) . Improve 'perf probe' exit path, release resources (Masami Hiramatsu) . Improve libtraceevent plugins exit path, allowing the registering of an unregister handler to be called at exit time (Namhyung Kim) . Add an alias to the build test makefile (make -C tools/perf build-test) (Namhyung Kim) Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> ---------------------------------------------------------------- Frederic Weisbecker (3): perf tools: Do proper comm override error handling perf callchain: Spare double comparison of callchain first entry perf tools: Remove unnecessary callchain cursor state restore on unmatch Masami Hiramatsu (3): perf probe: Release allocated probe_trace_event if failed perf probe: Release all dynamically allocated parameters perf symbols: Export elf_section_by_name and reuse Namhyung Kim (13): tools lib traceevent: Add pevent_unregister_event_handler() tools lib traceevent: Add pevent_unregister_print_function() tools lib traceevent: Unregister handler when function plugin is unloaded tools lib traceevent: Unregister handler when hrtimer plugin is unloaded tools lib traceevent: Unregister handler when kmem plugin is unloaded tools lib traceevent: Unregister handler when kvm plugin is unloaded tools lib traceevent: Unregister handler when sched_switch plugin is unloaded tools lib traceevent: Unregister handler when mac80211 plugin is unloaded tools lib traceevent: Unregister handler when cfg80211 plugin is unloaded tools lib traceevent: Unregister handler when jbd2 plugin is is unloaded tools lib traceevent: Unregister handler when scsi plugin is unloaded tools lib traceevent: Unregister handler when xen plugin is unloaded perf tools: Add 'build-test' make target tools/lib/traceevent/event-parse.c | 136 ++++++++++++++++++++++++++--- tools/lib/traceevent/event-parse.h | 5 ++ tools/lib/traceevent/plugin_cfg80211.c | 6 ++ tools/lib/traceevent/plugin_function.c | 3 + tools/lib/traceevent/plugin_hrtimer.c | 10 +++ tools/lib/traceevent/plugin_jbd2.c | 9 ++ tools/lib/traceevent/plugin_kmem.c | 22 +++++ tools/lib/traceevent/plugin_kvm.c | 29 ++++++ tools/lib/traceevent/plugin_mac80211.c | 7 ++ tools/lib/traceevent/plugin_sched_switch.c | 12 +++ tools/lib/traceevent/plugin_scsi.c | 6 ++ tools/lib/traceevent/plugin_xen.c | 6 ++ tools/perf/Makefile | 6 ++ tools/perf/builtin-probe.c | 48 ++++++++-- tools/perf/util/callchain.c | 23 +++-- tools/perf/util/comm.c | 19 ++-- tools/perf/util/comm.h | 2 +- tools/perf/util/probe-event.c | 111 +++++++++++++---------- tools/perf/util/probe-event.h | 6 ++ tools/perf/util/symbol-elf.c | 5 +- tools/perf/util/symbol.h | 5 ++ tools/perf/util/thread.c | 5 +- tools/perf/util/unwind.c | 20 +---- 23 files changed, 389 insertions(+), 112 deletions(-) ^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: [GIT PULL 00/19] perf/core improvements and fixes 2014-01-17 14:57 Arnaldo Carvalho de Melo @ 2014-01-19 12:11 ` Ingo Molnar 0 siblings, 0 replies; 53+ messages in thread From: Ingo Molnar @ 2014-01-19 12:11 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter, David Ahern, David A. Long, Frederic Weisbecker, Jiri Olsa, Masami Hiramatsu, Namhyung Kim, Oleg Nesterov, Paul Mackerras, Peter Zijlstra, Srikar Dronamraju, Stephane Eranian, Steven Rostedt, yrl.pp-manager.tt, Arnaldo Carvalho de Melo * Arnaldo Carvalho de Melo <acme@infradead.org> wrote: > From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net> > > Hi Ingo, > > Please consider pulling, > > - Arnaldo > > The following changes since commit 3e7e09dbd1080de5dcf10092830e39bc2e2932ec: > > Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2014-01-16 09:34:01 +0100) > > are available in the git repository at: > > > git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-core-for-mingo > > for you to fetch changes up to 2a29190c040c0b11e39197c67abf6f87e0a61f9a: > > perf tools: Remove unnecessary callchain cursor state restore on unmatch (2014-01-17 11:25:24 -0300) > > ---------------------------------------------------------------- > Developer stuff: > > . Improve callchain processing by removing unnecessary work. (Frederic Weisbecker) > > . Fix comm override error handling (Frederic Weisbecker) > > . Improve 'perf probe' exit path, release resources (Masami Hiramatsu) > > . Improve libtraceevent plugins exit path, allowing the registering of > an unregister handler to be called at exit time (Namhyung Kim) > > . Add an alias to the build test makefile (make -C tools/perf build-test) > (Namhyung Kim) > > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> > > ---------------------------------------------------------------- > Frederic Weisbecker (3): > perf tools: Do proper comm override error handling > perf callchain: Spare double comparison of callchain first entry > perf tools: Remove unnecessary callchain cursor state restore on unmatch > > Masami Hiramatsu (3): > perf probe: Release allocated probe_trace_event if failed > perf probe: Release all dynamically allocated parameters > perf symbols: Export elf_section_by_name and reuse > > Namhyung Kim (13): > tools lib traceevent: Add pevent_unregister_event_handler() > tools lib traceevent: Add pevent_unregister_print_function() > tools lib traceevent: Unregister handler when function plugin is unloaded > tools lib traceevent: Unregister handler when hrtimer plugin is unloaded > tools lib traceevent: Unregister handler when kmem plugin is unloaded > tools lib traceevent: Unregister handler when kvm plugin is unloaded > tools lib traceevent: Unregister handler when sched_switch plugin is unloaded > tools lib traceevent: Unregister handler when mac80211 plugin is unloaded > tools lib traceevent: Unregister handler when cfg80211 plugin is unloaded > tools lib traceevent: Unregister handler when jbd2 plugin is is unloaded > tools lib traceevent: Unregister handler when scsi plugin is unloaded > tools lib traceevent: Unregister handler when xen plugin is unloaded > perf tools: Add 'build-test' make target > > tools/lib/traceevent/event-parse.c | 136 ++++++++++++++++++++++++++--- > tools/lib/traceevent/event-parse.h | 5 ++ > tools/lib/traceevent/plugin_cfg80211.c | 6 ++ > tools/lib/traceevent/plugin_function.c | 3 + > tools/lib/traceevent/plugin_hrtimer.c | 10 +++ > tools/lib/traceevent/plugin_jbd2.c | 9 ++ > tools/lib/traceevent/plugin_kmem.c | 22 +++++ > tools/lib/traceevent/plugin_kvm.c | 29 ++++++ > tools/lib/traceevent/plugin_mac80211.c | 7 ++ > tools/lib/traceevent/plugin_sched_switch.c | 12 +++ > tools/lib/traceevent/plugin_scsi.c | 6 ++ > tools/lib/traceevent/plugin_xen.c | 6 ++ > tools/perf/Makefile | 6 ++ > tools/perf/builtin-probe.c | 48 ++++++++-- > tools/perf/util/callchain.c | 23 +++-- > tools/perf/util/comm.c | 19 ++-- > tools/perf/util/comm.h | 2 +- > tools/perf/util/probe-event.c | 111 +++++++++++++---------- > tools/perf/util/probe-event.h | 6 ++ > tools/perf/util/symbol-elf.c | 5 +- > tools/perf/util/symbol.h | 5 ++ > tools/perf/util/thread.c | 5 +- > tools/perf/util/unwind.c | 20 +---- > 23 files changed, 389 insertions(+), 112 deletions(-) Pulled, thanks a lot Arnaldo! Ingo ^ permalink raw reply [flat|nested] 53+ messages in thread
* [GIT PULL 00/19] perf/core improvements and fixes @ 2012-05-22 17:39 Arnaldo Carvalho de Melo 2012-05-23 15:06 ` Ingo Molnar 0 siblings, 1 reply; 53+ messages in thread From: Arnaldo Carvalho de Melo @ 2012-05-22 17:39 UTC (permalink / raw) To: Ingo Molnar Cc: linux-kernel, Arnaldo Carvalho de Melo, Anshuman Khandual, Corey Ashford, David Ahern, Frederic Weisbecker, Frederic Weisbecker, Jiri Olsa, Mike Galbraith, Namhyung Kim, Namhyung Kim, Paul Mackerras, Peter Zijlstra, Stephane Eranian, Steven Rostedt, Tom Zanussi, arnaldo.melo, Arnaldo Carvalho de Melo Hi Ingo, Please consider pulling, - Arnaldo The following changes since commit 73787190d04a34e6da745da893b3ae8bedde418f: Merge branch 'perf/parse-events-4' of git://github.com/fweisbec/tracing into perf/core (2012-05-21 10:42:09 +0200) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux perf/core for you to fetch changes up to 26252ea675663d1bc6747125fcaa2b7cc4ed8a03: perf evlist: Show event attribute details (2012-05-22 14:30:11 -0300) ---------------------------------------------------------------- Fixes and improvements for perf/core: . Fix perf perl script build fallout from libtraceevent conversion, from Frederic Weisbecker. . Libtraceevent Makefile fixes, from Namhyung Kim . Pipe mode fixes, from Stephane Eranian . Event parsing improvements, from Jiri Olsa. . Endianness fixes, from Jiri Olsa . Bump the default sampling freq to 4 kHz, requested by Ingo Molnar. . Show event attribute details, such as the sampling freq, in the 'perf evlist' command. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> ---------------------------------------------------------------- Anshuman Khandual (1): perf record: Fix documentation for branch stack sampling Arnaldo Carvalho de Melo (2): perf tools: Bump default sample freq to 4 kHz perf evlist: Show event attribute details Frederic Weisbecker (2): perf script: Explicitly handle known default print arg type perf script: Rename struct event to struct event_format in perl engine Jiri Olsa (7): perf test: Move parse event automated tests to separated object perf tools: Add support for displaying event parser debug info perf tools: Use allocated list for each parsed event perf tools: Separate 'mem:' event scanner bits perf tools: Add hardcoded name term for pmu events perf tools: Carry perf_event_attr bitfield throught different endians perf tools: Add union u64_swap type for swapping u64 data Namhyung Kim (3): perf tools: Rename libparsevent to libtraceevent in Makefile perf tools: Always try to build libtraceevent perf target: Add cpu flag to sample_type if target has cpu Stephane Eranian (4): perf tools: rename HEADER_TRACE_INFO to HEADER_TRACING_DATA perf inject: Fix broken perf inject -b perf tools: Fix piped mode read code perf buildid-list: Work better with pipe mode tools/perf/Documentation/perf-evlist.txt | 8 + tools/perf/Documentation/perf-record.txt | 2 +- tools/perf/Makefile | 37 +- tools/perf/builtin-buildid-list.c | 6 +- tools/perf/builtin-evlist.c | 103 +++- tools/perf/builtin-inject.c | 5 + tools/perf/builtin-record.c | 6 +- tools/perf/builtin-test.c | 552 +---------------- tools/perf/builtin-top.c | 5 +- tools/perf/util/build-id.c | 2 + tools/perf/util/evsel.c | 12 +- tools/perf/util/header.c | 10 +- tools/perf/util/header.h | 2 +- tools/perf/util/parse-events-test.c | 625 ++++++++++++++++++++ tools/perf/util/parse-events.c | 69 ++- tools/perf/util/parse-events.h | 20 +- tools/perf/util/parse-events.l | 26 +- tools/perf/util/parse-events.y | 77 ++- tools/perf/util/pmu.c | 4 +- .../perf/util/scripting-engines/trace-event-perl.c | 16 +- tools/perf/util/session.c | 68 ++- tools/perf/util/types.h | 5 + 22 files changed, 1002 insertions(+), 658 deletions(-) create mode 100644 tools/perf/util/parse-events-test.c ^ permalink raw reply [flat|nested] 53+ messages in thread
* Re: [GIT PULL 00/19] perf/core improvements and fixes 2012-05-22 17:39 Arnaldo Carvalho de Melo @ 2012-05-23 15:06 ` Ingo Molnar 0 siblings, 0 replies; 53+ messages in thread From: Ingo Molnar @ 2012-05-23 15:06 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: linux-kernel, Anshuman Khandual, Corey Ashford, David Ahern, Frederic Weisbecker, Frederic Weisbecker, Jiri Olsa, Mike Galbraith, Namhyung Kim, Namhyung Kim, Paul Mackerras, Peter Zijlstra, Stephane Eranian, Steven Rostedt, Tom Zanussi, arnaldo.melo, Arnaldo Carvalho de Melo * Arnaldo Carvalho de Melo <acme@infradead.org> wrote: > Hi Ingo, > > Please consider pulling, > > - Arnaldo > > The following changes since commit 73787190d04a34e6da745da893b3ae8bedde418f: > > Merge branch 'perf/parse-events-4' of git://github.com/fweisbec/tracing into perf/core (2012-05-21 10:42:09 +0200) > > are available in the git repository at: > > > git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux perf/core > > for you to fetch changes up to 26252ea675663d1bc6747125fcaa2b7cc4ed8a03: > > perf evlist: Show event attribute details (2012-05-22 14:30:11 -0300) > > ---------------------------------------------------------------- > Fixes and improvements for perf/core: > > . Fix perf perl script build fallout from libtraceevent conversion, > from Frederic Weisbecker. > > . Libtraceevent Makefile fixes, from Namhyung Kim > > . Pipe mode fixes, from Stephane Eranian > > . Event parsing improvements, from Jiri Olsa. > > . Endianness fixes, from Jiri Olsa > > . Bump the default sampling freq to 4 kHz, requested by Ingo Molnar. > > . Show event attribute details, such as the sampling freq, in the > 'perf evlist' command. > > Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> > > ---------------------------------------------------------------- > Anshuman Khandual (1): > perf record: Fix documentation for branch stack sampling > > Arnaldo Carvalho de Melo (2): > perf tools: Bump default sample freq to 4 kHz > perf evlist: Show event attribute details > > Frederic Weisbecker (2): > perf script: Explicitly handle known default print arg type > perf script: Rename struct event to struct event_format in perl engine > > Jiri Olsa (7): > perf test: Move parse event automated tests to separated object > perf tools: Add support for displaying event parser debug info > perf tools: Use allocated list for each parsed event > perf tools: Separate 'mem:' event scanner bits > perf tools: Add hardcoded name term for pmu events > perf tools: Carry perf_event_attr bitfield throught different endians > perf tools: Add union u64_swap type for swapping u64 data > > Namhyung Kim (3): > perf tools: Rename libparsevent to libtraceevent in Makefile > perf tools: Always try to build libtraceevent > perf target: Add cpu flag to sample_type if target has cpu > > Stephane Eranian (4): > perf tools: rename HEADER_TRACE_INFO to HEADER_TRACING_DATA > perf inject: Fix broken perf inject -b > perf tools: Fix piped mode read code > perf buildid-list: Work better with pipe mode > > tools/perf/Documentation/perf-evlist.txt | 8 + > tools/perf/Documentation/perf-record.txt | 2 +- > tools/perf/Makefile | 37 +- > tools/perf/builtin-buildid-list.c | 6 +- > tools/perf/builtin-evlist.c | 103 +++- > tools/perf/builtin-inject.c | 5 + > tools/perf/builtin-record.c | 6 +- > tools/perf/builtin-test.c | 552 +---------------- > tools/perf/builtin-top.c | 5 +- > tools/perf/util/build-id.c | 2 + > tools/perf/util/evsel.c | 12 +- > tools/perf/util/header.c | 10 +- > tools/perf/util/header.h | 2 +- > tools/perf/util/parse-events-test.c | 625 ++++++++++++++++++++ > tools/perf/util/parse-events.c | 69 ++- > tools/perf/util/parse-events.h | 20 +- > tools/perf/util/parse-events.l | 26 +- > tools/perf/util/parse-events.y | 77 ++- > tools/perf/util/pmu.c | 4 +- > .../perf/util/scripting-engines/trace-event-perl.c | 16 +- > tools/perf/util/session.c | 68 ++- > tools/perf/util/types.h | 5 + > 22 files changed, 1002 insertions(+), 658 deletions(-) > create mode 100644 tools/perf/util/parse-events-test.c Pulled, thanks a lot Arnaldo! Ingo ^ permalink raw reply [flat|nested] 53+ messages in thread
end of thread, other threads:[~2017-11-03 13:55 UTC | newest] Thread overview: 53+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2016-12-01 18:02 [GIT PULL 00/19] perf/core improvements and fixes Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 01/19] perf ui helpline: Provide a printf variant Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 02/19] perf annotate: Show invalid jump offset in error message Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 03/19] perf sched timehist: Handle cpu migration events Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 04/19] perf trace: Update tid/pid filtering option to leverage symbol_conf Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 05/19] tools lib bpf: Add missing BPF functions Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 06/19] tools lib bpf: Add private field for bpf_object Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 07/19] tools lib bpf: Retrive bpf_map through offset of bpf_map_def Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 08/19] perf tools: Introduce perf hooks Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 09/19] perf test: Remove "test" and similar strings from test descriptions Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 10/19] perf kmem stat: Track memory freed Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 11/19] perf script: Add option to stop printing callchain Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 12/19] perf tools: Add time-based utility functions Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 13/19] perf tools: Move parse_nsec_time to time-utils.c Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 14/19] perf script: Add option to specify time window of interest Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 15/19] perf sched timehist: " Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 16/19] perf kmem: " Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 17/19] perf report: " Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 18/19] perf annotate: Use arch->objdump.comment_char in dec__parse() Arnaldo Carvalho de Melo 2016-12-01 18:02 ` [PATCH 19/19] perf annotate: AArch64 support Arnaldo Carvalho de Melo 2016-12-02 9:10 ` [GIT PULL 00/19] perf/core improvements and fixes Ingo Molnar -- strict thread matches above, loose matches on Subject: below -- 2017-11-03 13:54 Arnaldo Carvalho de Melo 2017-08-14 16:27 Arnaldo Carvalho de Melo 2017-08-14 17:39 ` Ingo Molnar 2017-08-14 17:52 ` Arnaldo Carvalho de Melo 2017-03-14 18:50 Arnaldo Carvalho de Melo 2017-03-15 18:29 ` Ingo Molnar 2016-09-01 16:45 Arnaldo Carvalho de Melo 2016-09-05 13:16 ` Ingo Molnar 2016-07-14 2:20 Arnaldo Carvalho de Melo 2016-07-14 6:58 ` Ingo Molnar 2016-06-15 18:13 Arnaldo Carvalho de Melo 2016-06-16 6:29 ` Jiri Olsa 2016-06-16 19:54 ` Arnaldo Carvalho de Melo 2016-06-16 8:29 ` Ingo Molnar 2016-04-07 20:58 Arnaldo Carvalho de Melo 2016-04-08 13:15 ` Arnaldo Carvalho de Melo 2016-04-13 6:58 ` Ingo Molnar 2016-03-10 21:04 Arnaldo Carvalho de Melo 2016-03-11 8:43 ` Ingo Molnar 2016-02-26 23:18 Arnaldo Carvalho de Melo 2016-02-27 9:36 ` Ingo Molnar 2016-02-05 16:25 Arnaldo Carvalho de Melo 2016-02-09 9:40 ` Ingo Molnar 2015-04-08 14:23 Arnaldo Carvalho de Melo 2015-04-08 15:05 ` Ingo Molnar 2015-03-21 18:54 Arnaldo Carvalho de Melo 2015-03-22 9:58 ` Ingo Molnar 2015-02-27 19:22 Arnaldo Carvalho de Melo 2014-01-17 14:57 Arnaldo Carvalho de Melo 2014-01-19 12:11 ` Ingo Molnar 2012-05-22 17:39 Arnaldo Carvalho de Melo 2012-05-23 15:06 ` Ingo Molnar
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).