linux-perf-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 00/13] Tool and hwmon PMUs
@ 2024-09-12 19:03 Ian Rogers
  2024-09-12 19:03 ` [PATCH v2 01/13] perf pmu: Simplify an asprintf error message Ian Rogers
                   ` (13 more replies)
  0 siblings, 14 replies; 23+ messages in thread
From: Ian Rogers @ 2024-09-12 19:03 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Namhyung Kim, Mark Rutland, Alexander Shishkin, Jiri Olsa,
	Ian Rogers, Adrian Hunter, Kan Liang, John Garry, Will Deacon,
	James Clark, Mike Leach, Leo Yan, Ravi Bangoria, Weilin Wang,
	Jing Zhang, Xu Yang, Sandipan Das, Benjamin Gray, Athira Jajeev,
	Howard Chu, Dominique Martinet, Yang Jihong, Colin Ian King,
	Veronika Molnarova, Dr. David Alan Gilbert, Oliver Upton,
	Changbin Du, Ze Gao, Andi Kleen, Clément Le Goffic,
	Sun Haiyong, Junhao He, Tiezhu Yang, Yicong Yang, linux-kernel,
	linux-perf-users, linux-arm-kernel

Rather than have fake and tool PMUs being special flags in an evsel,
create special PMUs. This allows, for example, duration_time to also
be tool/duration_time/. Once adding events to the tools PMU is just
adding to an array, add events for nearly all the expr literals like
num_cpus_online. Rather than create custom logic for finding and
describing the tool events use json and add a notion of common json
for the tool events.

Following the convention of the tool PMU, create a hwmon PMU that
exposes hwmon data for reading. For example, the following shows
reading the CPU temperature and 2 fan speeds alongside the uncore
frequency:
```
$ perf stat -e temp_cpu,fan1,hwmon_thinkpad/fan2/,tool/num_cpus_online/ -M UNCORE_FREQ -I 1000
     1.001153138              52.00 'C   temp_cpu
     1.001153138              2,588 rpm  fan1
     1.001153138              2,482 rpm  hwmon_thinkpad/fan2/
     1.001153138                  8      tool/num_cpus_online/
     1.001153138      1,077,101,397      UNC_CLOCK.SOCKET                 #     1.08 UNCORE_FREQ
     1.001153138      1,012,773,595      duration_time
...
```

Additional data on the hwmon events is in perf list:
```
$ perf list
...
hwmon:
...
  temp_core_0 OR temp2
       [Temperature in unit coretemp named Core 0. crit=100'C,max=100'C crit_alarm=0'C. Unit:
        hwmon_coretemp]
...
```

v2: Address Namhyung's review feedback. Rebase dropping 4 patches
    applied by Arnaldo, fix build breakage reported by Arnaldo.

