[PATCH] tools/perf: Fix usage of perf probe when libtraceevent is missing
Arnaldo Carvalho de Melo
acme at kernel.org
Thu Feb 2 11:50:17 AEDT 2023
Em Tue, Jan 31, 2023 at 07:17:48PM +0530, Athira Rajeev escreveu:
> While parsing the tracepoint events in parse_events_add_tracepoint()
> function, code checks for HAVE_LIBTRACEEVENT support. This is needed
> since libtraceevent is necessary for tracepoint. But while adding
> probe points, check for LIBTRACEEVENT is not done in case of perf probe.
> Hence, in environment with missing libtraceevent-devel, it is
> observed that adding a probe point shows below message though it
> can't be used via perf record.
Thanks, applied.
- Arnaldo
> Example:
> Adding probe point:
> ./perf probe 'vfs_getname=getname_flags:72 pathname=result->name:string'
> Added new event:
> probe:vfs_getname (on getname_flags:72 with pathname=result->name:string)
>
> You can now use it in all perf tools, such as:
>
> perf record -e probe:vfs_getname -aR sleep 1
>
> But trying perf record:
> ./perf record -e probe:vfs_getname -aR sleep 1
> event syntax error: 'probe:vfs_getname'
> \___ unsupported tracepoint
> libtraceevent is necessary for tracepoint support
> Run 'perf list' for a list of valid events
>
> The builtin tool like perf record needs libtraceevent to
> parse tracefs. But still the probe can be used by enabling
> via tracefs. Patch fixes the probe usage message to the user
> based on presence of libtraceevent. With the fix,
>
> # ./perf probe 'pmu:myprobe=schedule'
> Added new event:
> pmu:myprobe (on schedule)
>
> perf is not linked with libtraceevent, to use the new probe you can use tracefs:
>
> cd /sys/kernel/tracing/
> echo 1 > events/pmu/myprobe/enable
> echo 1 > tracing_on
> cat trace_pipe
> Before removing the probe, echo 0 > events/pmu/myprobe/enable
>
> Signed-off-by: Athira Rajeev <atrajeev at linux.vnet.ibm.com>
> ---
> tools/perf/builtin-probe.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/tools/perf/builtin-probe.c b/tools/perf/builtin-probe.c
> index ed73d0b89ca2..e72f6cea76f7 100644
> --- a/tools/perf/builtin-probe.c
> +++ b/tools/perf/builtin-probe.c
> @@ -383,9 +383,18 @@ static int perf_add_probe_events(struct perf_probe_event *pevs, int npevs)
>
> /* Note that it is possible to skip all events because of blacklist */
> if (event) {
> +#ifndef HAVE_LIBTRACEEVENT
> + pr_info("\nperf is not linked with libtraceevent, to use the new probe you can use tracefs:\n\n");
> + pr_info("\tcd /sys/kernel/tracing/\n");
> + pr_info("\techo 1 > events/%s/%s/enable\n", group, event);
> + pr_info("\techo 1 > tracing_on\n");
> + pr_info("\tcat trace_pipe\n");
> + pr_info("\tBefore removing the probe, echo 0 > events/%s/%s/enable\n", group, event);
> +#else
> /* Show how to use the event. */
> pr_info("\nYou can now use it in all perf tools, such as:\n\n");
> pr_info("\tperf record -e %s:%s -aR sleep 1\n\n", group, event);
> +#endif
> }
>
> out_cleanup:
> --
> 2.39.0
>
--
- Arnaldo
More information about the Linuxppc-dev
mailing list