|
Message-ID: <alpine.LNX.2.11.1505271551280.19145@monopod.intra.ispras.ru> Date: Wed, 27 May 2015 16:01:50 +0300 (MSK) From: Alexander Monakov <amonakov@...ras.ru> To: musl@...ts.openwall.com Subject: Re: Question re: dynamic linking in musl On Wed, 27 May 2015, Alex Dowad wrote: > > Can you also provide exact figures? For example your callgrind logs? Or > > just > > 'time' statistics for executables that spend much time in the dynamic > > linker. > Callgrind data attached. Oh. The profile makes it evident that most of the libraries lack .gnu.hash, and the lookup is almost always using SysV lookup. With many dependencies SysV lookup is slower: in my testing with Clang/LLVM I got something like 420 ms (compared to 240 ms unpatched or 110 ms patched musl with .gnu.hash lookup). I'm not familiar with Alpine. Hopefully someone else can chime in whether .gnu.hash is deliberately disabled. (since raw callgrind log is not readable, I'm pasting callgrind_annotate'd version of your data below) Alexander -------------------------------------------------------------------------------- Profile data file '/tmp/callgrind.out.8354' (creator: callgrind-3.10.1) -------------------------------------------------------------------------------- I1 cache: D1 cache: LL cache: Timerange: Basic block 0 - 2937079 Trigger: Program termination Profiled target: rrdtool update test.rrd N:0:1:U (PID 8354, part 1) Events recorded: Ir Events shown: Ir Event sort order: Ir Thresholds: 99 Include dirs: User annotated: Auto-annotation: off -------------------------------------------------------------------------------- Ir -------------------------------------------------------------------------------- 13,149,006 PROGRAM TOTALS -------------------------------------------------------------------------------- Ir file:function -------------------------------------------------------------------------------- 4,483,216 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/ldso/dynlink.c:sysv_lookup [/lib/ld-musl-i386.so.1] 3,678,465 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/string/strcmp.c:strcmp [/lib/ld-musl-i386.so.1] 2,002,146 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/ldso/dynlink.c:find_sym [/lib/ld-musl-i386.so.1] 823,546 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/ldso/dynlink.c:sysv_hash [/lib/ld-musl-i386.so.1] 779,623 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/ldso/dynlink.c:do_relocs [/lib/ld-musl-i386.so.1] 351,069 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/ldso/dynlink.c:gnu_lookup [/lib/ld-musl-i386.so.1] 145,380 ???:0x00011f38 [/lib/ld-musl-i386.so.1] 56,370 ???:0x0002ad86 [/usr/lib/libgobject-2.0.so.0.4200.0] 48,357 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/stdio/vfprintf.c:printf_core [/lib/ld-musl-i386.so.1] 45,725 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/ldso/dynlink.c:load_library [/lib/ld-musl-i386.so.1] 40,118 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/ldso/dynlink.c:decode_vec [/lib/ld-musl-i386.so.1] 35,294 ???:0x0002ad34 [/usr/lib/libgobject-2.0.so.0.4200.0] 35,056 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/string/i386/memset.s:0x0004c919 [/lib/ld-musl-i386.so.1] 30,486 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/malloc/calloc.c:calloc [/lib/ld-musl-i386.so.1] 29,919 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/malloc/malloc.c:free [/lib/ld-musl-i386.so.1] 28,151 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/malloc/malloc.c:malloc [/lib/ld-musl-i386.so.1] 27,275 ???:g_str_hash [/usr/lib/libglib-2.0.so.0.4200.0] 26,987 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/string/strncmp.c:strncmp [/lib/ld-musl-i386.so.1] 20,900 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/string/strlen.c:strlen [/lib/ld-musl-i386.so.1] 20,638 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/string/strchrnul.c:strchrnul [/lib/ld-musl-i386.so.1] 20,052 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/stdio/fwrite.c:__fwritex [/lib/ld-musl-i386.so.1] 20,046 ???:0x00032dd4 [/usr/lib/libglib-2.0.so.0.4200.0] 15,075 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/ldso/dynlink.c:map_library [/lib/ld-musl-i386.so.1] 13,535 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/string/strcspn.c:strcspn [/lib/ld-musl-i386.so.1] 13,074 ???:g_value_register_transform_func [/usr/lib/libgobject-2.0.so.0.4200.0] 12,988 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/string/i386/memcpy.s:0x0004c3ce [/lib/ld-musl-i386.so.1] 12,720 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/stdio/vfprintf.c:pad [/lib/ld-musl-i386.so.1] 11,908 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/string/memchr.c:memchr [/lib/ld-musl-i386.so.1] 11,092 ???:0x00008060 [/usr/lib/libgobject-2.0.so.0.4200.0] 10,941 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/ldso/dynlink.c:decode_dyn [/lib/ld-musl-i386.so.1] 9,784 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/malloc/malloc.c:trim [/lib/ld-musl-i386.so.1] 9,192 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/env/getenv.c:getenv [/lib/ld-musl-i386.so.1] 8,912 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/stdio/vfprintf.c:out [/lib/ld-musl-i386.so.1] 8,593 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/malloc/malloc.c:unbin [/lib/ld-musl-i386.so.1] 8,060 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/malloc/malloc.c:bin_index [/lib/ld-musl-i386.so.1] 7,244 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/string/i386/memmove.s:0x0004c891 [/lib/ld-musl-i386.so.1] 6,960 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/stdio/vsnprintf.c:vsnprintf [/lib/ld-musl-i386.so.1] 6,579 ???:0x000270c4 [/usr/lib/libgobject-2.0.so.0.4200.0] 6,484 ???:0x00032f3c [/usr/lib/libglib-2.0.so.0.4200.0] 6,422 ???:0x000330e7 [/usr/lib/libglib-2.0.so.0.4200.0] 6,339 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/ldso/dynlink.c:load_deps [/lib/ld-musl-i386.so.1] 6,312 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/string/strspn.c:strspn [/lib/ld-musl-i386.so.1] 6,171 ???:0x00050c1f [/usr/lib/libglib-2.0.so.0.4200.0] 6,080 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/stdio/vfprintf.c:vfprintf [/lib/ld-musl-i386.so.1] 5,743 ???:0x00024749 [/usr/lib/libgobject-2.0.so.0.4200.0] 5,574 ???:0x00082a88 [/usr/lib/libglib-2.0.so.0.4200.0] 5,529 ???:g_hash_table_insert [/usr/lib/libglib-2.0.so.0.4200.0] 5,165 ???:0x000244d1 [/usr/lib/libgobject-2.0.so.0.4200.0] 4,860 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/string/strchr.c:strchr [/lib/ld-musl-i386.so.1] 4,774 ???:0x0002ad02 [/usr/lib/libgobject-2.0.so.0.4200.0] 4,648 ???:g_hash_table_lookup [/usr/lib/libglib-2.0.so.0.4200.0] 3,816 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/stdio/vfprintf.c:pop_arg [/lib/ld-musl-i386.so.1] 3,790 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/string/stpcpy.c:stpcpy [/lib/ld-musl-i386.so.1] 3,709 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/internal/syscall_ret.c:__syscall_ret [/lib/ld-musl-i386.so.1] 3,634 ???:g_malloc0 [/usr/lib/libglib-2.0.so.0.4200.0] 3,619 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/internal/i386/syscall.s:0x0001cbd7 [/lib/ld-musl-i386.so.1] 3,592 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/ldso/dynlink.c:path_open.constprop.3 [/lib/ld-musl-i386.so.1] 3,441 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/string/memrchr.c:memrchr [/lib/ld-musl-i386.so.1] 3,386 /home/buildozer/aports/main/musl/src/musl-1.1.5/src/thread/pthread_rwlock_unlock.c:pthread_rwlock_unlock [/lib/ld-musl-i386.so.1]
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.