mirror_ubuntu-kernels/tools/perf
Jiri Olsa 021b462a51 perf stat: Make --per-thread update shadow stats to show metrics
We should support this because it would allow easily to collect metrics
for different threads in applications.

Original patch from posted by Jin Yao in here [1].

1. Current output, for example:

root@skl:/tmp# perf stat --per-thread -p 21623
^C
 Performance counter stats for process id '21623':

          vmstat-21623              0.517479      task-clock (msec)         #    0.000 CPUs utilized
          vmstat-21623                     1      context-switches
          vmstat-21623                     0      cpu-migrations
          vmstat-21623                     0      page-faults
          vmstat-21623               461,306      cycles
          vmstat-21623               630,724      instructions
          vmstat-21623               136,265      branches
          vmstat-21623                 2,520      branch-misses

       1.444020756 seconds time elapsed

root@skl:/tmp# perf stat --per-thread --metrics ipc -p 21623
^C
 Performance counter stats for process id '21623':

          vmstat-21623               631,185      inst_retired.any
          vmstat-21623               605,893      cpu_clk_unhalted.thread

       1.415679293 seconds time elapsed

2. With this patch, the result would be:

root@skl:/tmp# perf stat --per-thread -p 21623
^C
 Performance counter stats for process id '21623':

          vmstat-21623              0.533759      task-clock (msec)         #    0.000 CPUs utilized
          vmstat-21623                     1      context-switches          #    0.002 M/sec
          vmstat-21623                     0      cpu-migrations            #    0.000 K/sec
          vmstat-21623                     0      page-faults               #    0.000 K/sec
          vmstat-21623               473,896      cycles                    #    0.888 GHz
          vmstat-21623               631,072      instructions              #    1.33  insn per cycle
          vmstat-21623               136,307      branches                  #  255.372 M/sec
          vmstat-21623                 2,524      branch-misses             #    1.85% of all branches

       1.544862861 seconds time elapsed

root@skl:/tmp# perf stat --per-thread --metrics ipc -p 21623
^C
 Performance counter stats for process id '21623':

          vmstat-21623             1,259,104      inst_retired.any          #      1.2 IPC
          vmstat-21623             1,056,756      cpu_clk_unhalted.thread

       2.040954502 seconds time elapsed

[1] https://marc.info/?l=linux-kernel&m=150777054620511&w=2

