linux/tools/perf
Namhyung Kim ab6baaae27 perf stat: Fix JSON output in metric-only mode
It generated a broken JSON output when aggregation mode or cgroup is
used with --metric-only option.  Also get rid of the header line and
make the output single line for each entry.

It needs to know whether the current metric is the first one or not.
So add 'first' field in the outstate and mark it false after printing.

Before:

  # perf stat -a -j --metric-only true
  {"unit" : "GHz"}{"unit" : "insn per cycle"}{"unit" : "branch-misses of all branches"}
  {{"metric-value" : "0.797"}{"metric-value" : "1.65"}{"metric-value" : "0.89"}
   ^

  # perf stat -a -j --metric-only --per-socket true
  {"unit" : "GHz"}{"unit" : "insn per cycle"}{"unit" : "branch-misses of all branches"}
  {"socket" : "S0", "aggregate-number" : 8, {"metric-value" : "0.295"}{"metric-value" : "1.88"}{"metric-value" : "0.64"}
                                           ^

After:

  # perf stat -a -j --metric-only true
  {"GHz" : "0.990", "insn per cycle" : "2.06", "branch-misses of all branches" : "0.59"}

  # perf stat -a -j --metric-only --per-socket true
  {"socket" : "S0", "aggregate-number" : 8, "GHz" : "0.439", "insn per cycle" : "2.14", "branch-misses of all branches" : "0.51"}

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Ian Rogers <irogers@google.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Athira Jajeev <atrajeev@linux.vnet.ibm.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: James Clark <james.clark@arm.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Xing Zhengjun <zhengjun.xing@linux.intel.com>
Link: https://lore.kernel.org/r/20221123180208.2068936-14-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2022-11-24 09:41:08 -03:00
..
arch perf stat: Pass through 'struct outstate' 2022-11-24 09:40:37 -03:00
bench perf tools: Move 'struct perf_sample' to a separate header file to disentangle headers 2022-10-31 11:06:41 -03:00
dlfilters perf dlfilter dlfilter-show-cycles: Fix types for print format 2022-09-08 12:17:45 -03:00
Documentation perf list: Add JSON output option 2022-11-23 10:29:59 -03:00
examples/bpf perf trace: Remove unused bpf map 'syscalls' 2022-11-23 10:30:00 -03:00
include/perf perf bpf: Remove now unused BPF headers 2022-11-04 11:41:48 -03:00
jvmti
pmu-events perf vendor events: Add Arm Neoverse V2 PMU events 2022-11-10 15:41:18 -03:00
python perf python: Convert tracepoint.py example to python3 2022-04-01 16:19:35 -03:00
scripts perf scripts python: intel-pt-events.py: Add ability interleave output 2022-10-27 16:37:26 -03:00
tests perf test: Fix record test on KVM guests 2022-11-23 10:35:45 -03:00
trace perf trace: Add augmenter for clock_gettime's rqtp timespec arg 2022-11-10 15:30:10 -03:00
ui perf tools: Fix "kernel lock contention analysis" test by not printing warnings in quiet mode 2022-10-27 16:37:26 -03:00
util perf stat: Fix JSON output in metric-only mode 2022-11-24 09:41:08 -03:00
.gitignore perf build: Install libsymbol locally when building 2022-11-16 12:17:15 -03:00
Build perf kwork: New tool to trace time properties of kernel work (such as softirq, and workqueue) 2022-07-26 16:01:24 -03:00
builtin-annotate.c perf tools: Make quiet mode consistent between tools 2022-10-27 16:37:26 -03:00
builtin-bench.c perf bench: Add breakpoint benchmarks 2022-05-13 11:00:38 -03:00
builtin-buildid-cache.c
builtin-buildid-list.c perf buildid-list: Add a "-m" option to show kernel and modules build-ids 2022-07-18 16:35:34 -03:00
builtin-c2c.c perf mem/c2c: Set PERF_SAMPLE_WEIGHT for LOAD_STORE events 2022-10-06 16:29:32 -03:00
builtin-config.c
builtin-daemon.c perf daemon: Use sig_atomic_t to avoid UB 2022-11-03 09:35:44 -03:00
builtin-data.c
builtin-diff.c perf tools: Make quiet mode consistent between tools 2022-10-27 16:37:26 -03:00
builtin-evlist.c
builtin-ftrace.c perf ftrace: Use sig_atomic_t to avoid UB 2022-11-03 09:36:09 -03:00
builtin-help.c
builtin-inject.c perf dso: Hold lock when accessing nsinfo 2022-10-04 08:55:20 -03:00
builtin-kallsyms.c
builtin-kmem.c perf tools: Enhance the matching of sub-commands abbreviations 2022-03-26 10:55:57 -03:00
builtin-kvm.c perf kvm: Fix subcommand matching error 2022-08-10 10:44:02 -03:00
builtin-kwork.c perf kwork: Remove includes not needed in kwork.h 2022-10-31 11:06:46 -03:00
builtin-list.c perf list: Add JSON output option 2022-11-23 10:29:59 -03:00
builtin-lock.c perf lock: Allow concurrent record and report 2022-11-10 15:34:19 -03:00
builtin-mem.c perf tools: Move 'struct perf_sample' to a separate header file to disentangle headers 2022-10-31 11:06:41 -03:00
builtin-probe.c perf tools: Make quiet mode consistent between tools 2022-10-27 16:37:26 -03:00
builtin-record.c perf record: Use sig_atomic_t for signal handlers 2022-11-03 09:34:40 -03:00
builtin-report.c perf tools: Make quiet mode consistent between tools 2022-10-27 16:37:26 -03:00
builtin-sched.c perf sched: Factor out destroy_tasks() 2022-10-04 08:55:21 -03:00
builtin-script.c perf stat: Allocate evsel->stats->aggr properly 2022-10-27 16:37:25 -03:00
builtin-stat.c perf thread_map: Reduce exposure of libperf internal API 2022-11-16 12:17:15 -03:00
builtin-timechart.c perf timechart: Add p_state_end helper 2022-10-04 08:55:21 -03:00
builtin-top.c perf top: Use sig_atomic_t to avoid undefined behaviour in a signal handler 2022-11-03 09:38:01 -03:00
builtin-trace.c perf trace: Remove unused bpf map 'syscalls' 2022-11-23 10:30:00 -03:00
builtin-version.c perf version: Add HAVE_DEBUGINFOD_SUPPORT to built-in features 2022-04-20 13:32:09 -03:00
builtin.h perf kwork: New tool to trace time properties of kernel work (such as softirq, and workqueue) 2022-07-26 16:01:24 -03:00
check-headers.sh tools headers: Update the copy of x86's memcpy_64.S used in 'perf bench' 2022-10-25 17:40:48 -03:00
command-list.txt perf kwork: New tool to trace time properties of kernel work (such as softirq, and workqueue) 2022-07-26 16:01:24 -03:00
CREDITS
design.txt
Makefile
Makefile.config perf build: Use tools/lib headers from install path 2022-11-16 16:00:49 -03:00
Makefile.perf perf build: Fix LIBTRACEEVENT_DYNAMIC 2022-11-23 10:29:59 -03:00
MANIFEST perf build: Install libsymbol locally when building 2022-11-16 12:17:15 -03:00
perf-archive.sh
perf-completion.sh
perf-iostat.sh
perf-read-vdso.c
perf-sys.h
perf.c perf tools: Add same_cmd_with_prefix() helper 2022-10-04 08:55:21 -03:00
perf.h