From: Arnaldo Carvalho de Melo <acme@redhat.com>
To: Wang Nan <wangnan0@huawei.com>
Cc: ast@fb.com, lizefan@huawei.com, hekuang@huawei.com,
Ingo Molnar <mingo@kernel.org>,
linux-kernel@vger.kernel.org, pi3orama@163.com, joe@ovn.org,
Jiri Olsa <jolsa@kernel.org>,
acme@kernel.org
Subject: Re: [PATCH v3 10/30] perf clang: Add builtin clang support ant test case
Date: Fri, 2 Dec 2016 13:44:40 -0200 [thread overview]
Message-ID: <20161202154440.GB5931@redhat.com> (raw)
In-Reply-To: <20161126070354.141764-11-wangnan0@huawei.com>
Em Sat, Nov 26, 2016 at 07:03:34AM +0000, Wang Nan escreveu:
> Add basic clang support in clang.cpp and test__clang() testcase. The
> first testcase checks if builtin clang is able to generate LLVM IR.
>
> tests/clang.c is a proxy. Real testcase resides in
> utils/c++/clang-test.cpp in c++ and exports C interface to perf test
> subsystem.
>
> Test result:
>
> $ perf test -v clang
> 51: Test builtin clang support :
> 51.1: Test builtin clang compile C source to IR :
> --- start ---
> test child forked, pid 13215
> test child finished with 0
> ---- end ----
> Test builtin clang support subtest 0: Ok
While testing this I noticed that the perf binary got huge, can't this
be done in some other way, i.e. using dynamic library?
[root@jouet ~]# size /tmp/perf
text data bss dec hex filename
75333688 1421584 23962176 100717448 600d388 /tmp/perf
[root@jouet ~]#
I've built it with this:
make LIBCLANGLLVM=1 O=/tmp/build/perf -C tools/perf install-bin
the resulting binary:
[acme@jouet linux]$
[acme@jouet linux]$ ls -la ~/bin/perf
-rwxr-xr-x. 2 acme acme 131689136 Dec 2 12:31 /home/acme/bin/perf
[acme@jouet linux]$ ls -lah ~/bin/perf
-rwxr-xr-x. 2 acme acme 126M Dec 2 12:31 /home/acme/bin/perf
[acme@jouet linux]$
Huge, after stripping it:
[acme@jouet linux]$ ls -la /tmp/perf
-rwxr-xr-x. 1 root root 76759056 Dec 2 12:33 /tmp/perf
[acme@jouet linux]$ ls -lah /tmp/perf
-rwxr-xr-x. 1 root root 74M Dec 2 12:33 /tmp/perf
[acme@jouet linux]$
Still huge :-\
Ok, this needs explicitely enabling, but then, for distros, if we want
this feature to be enabled...
I think we should try to help distributions to ship a basic perf binary
in a base package that doesn't brings many libraries, like was done for
the gtk UI, and also we should start providing RPM specfiles and debian
(and others, hopefully contributed by other people with interest in
other distros), to help in getting a sane package split, i.e. want
llvm/bpf? install the 'perf-ebpf' rpm/deb/whatever package and incur in
these costs.
But being a n00b on llvm/clang libraries, etc, my question goes back to:
can we have this using a libllvm.so or libclang.so dynamic libraries?
See this, out of hand :-\ Tell me I'm doing something wrong :-)
[acme@jouet linux]$ cat /etc/fedora-release
Fedora release 25 (Twenty Five)
[acme@jouet linux]$ rpm -qa | egrep llvm\|clang
llvm-libs-3.8.0-1.fc25.x86_64
[acme@jouet linux]$
[acme@jouet linux]$ nm ~/bin/perf | grep -i clang | wc -l
204757
[acme@jouet linux]$ nm ~/bin/perf | grep -i llvm | wc -l
234036
[acme@jouet linux]$ nm ~/bin/perf | grep -i clang | tail
00000000011741ba t
_ZZZN5clang7CodeGen15CodeGenFunction20EmitOMPTaskDirectiveERKNS_16OMPTaskDirectiveEENKUlRS1_E_clES5_ENKUlvE_clEv
0000000001169fee t
_ZZZN5clang7CodeGen15CodeGenFunction25EmitOMPFirstprivateClauseERKNS_22OMPExecutableDirectiveERNS1_15OMPPrivateScopeEENKUlvE_clEvENKUlNS0_7AddressES8_E_clES8_S8_
00000000038b83e0 r
_ZZZN5clang9ASTReader24FindExternalLexicalDeclsEPKNS_11DeclContextEN4llvm12function_refIFbNS_4Decl4KindEEEERNS4_15SmallVectorImplIPS6_EEENKUlPNS_13serialization10ModuleFileENS4_8ArrayRefINS4_7support6detail31packed_endian_specific_integralIjLNSI_10endiannessE2ELm1EEEEEE_clESG_SN_E19__PRETTY_FUNCTION__
0000000003934140 r
_ZZZN5clang9ASTWriter12WriteASTCoreERNS_4SemaEN4llvm9StringRefERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_6ModuleEENKUljbE0_clEjbE19__PRETTY_FUNCTION__
00000000039319e0 r
_ZZZN5clang9ASTWriter12WriteASTCoreERNS_4SemaEN4llvm9StringRefERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPNS_6ModuleEENKUlPNS_4DeclENS_13serialization17PredefinedDeclIDsEE_clESG_SI_E19__PRETTY_FUNCTION__
000000000393b700 r
_ZZZN5clang9ASTWriter17GetOrCreateTypeIDENS_8QualTypeEENKUlS1_E_clES1_E19__PRETTY_FUNCTION__
000000000393b880 r
_ZZZNK5clang9ASTWriter9getTypeIDENS_8QualTypeEENKUlS1_E_clES1_E19__PRETTY_FUNCTION__
0000000002176480 t
_ZZZZN12_GLOBAL__N_19ASTDumper11dumpLookupsEPKN5clang11DeclContextEbENKUlvE_clEvENKUlvE_clEvENKUlvE_clEv
000000000144ef0a t
_ZZZZN5clang7CodeGen15CGOpenMPRuntime13emitReductionERNS0_15CodeGenFunctionENS_14SourceLocationEN4llvm8ArrayRefIPKNS_4ExprEEESA_SA_SA_bbENKUlS3_S9_S9_S9_E1_clES3_S9_S9_S9_ENKUlNS0_6RValueEE_clESC_ENKUlvE_clEv
000000000217640c t
_ZZZZZN12_GLOBAL__N_19ASTDumper11dumpLookupsEPKN5clang11DeclContextEbENKUlvE_clEvENKUlvE_clEvENKUlvE_clEvENKUlPNS1_4DeclEE_clES9_
[acme@jouet linux]$
Thanks,
- Arnaldo
next prev parent reply other threads:[~2016-12-02 15:45 UTC|newest]
Thread overview: 76+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-26 7:03 [PATCH v3 00/30] perf clang: Builtin clang and perfhook support Wang Nan
2016-11-26 7:03 ` [PATCH v3 01/30] tools lib bpf: Add missing BPF functions Wang Nan
2016-11-26 17:10 ` Alexei Starovoitov
2016-12-02 10:37 ` [tip:perf/core] " tip-bot for Wang Nan
2016-11-26 7:03 ` [PATCH v3 02/30] tools lib bpf: Add private field for bpf_object Wang Nan
2016-11-26 17:11 ` Alexei Starovoitov
2016-12-02 10:37 ` [tip:perf/core] " tip-bot for Wang Nan
2016-11-26 7:03 ` [PATCH v3 03/30] tools lib bpf: Retrive bpf_map through offset of bpf_map_def Wang Nan
2016-11-26 17:12 ` Alexei Starovoitov
2016-12-02 10:38 ` [tip:perf/core] " tip-bot for Wang Nan
2016-11-26 7:03 ` [PATCH v3 04/30] perf tools: Introduce perf hooks Wang Nan
2016-12-02 10:38 ` [tip:perf/core] " tip-bot for Wang Nan
2016-11-26 7:03 ` [PATCH v3 05/30] perf tools: Pass context to perf hook functions Wang Nan
2016-12-06 8:21 ` [tip:perf/core] " tip-bot for Wang Nan
2016-11-26 7:03 ` [PATCH v3 06/30] perf llvm: Extract helpers in llvm-utils.c Wang Nan
2016-12-06 8:21 ` [tip:perf/core] " tip-bot for Wang Nan
2016-11-26 7:03 ` [PATCH v3 07/30] tools build: Add feature detection for LLVM Wang Nan
2016-12-06 8:22 ` [tip:perf/core] " tip-bot for Wang Nan
2016-11-26 7:03 ` [PATCH v3 08/30] tools build: Add feature detection for clang Wang Nan
2016-12-06 8:22 ` [tip:perf/core] " tip-bot for Wang Nan
2016-11-26 7:03 ` [PATCH v3 09/30] perf build: Add clang and llvm compile and linking support Wang Nan
2016-12-06 8:23 ` [tip:perf/core] " tip-bot for Wang Nan
2016-11-26 7:03 ` [PATCH v3 10/30] perf clang: Add builtin clang support ant test case Wang Nan
2016-11-26 17:17 ` Alexei Starovoitov
2016-11-28 7:41 ` Wangnan (F)
2016-12-02 15:44 ` Arnaldo Carvalho de Melo [this message]
2016-12-05 2:36 ` Wangnan (F)
2016-12-05 4:41 ` Wangnan (F)
2017-01-17 13:38 ` Arnaldo Carvalho de Melo
2016-12-05 16:51 ` Alexei Starovoitov
2016-12-05 21:02 ` Arnaldo Carvalho de Melo
2016-12-05 21:48 ` Arnaldo Carvalho de Melo
2016-12-06 2:07 ` Wangnan (F)
2016-12-06 13:43 ` Arnaldo Carvalho de Melo
2016-12-06 19:19 ` Arnaldo Carvalho de Melo
2016-12-06 21:02 ` Arnaldo Carvalho de Melo
2016-12-06 8:23 ` [tip:perf/core] " tip-bot for Wang Nan
2016-11-26 7:03 ` [PATCH v3 11/30] perf clang: Use real file system for #include Wang Nan
2016-12-06 8:24 ` [tip:perf/core] " tip-bot for Wang Nan
2016-11-26 7:03 ` [PATCH v3 12/30] perf clang: Allow passing CFLAGS to builtin clang Wang Nan
2016-12-06 8:25 ` [tip:perf/core] " tip-bot for Wang Nan
2016-11-26 7:03 ` [PATCH v3 13/30] perf clang: Update test case to use real BPF script Wang Nan
2016-12-06 8:25 ` [tip:perf/core] " tip-bot for Wang Nan
2016-11-26 7:03 ` [PATCH v3 14/30] perf clang: Support compile IR to BPF object and add testcase Wang Nan
2016-11-26 17:25 ` Alexei Starovoitov
2016-11-28 6:32 ` Wangnan (F)
2016-11-28 10:31 ` Wangnan (F)
2016-11-28 19:33 ` Alexei Starovoitov
2016-12-06 8:26 ` [tip:perf/core] " tip-bot for Wang Nan
2016-11-26 7:03 ` [PATCH v3 15/30] perf clang: Compile BPF script use builtin clang support Wang Nan
2016-12-06 8:26 ` [tip:perf/core] perf clang: Compile BPF script using " tip-bot for Wang Nan
2016-11-26 7:03 ` [PATCH v3 16/30] perf clang: Pass full path to builtin clang Wang Nan
2016-11-26 7:03 ` [PATCH v3 17/30] perf clang: Pass CFLAGS " Wang Nan
2016-11-26 7:03 ` [PATCH v3 18/30] perf clang jit: Wrap llvm::Module using PerfModule Wang Nan
2016-11-26 7:03 ` [PATCH v3 19/30] perf clang jit: Insignt BPF and JIT functions in a Module Wang Nan
2016-11-26 17:32 ` Alexei Starovoitov
2016-11-26 7:03 ` [PATCH v3 20/30] perf clang jit: add PerfModule::doJIT to JIT perfhook functions Wang Nan
2016-11-26 17:29 ` Alexei Starovoitov
2016-11-28 6:42 ` Wangnan (F)
2016-11-26 7:03 ` [PATCH v3 21/30] perf clang jit: Export functions for jitted code Wang Nan
2016-11-26 7:03 ` [PATCH v3 22/30] perf clang jit: Actually JIT and hook in bpf loader Wang Nan
2016-11-26 7:03 ` [PATCH v3 23/30] perf clang jit: Collect the lowest address in maps section as map_base Wang Nan
2016-11-26 7:03 ` [PATCH v3 24/30] perf clang jit: Retrive fd of BPF map from its offset Wang Nan
2016-11-26 7:03 ` [PATCH v3 25/30] perf clang jit: Allow jitted perf hook access BPF maps Wang Nan
2016-11-26 17:09 ` Alexei Starovoitov
2016-11-26 7:03 ` [PATCH v3 26/30] perf clang: Link BPF functions declaration into perf Wang Nan
2016-11-26 17:40 ` Alexei Starovoitov
2016-11-30 16:12 ` Arnaldo Carvalho de Melo
2016-12-01 1:56 ` [PATCH v3 26/30 - cleanup] " Wang Nan
2016-11-26 7:03 ` [PATCH v3 27/30] perf clang: Declare BPF functions for BPF scripts automatically Wang Nan
2016-11-26 7:03 ` [PATCH v3 28/30] perf clang: Include helpers to BPF scripts Wang Nan
2016-11-26 7:03 ` [PATCH v3 29/30] perf clang builtin: Define hook helpers by default Wang Nan
2016-11-26 7:03 ` [PATCH v3 30/30] perf clang jit: Export getpid() to perf hook Wang Nan
-- strict thread matches above, loose matches on Subject: below --
2016-12-07 1:57 [PATCH v3 10/30] perf clang: Add builtin clang support ant test case Alexei Starovoitov
2017-01-17 18:27 Alexei Starovoitov
2017-01-17 19:04 ` Arnaldo Carvalho de Melo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20161202154440.GB5931@redhat.com \
--to=acme@redhat.com \
--cc=acme@kernel.org \
--cc=ast@fb.com \
--cc=hekuang@huawei.com \
--cc=joe@ovn.org \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lizefan@huawei.com \
--cc=mingo@kernel.org \
--cc=pi3orama@163.com \
--cc=wangnan0@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).