[PATCH v5 0/7] Avoid parsing tracepoint format just for id

Ian Rogers posted 7 patches 2 days, 17 hours ago
tools/lib/api/fs/fs.c                         |   6 +-
tools/perf/builtin-kmem.c                     |  12 +-
tools/perf/builtin-kwork.c                    |   3 +-
tools/perf/builtin-record.c                   |   2 -
tools/perf/builtin-script.c                   |   9 +-
tools/perf/builtin-trace.c                    |  79 +++++++++----
tools/perf/tests/Build                        |   6 +-
tools/perf/tests/builtin-test.c               |   2 -
tools/perf/tests/parse-events.c               |  25 +---
tools/perf/util/Build                         |   2 +-
tools/perf/util/data-convert-bt.c             |  10 +-
tools/perf/util/data-convert-json.c           |   8 +-
tools/perf/util/env.c                         |   9 +-
tools/perf/util/evsel.c                       | 110 +++++++++++++-----
tools/perf/util/evsel.h                       |   9 +-
tools/perf/util/evsel_fprintf.c               |   4 +-
tools/perf/util/parse-events.c                |  16 +--
tools/perf/util/perf_event_attr_fprintf.c     |   4 -
.../util/scripting-engines/trace-event-perl.c |   3 +-
.../scripting-engines/trace-event-python.c    |   3 +-
tools/perf/util/sort.c                        |  33 ++++--
tools/perf/util/trace-event-parse.c           |   2 +-
tools/perf/util/trace-event-scripting.c       |  10 +-
tools/perf/util/trace-event.h                 |   2 +-
24 files changed, 220 insertions(+), 149 deletions(-)
[PATCH v5 0/7] Avoid parsing tracepoint format just for id
Posted by Ian Rogers 2 days, 17 hours ago
The tracepoint format isn't needed to open an event, just the id for
the config value. Refactor the use of evsel->tp_format to use an
accessor that will lazily construct its value. In evsel__newtp_idx
read the id so the config value can be set up/used.

This allows tracepoints to be used without libtraceevent in a number
of tests. Other functionality is enabled without libtracevent, such as
mapping a tracepoint id back to its name. There may be some
performance benefit to code using tracepoints but not using the format
information.

v5. Add perf env fixed found by Namhyung.
v4. Rebase due to conflict with 9ac98662dbd3 ("perf: event: Remove deadcode")
v3. Whitespace changes, Arnaldo.
v2. Add additional error checking/handling in evsel__tp_format.

Ian Rogers (7):
  perf env: Ensure failure broken topology file reads are always -1
    encoded
  tool api fs: Correctly encode errno for read/write open failures
  perf trace-event: Constify print arguments
  perf trace-event: Always build trace-event-info.c
  perf evsel: Add/use accessor for tp_format
  perf evsel: Allow evsel__newtp without libtraceevent
  perf tests: Enable tests disabled due to tracepoint parsing

 tools/lib/api/fs/fs.c                         |   6 +-
 tools/perf/builtin-kmem.c                     |  12 +-
 tools/perf/builtin-kwork.c                    |   3 +-
 tools/perf/builtin-record.c                   |   2 -
 tools/perf/builtin-script.c                   |   9 +-
 tools/perf/builtin-trace.c                    |  79 +++++++++----
 tools/perf/tests/Build                        |   6 +-
 tools/perf/tests/builtin-test.c               |   2 -
 tools/perf/tests/parse-events.c               |  25 +---
 tools/perf/util/Build                         |   2 +-
 tools/perf/util/data-convert-bt.c             |  10 +-
 tools/perf/util/data-convert-json.c           |   8 +-
 tools/perf/util/env.c                         |   9 +-
 tools/perf/util/evsel.c                       | 110 +++++++++++++-----
 tools/perf/util/evsel.h                       |   9 +-
 tools/perf/util/evsel_fprintf.c               |   4 +-
 tools/perf/util/parse-events.c                |  16 +--
 tools/perf/util/perf_event_attr_fprintf.c     |   4 -
 .../util/scripting-engines/trace-event-perl.c |   3 +-
 .../scripting-engines/trace-event-python.c    |   3 +-
 tools/perf/util/sort.c                        |  33 ++++--
 tools/perf/util/trace-event-parse.c           |   2 +-
 tools/perf/util/trace-event-scripting.c       |  10 +-
 tools/perf/util/trace-event.h                 |   2 +-
 24 files changed, 220 insertions(+), 149 deletions(-)

-- 
2.47.0.338.g60cca15819-goog
Re: [PATCH v5 0/7] Avoid parsing tracepoint format just for id
Posted by Namhyung Kim 9 hours ago
On Mon, Nov 18, 2024 at 02:53:38PM -0800, Ian Rogers wrote:
> The tracepoint format isn't needed to open an event, just the id for
> the config value. Refactor the use of evsel->tp_format to use an
> accessor that will lazily construct its value. In evsel__newtp_idx
> read the id so the config value can be set up/used.
> 
> This allows tracepoints to be used without libtraceevent in a number
> of tests. Other functionality is enabled without libtracevent, such as
> mapping a tracepoint id back to its name. There may be some
> performance benefit to code using tracepoints but not using the format
> information.
> 
> v5. Add perf env fixed found by Namhyung.
> v4. Rebase due to conflict with 9ac98662dbd3 ("perf: event: Remove deadcode")
> v3. Whitespace changes, Arnaldo.
> v2. Add additional error checking/handling in evsel__tp_format.
> 
> Ian Rogers (7):
>   perf env: Ensure failure broken topology file reads are always -1
>     encoded
>   tool api fs: Correctly encode errno for read/write open failures
>   perf trace-event: Constify print arguments
>   perf trace-event: Always build trace-event-info.c
>   perf evsel: Add/use accessor for tp_format
>   perf evsel: Allow evsel__newtp without libtraceevent
>   perf tests: Enable tests disabled due to tracepoint parsing

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

Thanks,
Namhyung

> 
>  tools/lib/api/fs/fs.c                         |   6 +-
>  tools/perf/builtin-kmem.c                     |  12 +-
>  tools/perf/builtin-kwork.c                    |   3 +-
>  tools/perf/builtin-record.c                   |   2 -
>  tools/perf/builtin-script.c                   |   9 +-
>  tools/perf/builtin-trace.c                    |  79 +++++++++----
>  tools/perf/tests/Build                        |   6 +-
>  tools/perf/tests/builtin-test.c               |   2 -
>  tools/perf/tests/parse-events.c               |  25 +---
>  tools/perf/util/Build                         |   2 +-
>  tools/perf/util/data-convert-bt.c             |  10 +-
>  tools/perf/util/data-convert-json.c           |   8 +-
>  tools/perf/util/env.c                         |   9 +-
>  tools/perf/util/evsel.c                       | 110 +++++++++++++-----
>  tools/perf/util/evsel.h                       |   9 +-
>  tools/perf/util/evsel_fprintf.c               |   4 +-
>  tools/perf/util/parse-events.c                |  16 +--
>  tools/perf/util/perf_event_attr_fprintf.c     |   4 -
>  .../util/scripting-engines/trace-event-perl.c |   3 +-
>  .../scripting-engines/trace-event-python.c    |   3 +-
>  tools/perf/util/sort.c                        |  33 ++++--
>  tools/perf/util/trace-event-parse.c           |   2 +-
>  tools/perf/util/trace-event-scripting.c       |  10 +-
>  tools/perf/util/trace-event.h                 |   2 +-
>  24 files changed, 220 insertions(+), 149 deletions(-)
> 
> -- 
> 2.47.0.338.g60cca15819-goog
>