[PATCH v1 0/8] CSV/JSON metric thresholds, fix printf modifiers

Ian Rogers posted 8 patches 1 month, 3 weeks ago
There is a newer version of this series
tools/perf/Documentation/perf-stat.txt        |   1 +
tools/perf/arch/x86/util/iostat.c             |   2 +-
tools/perf/builtin-sched.c                    |   2 +-
tools/perf/builtin-script.c                   |   6 +-
tools/perf/builtin-stat.c                     |   8 ++
tools/perf/builtin-trace.c                    |   2 +-
.../tests/shell/lib/perf_json_output_lint.py  |   5 +-
tools/perf/tests/shell/stat+csv_output.sh     |  24 ++--
tools/perf/util/arm-spe.c                     |   2 +-
tools/perf/util/color.h                       |   9 +-
tools/perf/util/intel-bts.c                   |   2 +-
tools/perf/util/intel-pt.c                    |   2 +-
tools/perf/util/s390-cpumsf.c                 |   2 +-
tools/perf/util/s390-sample-raw.c             |   6 +-
tools/perf/util/stat-display.c                |  85 +++++++++---
tools/perf/util/stat-shadow.c                 | 128 ++++++++++--------
tools/perf/util/stat.h                        |  16 ++-
17 files changed, 191 insertions(+), 111 deletions(-)
[PATCH v1 0/8] CSV/JSON metric thresholds, fix printf modifiers
Posted by Ian Rogers 1 month, 3 weeks ago
Metric thresholds are being computed for CSV and JSON output but not
displayed. Rename the color that encodes the threshold as enum values
and use to generate string constants in a CSV column or json
dictionary value.

Add printf attribute to functions in color.h that could support
it. Fix bad printf format strings that this detected.

Ian Rogers (8):
  perf color: Add printf format checking and resolve issues
  perf stat: Fix/add parameter names for print_metric
  perf stat: Display "none" for NaN with metric only json
  perf stat: Drop metric-unit if unit is NULL
  perf stat: Change color to threshold in print_metric
  perf stat: Display metric threshold value in CSV output
  perf stat: Add metric-threshold to json output
  perf stat: Disable metric thresholds for CSV/JSON metric-only mode

 tools/perf/Documentation/perf-stat.txt        |   1 +
 tools/perf/arch/x86/util/iostat.c             |   2 +-
 tools/perf/builtin-sched.c                    |   2 +-
 tools/perf/builtin-script.c                   |   6 +-
 tools/perf/builtin-stat.c                     |   8 ++
 tools/perf/builtin-trace.c                    |   2 +-
 .../tests/shell/lib/perf_json_output_lint.py  |   5 +-
 tools/perf/tests/shell/stat+csv_output.sh     |  24 ++--
 tools/perf/util/arm-spe.c                     |   2 +-
 tools/perf/util/color.h                       |   9 +-
 tools/perf/util/intel-bts.c                   |   2 +-
 tools/perf/util/intel-pt.c                    |   2 +-
 tools/perf/util/s390-cpumsf.c                 |   2 +-
 tools/perf/util/s390-sample-raw.c             |   6 +-
 tools/perf/util/stat-display.c                |  85 +++++++++---
 tools/perf/util/stat-shadow.c                 | 128 ++++++++++--------
 tools/perf/util/stat.h                        |  16 ++-
 17 files changed, 191 insertions(+), 111 deletions(-)

-- 
2.47.0.rc0.187.ge670bccf7e-goog
Re: [PATCH v1 0/8] CSV/JSON metric thresholds, fix printf modifiers
Posted by Namhyung Kim 1 month, 2 weeks ago
Hi Ian,

On Fri, Oct 04, 2024 at 04:41:12PM -0700, Ian Rogers wrote:
> Metric thresholds are being computed for CSV and JSON output but not
> displayed. Rename the color that encodes the threshold as enum values
> and use to generate string constants in a CSV column or json
> dictionary value.

IIUC it'd show "good" or "bad" when the metric defines a threshold and
show "good", "less good", "nearly bad" or "bad" for the legacy shadow
stats?  Anyway it's nice to show if the value is good or not.

