From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Deepak Kumar Mishra <deepakkumar.mishra@arm.com>
Cc: dwarves@vger.kernel.org, qais.yousef@arm.com,
Andrii Nakryiko <andrii.nakryiko@gmail.com>,
Jiri Olsa <jolsa@kernel.org>
Subject: Re: [PATCH v2 1/2] CMakeLists.txt: enable SHARED and STATIC lib creation
Date: Thu, 10 Jun 2021 14:31:33 -0300 [thread overview]
Message-ID: <YMJMdQvCWHd5J0M1@kernel.org> (raw)
In-Reply-To: <70cb7cb534af9850dc5fe3c4b9f4366ce7dc6316.1623091959.git.deepakkumar.mishra@arm.com>
Em Tue, Jun 08, 2021 at 12:50:13AM +0530, Deepak Kumar Mishra escreveu:
> CMakeLists.txt does not allow creation of static library and link applications
> accordingly.
>
> Creation of SHARED and STATIC should be allowed using -DBUILD_SHARED_LIBS
> If -DBUILD_SHARED_LIBS option is not supplied, CMakeLists.txt sets it to ON.
>
> Ex:
> cmake -D__LIB=lib -DBUILD_SHARED_LIBS=OFF ..
> cmake -D__LIB=lib -DBUILD_SHARED_LIBS=ON ..
Had to do some fixups due to a previous patch touching CMakeLists.txt,
please check below.
I tested it and added some performance notes.
Thanks!
- Arnaldo
commit aa2027708659f172780f85698f14303c7de6a1d2
Author: Deepak Kumar Mishra <deepakkumar.mishra@arm.com>
Date: Tue Jun 8 00:50:13 2021 +0530
CMakeLists.txt: Enable SHARED and STATIC lib creation
CMakeLists.txt does not allow creation of static library and link applications
accordingly.
Creation of SHARED and STATIC should be allowed using -DBUILD_SHARED_LIBS
If -DBUILD_SHARED_LIBS option is not supplied, CMakeLists.txt sets it to ON.
Ex:
$ cmake -D__LIB=lib -DBUILD_SHARED_LIBS=OFF ..
$ cmake -D__LIB=lib -DBUILD_SHARED_LIBS=ON ..
Committer testing:
I had to fixup it a bit due to changes related to allowing building with
libbpf-devel, test resuts:
With the default, i.e. creating libdwarves.so and using it:
⬢[acme@toolbox pahole]$ rm -f vmlinux.btf ; perf stat -r5 pahole -j vmlinux.btf vmlinux && perf stat -r5 btfdiff vmlinux vmlinux.btf
Performance counter stats for 'pahole -j vmlinux.btf vmlinux' (5 runs):
8,612.69 msec task-clock:u # 1.014 CPUs utilized ( +- 0.68% )
0 context-switches:u # 0.000 /sec
0 cpu-migrations:u # 0.000 /sec
775,702 page-faults:u # 91.330 K/sec ( +- 0.00% )
33,720,048,514 cycles:u # 3.970 GHz ( +- 0.38% ) (83.33%)
689,752,139 stalled-cycles-frontend:u # 2.05% frontend cycles idle ( +- 2.57% ) (83.33%)
5,070,723,369 stalled-cycles-backend:u # 15.04% backend cycles idle ( +- 1.20% ) (83.34%)
77,270,640,084 instructions:u # 2.29 insn per cycle
# 0.07 stalled cycles per insn ( +- 0.01% ) (83.34%)
18,164,028,242 branches:u # 2.139 G/sec ( +- 0.04% ) (83.33%)
150,194,338 branch-misses:u # 0.83% of all branches ( +- 0.17% ) (83.32%)
8.4979 +- 0.0590 seconds time elapsed ( +- 0.69% )
Performance counter stats for 'btfdiff vmlinux vmlinux.btf' (5 runs):
7,001.79 msec task-clock:u # 1.006 CPUs utilized ( +- 1.02% )
0 context-switches:u # 0.000 /sec
0 cpu-migrations:u # 0.000 /sec
727,980 page-faults:u # 104.736 K/sec ( +- 0.00% )
26,912,307,448 cycles:u # 3.872 GHz ( +- 0.31% ) (83.33%)
509,467,882 stalled-cycles-frontend:u # 1.90% frontend cycles idle ( +- 2.44% ) (83.33%)
3,602,777,263 stalled-cycles-backend:u # 13.43% backend cycles idle ( +- 1.34% ) (83.32%)
66,192,815,701 instructions:u # 2.47 insn per cycle
# 0.06 stalled cycles per insn ( +- 0.01% ) (83.35%)
15,753,663,095 branches:u # 2.267 G/sec ( +- 0.02% ) (83.35%)
98,345,696 branch-misses:u # 0.62% of all branches ( +- 0.14% ) (83.34%)
6.9586 +- 0.0720 seconds time elapsed ( +- 1.03% )
⬢[acme@toolbox pahole]$
Then building with:
⬢[acme@toolbox pahole]$ rm -rf build ; mkdir build ; cd build ; cmake -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release .. ; cd .. ; make -C build
⬢[acme@toolbox pahole]$ ldd build/pahole
linux-vdso.so.1 (0x00007ffff0172000)
libdw.so.1 => /lib64/libdw.so.1 (0x00007fdd3905d000)
libelf.so.1 => /lib64/libelf.so.1 (0x00007fdd39042000)
libz.so.1 => /lib64/libz.so.1 (0x00007fdd39028000)
libc.so.6 => /lib64/libc.so.6 (0x00007fdd38e59000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fdd38e52000)
libzstd.so.1 => /lib64/libzstd.so.1 (0x00007fdd38d5c000)
liblzma.so.5 => /lib64/liblzma.so.5 (0x00007fdd38d2e000)
libbz2.so.1 => /lib64/libbz2.so.1 (0x00007fdd38d1b000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fdd38cfa000)
/lib64/ld-linux-x86-64.so.2 (0x00007fdd390ff000)
⬢[acme@toolbox pahole]$
We get some performance improvement:
- First is encoding detached BTF, i.e. read DWARF, generate BTF.
- Second is about loading both DWARF and BTF, producing output for both, that must match.
⬢[acme@toolbox pahole]$ rm -f vmlinux.btf ; perf stat -r5 pahole -j vmlinux.btf vmlinux && perf stat -r5 btfdiff vmlinux vmlinux.btf
Performance counter stats for 'pahole -j vmlinux.btf vmlinux' (5 runs):
8,566.34 msec task-clock:u # 1.025 CPUs utilized ( +- 0.85% )
0 context-switches:u # 0.000 /sec
0 cpu-migrations:u # 0.000 /sec
775,685 page-faults:u # 92.865 K/sec ( +- 0.00% )
33,333,991,512 cycles:u # 3.991 GHz ( +- 0.23% ) (83.34%)
799,187,919 stalled-cycles-frontend:u # 2.42% frontend cycles idle ( +- 1.95% ) (83.33%)
5,157,722,792 stalled-cycles-backend:u # 15.61% backend cycles idle ( +- 1.25% ) (83.33%)
76,273,972,066 instructions:u # 2.31 insn per cycle
# 0.07 stalled cycles per insn ( +- 0.03% ) (83.33%)
17,843,388,470 branches:u # 2.136 G/sec ( +- 0.05% ) (83.33%)
150,507,690 branch-misses:u # 0.84% of all branches ( +- 0.46% ) (83.33%)
8.3561 +- 0.0729 seconds time elapsed ( +- 0.87% )
Performance counter stats for 'btfdiff vmlinux vmlinux.btf' (5 runs):
6,685.39 msec task-clock:u # 0.986 CPUs utilized ( +- 0.54% )
0 context-switches:u # 0.000 /sec
0 cpu-migrations:u # 0.000 /sec
727,931 page-faults:u # 107.475 K/sec ( +- 0.00% )
26,149,371,139 cycles:u # 3.861 GHz ( +- 0.15% ) (83.36%)
525,918,808 stalled-cycles-frontend:u # 2.00% frontend cycles idle ( +- 2.96% ) (83.33%)
3,547,589,546 stalled-cycles-backend:u # 13.51% backend cycles idle ( +- 1.28% ) (83.35%)
65,389,507,702 instructions:u # 2.49 insn per cycle
# 0.06 stalled cycles per insn ( +- 0.03% ) (83.29%)
15,553,175,605 branches:u # 2.296 G/sec ( +- 0.02% ) (83.34%)
97,812,971 branch-misses:u # 0.63% of all branches ( +- 0.23% ) (83.34%)
6.7784 +- 0.0359 seconds time elapsed ( +- 0.53% )
⬢[acme@toolbox pahole]$
Signed-off-by: Deepak Kumar Mishra <deepakkumar.mishra@arm.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Qais Yousef <qais.yousef@arm.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index df16b8ec3031f3e6..669ea59167c7ef65 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -47,6 +47,11 @@ endif (NOT CMAKE_BUILD_TYPE)
set(CMAKE_C_FLAGS_DEBUG "-Wall -Werror -ggdb -O0")
set(CMAKE_C_FLAGS_RELEASE "-Wall -O2")
+if (NOT DEFINED BUILD_SHARED_LIBS)
+ set (BUILD_SHARED_LIBS ON)
+ message(STATUS "Setting BUILD_SHARED_LIBS = ${BUILD_SHARED_LIBS}")
+endif (NOT DEFINED BUILD_SHARED_LIBS)
+
# Just for grepping, DWARVES_VERSION isn't used anywhere anymore
# add_definitions(-D_GNU_SOURCE -DDWARVES_VERSION="v1.21")
add_definitions(-D_GNU_SOURCE -DDWARVES_MAJOR_VERSION=1)
@@ -111,18 +116,18 @@ set(dwarves_LIB_SRCS dwarves.c dwarves_fprintf.c gobuffer.c strings.c
if (NOT LIBBPF_FOUND)
list(APPEND dwarves_LIB_SRCS $<TARGET_OBJECTS:bpf>)
endif()
-add_library(dwarves SHARED ${dwarves_LIB_SRCS})
+add_library(dwarves ${dwarves_LIB_SRCS})
set_target_properties(dwarves PROPERTIES VERSION 1.0.0 SOVERSION 1)
set_target_properties(dwarves PROPERTIES INTERFACE_LINK_LIBRARIES "")
target_link_libraries(dwarves ${DWARF_LIBRARIES} ${ZLIB_LIBRARIES} ${LIBBPF_LIBRARIES})
set(dwarves_emit_LIB_SRCS dwarves_emit.c)
-add_library(dwarves_emit SHARED ${dwarves_emit_LIB_SRCS})
+add_library(dwarves_emit ${dwarves_emit_LIB_SRCS})
set_target_properties(dwarves_emit PROPERTIES VERSION 1.0.0 SOVERSION 1)
target_link_libraries(dwarves_emit dwarves)
set(dwarves_reorganize_LIB_SRCS dwarves_reorganize.c)
-add_library(dwarves_reorganize SHARED ${dwarves_reorganize_LIB_SRCS})
+add_library(dwarves_reorganize ${dwarves_reorganize_LIB_SRCS})
set_target_properties(dwarves_reorganize PROPERTIES VERSION 1.0.0 SOVERSION 1)
target_link_libraries(dwarves_reorganize dwarves)
@@ -169,8 +174,8 @@ target_link_libraries(syscse dwarves)
install(TARGETS codiff ctracer dtagnames pahole pdwtags
pfunct pglobal prefcnt scncopy syscse RUNTIME DESTINATION
${CMAKE_INSTALL_PREFIX}/bin)
-install(TARGETS dwarves LIBRARY DESTINATION ${LIB_INSTALL_DIR})
-install(TARGETS dwarves dwarves_emit dwarves_reorganize LIBRARY DESTINATION ${LIB_INSTALL_DIR})
+install(TARGETS dwarves LIBRARY DESTINATION ${LIB_INSTALL_DIR} ARCHIVE DESTINATION ${LIB_INSTALL_DIR})
+install(TARGETS dwarves dwarves_emit dwarves_reorganize LIBRARY DESTINATION ${LIB_INSTALL_DIR} ARCHIVE DESTINATION ${LIB_INSTALL_DIR})
install(FILES dwarves.h dwarves_emit.h dwarves_reorganize.h
dutil.h gobuffer.h list.h rbtree.h pahole_strings.h
btf_encoder.h config.h ctf_encoder.h ctf.h
next prev parent reply other threads:[~2021-06-10 17:31 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-07 19:20 [PATCH v2 0/2] dwarves: enable-SHARED-and-STATIC-lib-creation Deepak Kumar Mishra
2021-06-07 19:20 ` [PATCH v2 1/2] CMakeLists.txt: enable SHARED and STATIC lib creation Deepak Kumar Mishra
2021-06-10 17:31 ` Arnaldo Carvalho de Melo [this message]
2021-06-11 19:34 ` Andrii Nakryiko
2021-06-11 19:54 ` Andrii Nakryiko
2021-06-11 20:00 ` Arnaldo Carvalho de Melo
2021-06-11 20:08 ` Andrii Nakryiko
2021-06-11 22:17 ` Luca Boccassi
2021-06-11 22:20 ` Luca Boccassi
2021-06-11 22:45 ` Luca Boccassi
2021-06-11 22:53 ` Dominique Martinet
2021-06-11 23:06 ` Dominique Martinet
2021-06-11 23:07 ` Luca Boccassi
2021-06-11 23:43 ` Andrii Nakryiko
2021-06-07 19:20 ` [PATCH v2 2/2] README: add documentation for -DBUILD_SHARED_LIBS Deepak Kumar Mishra
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=YMJMdQvCWHd5J0M1@kernel.org \
--to=acme@kernel.org \
--cc=andrii.nakryiko@gmail.com \
--cc=deepakkumar.mishra@arm.com \
--cc=dwarves@vger.kernel.org \
--cc=jolsa@kernel.org \
--cc=qais.yousef@arm.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.