Re: [PATCH v2] perf/sdt: Show proper hint
From: Ingo Molnar
Date: Tue Feb 07 2017 - 03:00:16 EST
* Arnaldo Carvalho de Melo <acme@xxxxxxxxxx> wrote:
> Em Fri, Feb 03, 2017 at 03:56:42PM +0530, Ravi Bangoria escreveu:
> > After patch:
> > $ perf record -a -e sdt_glib:idle__add
> > event syntax error: 'sdt_glib:idle__add'
> > \___ unknown tracepoint
> >
> > Error: File /sys/kernel/debug/tracing/events/sdt_glib/idle__add not found.
> > Hint: SDT event cannot be directly recorded on. Please use 'perf probe sdt_glib:idle__add' before recording it.
> > ...
> >
> > $ perf probe sdt_glib:idle__add
> > Added new event:
> > sdt_glib:idle__add (on %idle__add in /usr/lib64/libglib-2.0.so.0.5000.2)
> >
> > You can now use it in all perf tools, such as:
> >
> > perf record -e sdt_glib:idle__add -aR sleep 1
> >
> > $ perf record -a -e sdt_glib:idle__add
> > [ perf record: Woken up 1 times to write data ]
> > [ perf record: Captured and wrote 0.175 MB perf.data ]
>
> Looks much better! Thanks!
>
> Unsure if we should state somewhere that this needs to be done only once
> per boot.
Forgot to reply to your question - indeed I agree that something like this would
be even better:
$ perf record -a -e sdt_glib:idle__add
event syntax error: 'sdt_glib:idle__add'
\___ unknown tracepoint
Error: File /sys/kernel/debug/tracing/events/sdt_glib/idle__add not found.
Hint: SDT event cannot be directly recorded on.
Please first use 'perf probe sdt_glib:idle__add' before recording it.
BTW., and I think this is fundamental: why is this interim step forced upon the
user - cannot we just auto-enable it if it's not enabled yet?
If for some reason it's important for the user to know that we enabled a probe we
could print that we did so:
Info: enabling not yet enabled 'perf probe sdt_glib:idle__add' SDT event.
... and that would be even more usable.
A tool printing out the perfect thing for the user to type in is a sign that the
tool should have done this itself.
See for example how Git handles the bisection workflow. Technically the following
is required to start a bisection:
triton:~/tip> git bisect start
triton:~/tip> git bisect bad
triton:~/tip>
But you can also do:
triton:~/tip> git bisect bad
You need to start by "git bisect start"
Do you want me to do it for you [Y/n]?
triton:~/tip>
and the user can start the bisection by hitting Enter.
No fuss, no unnecessary resistance from tooling - and the user is fully informed
all along. Every extra tooling step forced upon users annoys them and shrinks the
potential userbase.
Thanks,
Ingo