> 
> Add printf attribute to functions in color.h that could support
> it. Fix bad printf format strings that this detected.
> 
> Ian Rogers (8):
>   perf color: Add printf format checking and resolve issues
>   perf stat: Fix/add parameter names for print_metric
>   perf stat: Display "none" for NaN with metric only json
>   perf stat: Drop metric-unit if unit is NULL
>   perf stat: Change color to threshold in print_metric
>   perf stat: Display metric threshold value in CSV output
>   perf stat: Add metric-threshold to json output
>   perf stat: Disable metric thresholds for CSV/JSON metric-only mode

Acked-by: Namhyung Kim <namhyung@kernel.org>

Thanks,
Namhyung

> 
>  tools/perf/Documentation/perf-stat.txt        |   1 +
>  tools/perf/arch/x86/util/iostat.c             |   2 +-
>  tools/perf/builtin-sched.c                    |   2 +-
>  tools/perf/builtin-script.c                   |   6 +-
>  tools/perf/builtin-stat.c                     |   8 ++
>  tools/perf/builtin-trace.c                    |   2 +-
>  .../tests/shell/lib/perf_json_output_lint.py  |   5 +-
>  tools/perf/tests/shell/stat+csv_output.sh     |  24 ++--
>  tools/perf/util/arm-spe.c                     |   2 +-
>  tools/perf/util/color.h                       |   9 +-
>  tools/perf/util/intel-bts.c                   |   2 +-
>  tools/perf/util/intel-pt.c                    |   2 +-
>  tools/perf/util/s390-cpumsf.c                 |   2 +-
>  tools/perf/util/s390-sample-raw.c             |   6 +-
>  tools/perf/util/stat-display.c                |  85 +++++++++---
>  tools/perf/util/stat-shadow.c                 | 128 ++++++++++--------
>  tools/perf/util/stat.h                        |  16 ++-
>  17 files changed, 191 insertions(+), 111 deletions(-)
> 
> -- 
> 2.47.0.rc0.187.ge670bccf7e-goog
>
Re: [PATCH v1 0/8] CSV/JSON metric thresholds, fix printf modifiers
Posted by Ian Rogers 1 month, 2 weeks ago
On Tue, Oct 8, 2024 at 3:47 PM Namhyung Kim <namhyung@kernel.org> wrote:
>
> Hi Ian,
>
> On Fri, Oct 04, 2024 at 04:41:12PM -0700, Ian Rogers wrote:
> > Metric thresholds are being computed for CSV and JSON output but not
> > displayed. Rename the color that encodes the threshold as enum values
> > and use to generate string constants in a CSV column or json
> > dictionary value.
>
> IIUC it'd show "good" or "bad" when the metric defines a threshold and
> show "good", "less good", "nearly bad" or "bad" for the legacy shadow
> stats?  Anyway it's nice to show if the value is good or not.

Correct. I'm open to suggestions for the names. The alternative to
showing the metric thresholds would be to drop them for CSV and JSON
output, which would reduce the number of events. With this approach
the thresholds can still be dropped with --metric-no-threshold.

Thanks,
Ian

