Re: [PATCH v5] perf tools: add support for libpfm4

From: Jiri Olsa
Date: Tue Mar 24 2020 - 06:25:32 EST


On Mon, Mar 23, 2020 at 04:58:46PM -0700, Ian Rogers wrote:

SNIP

> diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
> index 10107747b361..31ed184566c8 100644
> --- a/tools/perf/util/parse-events.c
> +++ b/tools/perf/util/parse-events.c
> @@ -37,6 +37,11 @@
> #include "util/evsel_config.h"
> #include "util/event.h"
>
> +#ifdef HAVE_LIBPFM
> +#include <perfmon/pfmlib_perf_event.h>
> +static void print_libpfm_events(bool name_only);
> +#endif
> +
> #define MAX_NAME_LEN 100
>
> #ifdef PARSER_DEBUG
> @@ -2794,6 +2799,10 @@ void print_events(const char *event_glob, bool name_only, bool quiet_flag,
> print_sdt_events(NULL, NULL, name_only);
>
> metricgroup__print(true, true, NULL, name_only, details_flag);
> +
> +#ifdef HAVE_LIBPFM
> + print_libpfm_events(name_only);


we should make some effort to fit this into our current list shape,
currently it looks like:

$ perf list
...

TopdownL1_SMT:
Backend_Bound_SMT
[This category represents fraction of slots where no uops are being delivered due to a lack of required resources for accepting new uops in the Backend>
Bad_Speculation_SMT
[This category represents fraction of slots wasted due to incorrect speculations. SMT version; use when SMT is enabled and measuring per logical CPU]
Frontend_Bound_SMT
[This category represents fraction of slots where the processor's Frontend undersupplies its Backend. SMT version; use when SMT is enabled and measurin>
Retiring_SMT
[This category represents fraction of slots utilized by useful work i.e. issued uops that eventually get retired. SMT version; use when SMT is enabled >


Name : UNHALTED_CORE_CYCLES
PMU : ix86arch
Desc : count core clock cycles whenever the clock signal on the specific core is running (not halted)
Equiv : None
Code : 0x3c
Modif : PMU: [e] : edge level (may require counter-mask >= 1) (boolean)
Modif : PMU: [i] : invert (boolean)
Modif : PMU: [c] : counter-mask in range [0-255] (integer)
Modif : PMU: [t] : measure any thread (boolean)
Modif : PMU: [intx] : monitor only inside transactional memory region (boolean)
Modif : PMU: [intxcp] : do not count occurrences inside aborted transactional memory region (boolean)
Modif : perf_event: [u] : monitor at user level (boolean)
Modif : perf_event: [k] : monitor at kernel level (boolean)
Modif : perf_event: [period] : sampling period (integer)
Modif : perf_event: [freq] : sampling frequency (Hz) (integer)
Modif : perf_event: [excl] : exclusive access (boolean)
Modif : perf_event: [mg] : monitor guest execution (boolean)
Modif : perf_event: [mh] : monitor host execution (boolean)
Modif : perf_event: [cpu] : CPU to program (integer)
Modif : perf_event: [pinned] : pin event to counters (boolean)

it needs some header like 'libpfm events:' and then
probably just name and doc for basic list and more
verbose for -v

jirka