Originally-from: Jin Yao <yao.jin@linux.intel.com>
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Changbin Du <changbin.du@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/n/tip-tr8ntktxmy4qc5769ajg5u6c@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2017-10-30 13:41:48 -03:00
..
arch perf annotate: Remove arch::cpuid_parse callback 2017-10-23 11:20:54 -03:00
bench perf tools: Use __maybe_unused consistently 2017-06-19 15:27:06 -03:00
Documentation perf script: Allow creating per-event dump files 2017-10-27 09:10:10 -03:00
jvmti perf jit: fix typo: "incalid" -> "invalid" 2017-06-27 11:55:06 -03:00
pmu-events perf vendor events: Add Goldmont Plus V1 event file 2017-10-23 16:30:54 -03:00
python perf python: Add tracepoint example 2016-07-12 16:23:35 -03:00
scripts perf script python: Add support for sqlite3 to call-graph-from-sql.py 2017-08-15 17:03:38 -03:00
tests perf tools: Add struct perf_data_file 2017-10-30 13:37:37 -03:00
trace perf trace beauty prctl: Generate 'option' string table from kernel headers 2017-10-27 09:10:10 -03:00
ui perf report: Remove code to handle inline frames from browsers 2017-10-24 09:59:55 -03:00
util perf stat: Make --per-thread update shadow stats to show metrics 2017-10-30 13:41:48 -03:00
.gitignore perf tools: Ignore generated files pmu-events/{jevents,pmu-events.c} for git 2017-03-13 10:59:36 -03:00
Build perf trace: Only build tools/perf/trace/beauty/ when building 'perf trace' 2017-07-18 23:13:52 -03:00
builtin-annotate.c perf tools: Add struct perf_data_file 2017-10-30 13:37:37 -03:00
builtin-bench.c perf tools: Remove unused 'prefix' from builtin functions 2017-03-27 11:58:09 -03:00
builtin-buildid-cache.c perf tools: Add struct perf_data_file 2017-10-30 13:37:37 -03:00
builtin-buildid-list.c perf tools: Add struct perf_data_file 2017-10-30 13:37:37 -03:00
builtin-c2c.c perf tools: Add struct perf_data_file 2017-10-30 13:37:37 -03:00
builtin-config.c perf config: Write a config file just once 2017-09-13 09:49:15 -03:00
builtin-data.c perf data: Add doc when no conversion support compiled 2017-07-28 16:30:45 -03:00
builtin-diff.c perf tools: Add struct perf_data_file 2017-10-30 13:37:37 -03:00
builtin-evlist.c perf tools: Add struct perf_data_file 2017-10-30 13:37:37 -03:00
builtin-ftrace.c tools include: Adopt strstarts() from the kernel 2017-07-20 15:46:10 -03:00
builtin-help.c tools include: Adopt strstarts() from the kernel 2017-07-20 15:46:10 -03:00
builtin-inject.c perf tools: Add struct perf_data_file 2017-10-30 13:37:37 -03:00
builtin-kallsyms.c perf tools: Including missing inttypes.h header 2017-04-19 13:01:46 -03:00
builtin-kmem.c perf tools: Add struct perf_data_file 2017-10-30 13:37:37 -03:00
builtin-kvm.c perf tools: Add struct perf_data_file 2017-10-30 13:37:37 -03:00
builtin-list.c perf list: Add metric groups to perf list 2017-09-13 09:49:13 -03:00
builtin-lock.c perf tools: Add struct perf_data_file 2017-10-30 13:37:37 -03:00
builtin-mem.c perf tools: Add struct perf_data_file 2017-10-30 13:37:37 -03:00
builtin-probe.c perf buildid-cache: Support binary objects from other namespaces 2017-07-18 23:14:11 -03:00
builtin-record.c perf tools: Add struct perf_data_file 2017-10-30 13:37:37 -03:00
builtin-report.c perf tools: Add struct perf_data_file 2017-10-30 13:37:37 -03:00
builtin-sched.c perf tools: Add struct perf_data_file 2017-10-30 13:37:37 -03:00
builtin-script.c perf tools: Add struct perf_data_file 2017-10-30 13:37:37 -03:00
builtin-stat.c perf stat: Move the shadow stats scale computation in perf_stat__update_shadow_stats 2017-10-30 13:40:33 -03:00
builtin-timechart.c perf tools: Add struct perf_data_file 2017-10-30 13:37:37 -03:00
builtin-top.c perf top: Add option to set the number of thread for event synthesize 2017-10-03 09:27:54 -03:00
builtin-trace.c perf tools: Add struct perf_data_file 2017-10-30 13:37:37 -03:00
builtin-version.c perf tools: Remove string.h, unistd.h and sys/stat.h from util.h 2017-04-24 13:43:33 -03:00
builtin.h perf tools: Remove stale prototypes from builtin.h 2017-04-24 13:43:33 -03:00
check-headers.sh tools include uapi: Grab a copy of linux/prctl.h 2017-10-27 09:10:10 -03:00
command-list.txt perf tools: Missing c2c command in command-list 2017-03-13 10:59:31 -03:00
CREDITS
design.txt
Makefile perf build tests: Do parallell builds with 'build-test' 2016-02-04 15:57:00 -03:00
Makefile.config perf tools: Robustify detection of clang binary 2017-08-28 16:44:46 -03:00
Makefile.perf perf trace beauty prctl: Generate 'option' string table from kernel headers 2017-10-27 09:10:10 -03:00
MANIFEST perf tools: Get all of tools/{arch,include}/ in the MANIFEST 2017-09-25 10:39:43 -03:00
perf-archive.sh
perf-completion.sh
perf-read-vdso.c
perf-sys.h perf tools: Use default CPUINFO_PROC where it fits 2017-08-17 16:58:21 -03:00
perf-with-kcore.sh perf tools: Fix perf-with-kcore handling of arguments containing spaces 2015-08-06 16:48:27 -03:00
perf.c perf tools: Support running perf binaries with a dash in their name 2017-09-12 12:48:54 -03:00
perf.h perf record: Support direct --user-regs arguments 2017-09-13 09:49:14 -03:00