> >
> > Add printf attribute to functions in color.h that could support
> > it. Fix bad printf format strings that this detected.
> >
> > Ian Rogers (8):
> >   perf color: Add printf format checking and resolve issues
> >   perf stat: Fix/add parameter names for print_metric
> >   perf stat: Display "none" for NaN with metric only json
> >   perf stat: Drop metric-unit if unit is NULL
> >   perf stat: Change color to threshold in print_metric
> >   perf stat: Display metric threshold value in CSV output
> >   perf stat: Add metric-threshold to json output
> >   perf stat: Disable metric thresholds for CSV/JSON metric-only mode
>
> Acked-by: Namhyung Kim <namhyung@kernel.org>
>
> Thanks,
> Namhyung
>
> >
> >  tools/perf/Documentation/perf-stat.txt        |   1 +
> >  tools/perf/arch/x86/util/iostat.c             |   2 +-
> >  tools/perf/builtin-sched.c                    |   2 +-
> >  tools/perf/builtin-script.c                   |   6 +-
> >  tools/perf/builtin-stat.c                     |   8 ++
> >  tools/perf/builtin-trace.c                    |   2 +-
> >  .../tests/shell/lib/perf_json_output_lint.py  |   5 +-
> >  tools/perf/tests/shell/stat+csv_output.sh     |  24 ++--
> >  tools/perf/util/arm-spe.c                     |   2 +-
> >  tools/perf/util/color.h                       |   9 +-
> >  tools/perf/util/intel-bts.c                   |   2 +-
> >  tools/perf/util/intel-pt.c                    |   2 +-
> >  tools/perf/util/s390-cpumsf.c                 |   2 +-
> >  tools/perf/util/s390-sample-raw.c             |   6 +-
> >  tools/perf/util/stat-display.c                |  85 +++++++++---
> >  tools/perf/util/stat-shadow.c                 | 128 ++++++++++--------
> >  tools/perf/util/stat.h                        |  16 ++-
> >  17 files changed, 191 insertions(+), 111 deletions(-)
> >
> > --
> > 2.47.0.rc0.187.ge670bccf7e-goog
> >
Re: [PATCH v1 0/8] CSV/JSON metric thresholds, fix printf modifiers
Posted by Namhyung Kim 1 month, 2 weeks ago
On Tue, Oct 08, 2024 at 04:40:19PM -0700, Ian Rogers wrote:
> On Tue, Oct 8, 2024 at 3:47 PM Namhyung Kim <namhyung@kernel.org> wrote:
> >
> > Hi Ian,
> >
> > On Fri, Oct 04, 2024 at 04:41:12PM -0700, Ian Rogers wrote:
> > > Metric thresholds are being computed for CSV and JSON output but not
> > > displayed. Rename the color that encodes the threshold as enum values
> > > and use to generate string constants in a CSV column or json
> > > dictionary value.
> >
> > IIUC it'd show "good" or "bad" when the metric defines a threshold and
> > show "good", "less good", "nearly bad" or "bad" for the legacy shadow
> > stats?  Anyway it's nice to show if the value is good or not.
> 
> Correct. I'm open to suggestions for the names. The alternative to
> showing the metric thresholds would be to drop them for CSV and JSON
> output, which would reduce the number of events. With this approach
> the thresholds can still be dropped with --metric-no-threshold.

Ok, I don't have better idea for the naming.

Thanks,
Namhyung

> 
> > >
> > > Add printf attribute to functions in color.h that could support
> > > it. Fix bad printf format strings that this detected.
> > >
> > > Ian Rogers (8):
> > >   perf color: Add printf format checking and resolve issues
> > >   perf stat: Fix/add parameter names for print_metric
> > >   perf stat: Display "none" for NaN with metric only json
> > >   perf stat: Drop metric-unit if unit is NULL
> > >   perf stat: Change color to threshold in print_metric
> > >   perf stat: Display metric threshold value in CSV output
> > >   perf stat: Add metric-threshold to json output
> > >   perf stat: Disable metric thresholds for CSV/JSON metric-only mode
> >
> > Acked-by: Namhyung Kim <namhyung@kernel.org>
> >
> > Thanks,
> > Namhyung
> >
> > >
> > >  tools/perf/Documentation/perf-stat.txt        |   1 +
> > >  tools/perf/arch/x86/util/iostat.c             |   2 +-
> > >  tools/perf/builtin-sched.c                    |   2 +-
> > >  tools/perf/builtin-script.c                   |   6 +-
> > >  tools/perf/builtin-stat.c                     |   8 ++
> > >  tools/perf/builtin-trace.c                    |   2 +-
> > >  .../tests/shell/lib/perf_json_output_lint.py  |   5 +-
> > >  tools/perf/tests/shell/stat+csv_output.sh     |  24 ++--
> > >  tools/perf/util/arm-spe.c                     |   2 +-
> > >  tools/perf/util/color.h                       |   9 +-
> > >  tools/perf/util/intel-bts.c                   |   2 +-
> > >  tools/perf/util/intel-pt.c                    |   2 +-
> > >  tools/perf/util/s390-cpumsf.c                 |   2 +-
> > >  tools/perf/util/s390-sample-raw.c             |   6 +-
> > >  tools/perf/util/stat-display.c                |  85 +++++++++---
> > >  tools/perf/util/stat-shadow.c                 | 128 ++++++++++--------
> > >  tools/perf/util/stat.h                        |  16 ++-
> > >  17 files changed, 191 insertions(+), 111 deletions(-)
> > >
> > > --
> > > 2.47.0.rc0.187.ge670bccf7e-goog
> > >