Ian Rogers (13):
  perf pmu: Simplify an asprintf error message
  perf pmu: Allow hardcoded terms to be applied to attributes
  perf parse-events: Expose/rename config_term_name
  perf tool_pmu: Factor tool events into their own PMU
  perf tool_pmu: Rename enum perf_tool_event to tool_pmu_event
  perf tool_pmu: Rename perf_tool_event__* to tool_pmu__*
  perf tool_pmu: Move expr literals to tool_pmu
  perf jevents: Add tool event json under a common architecture
  perf tool_pmu: Switch to standard pmu functions and json descriptions
  perf tests: Add tool PMU test
  perf hwmon_pmu: Add a tool PMU exposing events from hwmon in sysfs
  perf test: Add hwmon "PMU" test
  perf docs: Document tool and hwmon events

 tools/perf/Documentation/perf-list.txt        |  15 +
 tools/perf/arch/arm64/util/pmu.c              |   5 +-
 tools/perf/arch/x86/util/intel-pt.c           |   3 +-
 tools/perf/arch/x86/util/tsc.c                |  18 +-
 tools/perf/builtin-list.c                     |  13 +-
 tools/perf/builtin-stat.c                     |   7 +-
 .../pmu-events/arch/common/common/tool.json   |  74 ++
 tools/perf/pmu-events/empty-pmu-events.c      | 208 +++--
 tools/perf/pmu-events/jevents.py              |  16 +-
 tools/perf/tests/Build                        |   2 +
 tools/perf/tests/builtin-test.c               |   2 +
 tools/perf/tests/hwmon_pmu.c                  | 243 ++++++
 tools/perf/tests/pmu.c                        |   3 +-
 tools/perf/tests/tests.h                      |   2 +
 tools/perf/tests/tool_pmu.c                   | 111 +++
 tools/perf/util/Build                         |   2 +
 tools/perf/util/evsel.c                       | 287 +-----
 tools/perf/util/evsel.h                       |  28 +-
 tools/perf/util/expr.c                        |  93 +-
 tools/perf/util/hwmon_pmu.c                   | 818 ++++++++++++++++++
 tools/perf/util/hwmon_pmu.h                   | 154 ++++
 tools/perf/util/metricgroup.c                 |  35 +-
 tools/perf/util/parse-events.c                |  62 +-
 tools/perf/util/parse-events.h                |   5 +-
 tools/perf/util/parse-events.l                |  11 -
 tools/perf/util/parse-events.y                |  16 -
 tools/perf/util/pmu.c                         | 104 ++-
 tools/perf/util/pmu.h                         |   9 +-
 tools/perf/util/pmus.c                        |  16 +
 tools/perf/util/pmus.h                        |   3 +
 tools/perf/util/print-events.c                |  36 +-
 tools/perf/util/print-events.h                |   1 -
 tools/perf/util/stat-display.c                |  14 +-
 tools/perf/util/stat-shadow.c                 |  22 +-
 tools/perf/util/tool_pmu.c                    | 508 +++++++++++
 tools/perf/util/tool_pmu.h                    |  56 ++
 tools/perf/util/tsc.h                         |   2 +-
 37 files changed, 2376 insertions(+), 628 deletions(-)
 create mode 100644 tools/perf/pmu-events/arch/common/common/tool.json
 create mode 100644 tools/perf/tests/hwmon_pmu.c
 create mode 100644 tools/perf/tests/tool_pmu.c
 create mode 100644 tools/perf/util/hwmon_pmu.c
 create mode 100644 tools/perf/util/hwmon_pmu.h
 create mode 100644 tools/perf/util/tool_pmu.c
 create mode 100644 tools/perf/util/tool_pmu.h

-- 
2.46.0.662.g92d0881bb0-goog


^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2024-10-01 23:39 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-12 19:03 [PATCH v2 00/13] Tool and hwmon PMUs Ian Rogers
2024-09-12 19:03 ` [PATCH v2 01/13] perf pmu: Simplify an asprintf error message Ian Rogers
2024-09-12 19:18   ` Arnaldo Carvalho de Melo
2024-09-12 19:03 ` [PATCH v2 02/13] perf pmu: Allow hardcoded terms to be applied to attributes Ian Rogers
2024-09-12 19:03 ` [PATCH v2 03/13] perf parse-events: Expose/rename config_term_name Ian Rogers
2024-09-12 19:03 ` [PATCH v2 04/13] perf tool_pmu: Factor tool events into their own PMU Ian Rogers
2024-09-12 19:03 ` [PATCH v2 05/13] perf tool_pmu: Rename enum perf_tool_event to tool_pmu_event Ian Rogers
2024-09-12 19:03 ` [PATCH v2 06/13] perf tool_pmu: Rename perf_tool_event__* to tool_pmu__* Ian Rogers
2024-09-12 19:03 ` [PATCH v2 07/13] perf tool_pmu: Move expr literals to tool_pmu Ian Rogers
2024-09-12 19:03 ` [PATCH v2 08/13] perf jevents: Add tool event json under a common architecture Ian Rogers
2024-09-12 19:03 ` [PATCH v2 09/13] perf tool_pmu: Switch to standard pmu functions and json descriptions Ian Rogers
2024-09-12 19:03 ` [PATCH v2 10/13] perf tests: Add tool PMU test Ian Rogers
2024-09-12 19:03 ` [PATCH v2 11/13] perf hwmon_pmu: Add a tool PMU exposing events from hwmon in sysfs Ian Rogers
2024-09-12 19:03 ` [PATCH v2 12/13] perf test: Add hwmon "PMU" test Ian Rogers
2024-09-12 19:03 ` [PATCH v2 13/13] perf docs: Document tool and hwmon events Ian Rogers
2024-09-12 22:50 ` [PATCH v2 00/13] Tool and hwmon PMUs Namhyung Kim
2024-09-13 14:34   ` Ian Rogers
2024-09-26 19:47     ` Ian Rogers
2024-09-27 17:22       ` Namhyung Kim
2024-09-27 18:09         ` Ian Rogers
2024-09-29  7:21           ` Namhyung Kim
2024-10-01  4:56             ` Ian Rogers
2024-10-01 23:39               ` Namhyung Kim

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).