Re: [PATCH] perf util: Display warning when perf report/annotate is missing some libs

From: Jin, Yao
Date: Thu Mar 22 2018 - 23:09:10 EST




On 3/22/2018 4:51 PM, Jiri Olsa wrote:
On Thu, Mar 22, 2018 at 09:04:10AM +0800, Jin, Yao wrote:


On 3/21/2018 11:38 PM, Jiri Olsa wrote:
On Wed, Mar 21, 2018 at 10:11:10AM +0800, Jin, Yao wrote:
Hi Jiri,

I'm still thinking it's worth displaying the warning when perf missing some
libraries.

Somebody just told me that perf didn't work well. While after some
investigations, I found it's just missing some libraries when building the
perf.

But I have spent some time on getting the root cause. If with this patch, it
should be very easily to know that.

true.. Arnaldo, any feedback on this one?

I just think it'd better provide some hints to user. For example,
"symbol is disabled and you need to install libelf/xxx", say something
like that.

But it looks the column can't contain too much information (i.e. no more
space to contain the entire hints).

Any idea? Or just add this warning in verbose mode?

also your change does not affect tui mode

annotation for some reason does not start at all.. could be
little more verbose ;-)

jirka


Yes, it doesn't affect tui mode.

Or we just add this warning in verbose mode?

e.g. perf report -v?

how about displaying libraries separately with -vv output,
that would mimic the build message, like:

$ ./perf -vv
perf version 4.16.rc6.g18fd48

dwarf: [ on ]
dwarf_getlocations: [ on ]
glibc: [ on ]
gtk2: [ on ]
libaudit: [ on ]
libbfd: [ on ]
libelf: [ on ]
libnuma: [ on ]
numa_num_possible_cpus: [ on ]
libperl: [ on ]
libpython: [ on ]
libslang: [ on ]
libcrypto: [ on ]
libunwind: [ on ]
libdw-dwarf-unwind: [ on ]
zlib: [ on ]
lzma: [ on ]
get_cpuid: [ on ]
bpf: [ on ]

and perf -vvv could display the 'make VF=1' info

jirka


I'm just afraid that the newbie will not check the -vv on his own when he
gets trouble in using perf.

In other words, if a user is experienced and he knows -vv yet, I may assume
that he should know installing all libraries before building the perf.

This patch is specific for the perf newbie. It will directly shows the
error/warning when the user launches the perf binary. It will have a little
bit helps, I guess. :)

I just don't like the idea that when you run perf report,
or annotate it spits out lines for every missing feature

maybe we could detect missing features for given command
and display line about missing features and say something
like:

'Warning: symbol,dwarf support not compiled in (for more details run perf -vv)'

or somwthing like that.. ;-)

jirka


Hi Jiri,

I think your idea is very good!

I guess following it's just an example copied from perf building process, right?

$ ./perf -vv
perf version 4.16.rc6.g18fd48

dwarf: [ on ]
dwarf_getlocations: [ on ]
glibc: [ on ]
gtk2: [ on ]
libaudit: [ on ]
libbfd: [ on ]
libelf: [ on ]
libnuma: [ on ]
numa_num_possible_cpus: [ on ]
libperl: [ on ]
libpython: [ on ]
libslang: [ on ]
libcrypto: [ on ]
libunwind: [ on ]
libdw-dwarf-unwind: [ on ]
zlib: [ on ]
lzma: [ on ]
get_cpuid: [ on ]
bpf: [ on ]

We can check some CFLAGS like "#ifdef HAVE_XXX" in perf code to determine if some libraries are compiled in.

For example,

#ifdef HAVE_LIBNUMA_SUPPORT
printf("libnuma: [ on ]");
#endif

For some features, such as "numa_num_possible_cpus", which doesn't have CFLAGS variables. Maybe we can ignore them in report?

I'd like to upgrade my patch to support perf -vv.

Thanks
Jin Yao