• Namhyung Kim's avatar
    perf stat: Fix --metric-only --json output · fdc7d608
    Namhyung Kim authored
    Currently it prints all metric headers for JSON output.  But actually it
    skips some metrics with valid_only_metric().  So the output looks like:
    
      $ perf stat --metric-only --json true
      {"unit" : "CPUs utilized", "unit" : "/sec", "unit" : "/sec", "unit" : "/sec", "unit" : "GHz", "unit" : "insn per cycle", "unit" : "/sec", "unit" : "branch-misses of all branches"}
      {"metric-value" : "3.861"}{"metric-value" : "0.79"}{"metric-value" : "3.04"}
    
    As you can see there are 8 units in the header but only 3 metric-values
    are there.  It should skip the unused headers as well.  Also each unit
    should be printed as a separate object like metric values.
    
    With this patch:
    
      $ perf stat --metric-only --json true
      {"unit" : "GHz"}{"unit" : "insn per cycle"}{"unit" : "branch-misses of all branches"}
      {"metric-value" : "4.166"}{"metric-value" : "0.73"}{"metric-value" : "2.96"}
    
    Fixes: df936cad ("perf stat: Add JSON output option")
    Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Claire Jensen <cjense@google.com>
    Cc: Ian Rogers <irogers@google.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/20221107213314.3239159-6-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    fdc7d608
stat-display.c 29.9 KB