hard-float linker check benchmarks
Steve McIntyre
steve.mcintyre at linaro.org
Mon Oct 17 13:54:44 UTC 2011
Hey folks,
My first prototype changes to ld.so (see the attached patch) seem to
work ok, and my code will now complain (and fail) appropriately if you
try to mix soft-float ABI and hard-float ABI binaries in the same
process. I think the working code for the patch itself is clean
enough, but at the moment it's hacked in and I'm looking for a cleaner
way to integrate it.
In the meantime, I've been benchmarking the cost of checking each of
the binaries at startup. I've got a script that does:
* flush caches
* time ld.so $binary --version
n times in a loop, and times each run so I can calculate the mean and
standard deviation. I've tested four different programs (ls, emacs,
iceweasel and kcalc) to give a spread of sizes. Full figures below.
Quick summary: the extra work of checking does not seem to have any
noticeable bad effect on program startup. In some cases it even seems
to make things faster! But in all cases the differences between
"check" and "nocheck" are well within the standard deviation from the
testing, so I'm happy.
I've measured the effects using Debian armel and armhf chroots on my
Panda board, but the specific versions of software and the target CPU
version vary armel/armhf so please don't compare the numbers in that
direction!
Debian armel (v4t, soft-float ABI), using --version:
====================================================
Test using /bin/ls --version, running 100 times
Results from /tmp/time.2592, 100 runs of "ls" using "check":
Total times real 35.20 user 0.00 sys 0.00
Mean times real 0.352 user 0.000 sys 0.000
stddev real 0.068 user 0.000 sys 0.000
Test using /bin/ls --version, running 100 times
Results from /tmp/time.3305, 100 runs of "ls" using "nocheck":
Total times real 35.27 user 0.00 sys 0.00
Mean times real 0.353 user 0.000 sys 0.000
stddev real 0.069 user 0.000 sys 0.000
Test using /usr/bin/emacs23-x --version, running 100 times
Results from /tmp/time.5448, 100 runs of "emacs23-x" using "check":
Total times real 519.23 user 1.32 sys 3.20
Mean times real 5.192 user 0.013 sys 0.032
stddev real 0.430 user 0.015 sys 0.012
Test using /usr/bin/emacs23-x --version, running 100 times
Results from /tmp/time.6166, 100 runs of "emacs23-x" using "nocheck":
Total times real 507.24 user 1.31 sys 3.17
Mean times real 5.072 user 0.013 sys 0.032
stddev real 0.302 user 0.012 sys 0.010
Test using /usr/lib/iceweasel/firefox-bin --version, running 100 times
Results from /tmp/time.6880, 100 runs of "/usr/lib/iceweasel/firefox-bin" using "check":
Total times real 668.45 user 1.69 sys 6.29
Mean times real 6.684 user 0.017 sys 0.063
stddev real 0.692 user 0.018 sys 0.019
Test using /usr/lib/iceweasel/firefox-bin --version, running 100 times
Results from /tmp/time.7696, 100 runs of "/usr/lib/iceweasel/firefox-bin" using "nocheck":
Total times real 651.27 user 1.73 sys 6.27
Mean times real 6.513 user 0.017 sys 0.063
stddev real 0.557 user 0.020 sys 0.019
Test using /usr/bin/kcalc --version, running 100 times
Results from /tmp/time.4018, 100 runs of "kcalc" using "check":
Total times real 1249.40 user 5.77 sys 7.41
Mean times real 12.494 user 0.058 sys 0.074
stddev real 0.887 user 0.022 sys 0.021
Test using /usr/bin/kcalc --version, running 100 times
Results from /tmp/time.4733, 100 runs of "kcalc" using "nocheck":
Total times real 1240.01 user 5.29 sys 7.89
Mean times real 12.400 user 0.053 sys 0.079
stddev real 0.786 user 0.020 sys 0.019
Debian armhf (v7, hard-float ABI), using --version:
===================================================
Results from /tmp/time.7128, 100 runs of "ls" using "check":
Total times real 26.52 user 0.00 sys 0.00
Mean times real 0.265 user 0.000 sys 0.000
stddev real 0.058 user 0.000 sys 0.000
Test using /bin/ls --version, running 100 times
Results from /tmp/time.7843, 100 runs of "ls" using "nocheck":
Total times real 24.74 user 0.00 sys 0.00
Mean times real 0.247 user 0.000 sys 0.000
stddev real 0.038 user 0.000 sys 0.000
Test using /usr/bin/emacs23-x --version, running 100 times
Results from /tmp/time.9991, 100 runs of "emacs23-x" using "check":
Total times real 548.08 user 2.26 sys 2.40
Mean times real 5.481 user 0.023 sys 0.024
stddev real 0.630 user 0.017 sys 0.015
Test using /usr/bin/emacs23-x --version, running 100 times
Results from /tmp/time.10705, 100 runs of "emacs23-x" using "nocheck":
Total times real 549.29 user 2.15 sys 2.43
Mean times real 5.493 user 0.022 sys 0.024
stddev real 0.600 user 0.019 sys 0.016
Test using /usr/lib/iceweasel/firefox-bin --version, running 100 times
Results from /tmp/time.11423, 100 runs of "/usr/lib/iceweasel/firefox-bin" using "check":
Total times real 620.18 user 1.75 sys 5.98
Mean times real 6.202 user 0.018 sys 0.060
stddev real 0.682 user 0.019 sys 0.019
Test using /usr/lib/iceweasel/firefox-bin --version, running 100 times
Results from /tmp/time.12237, 100 runs of "/usr/lib/iceweasel/firefox-bin" using "nocheck":
Total times real 636.31 user 1.77 sys 5.95
Mean times real 6.363 user 0.018 sys 0.060
stddev real 0.766 user 0.018 sys 0.020
Test using /usr/bin/kcalc --version, running 100 times
Results from /tmp/time.8556, 100 runs of "kcalc" using "check":
Total times real 1338.36 user 7.00 sys 5.41
Mean times real 13.384 user 0.070 sys 0.054
stddev real 1.223 user 0.031 sys 0.029
Test using /usr/bin/kcalc --version, running 100 times
Results from /tmp/time.9275, 100 runs of "kcalc" using "nocheck":
Total times real 1345.21 user 7.46 sys 5.02
Mean times real 13.452 user 0.075 sys 0.050
stddev real 1.197 user 0.031 sys 0.030
Cheers,
--
Steve McIntyre steve.mcintyre at linaro.org
<http://www.linaro.org/> Linaro.org | Open source software for ARM SoCs
-------------- next part --------------
A non-text attachment was scrubbed...
Name: check.patch
Type: text/x-diff
Size: 7415 bytes
Desc: not available
URL: <http://lists.linaro.org/pipermail/cross-distro/attachments/20111017/7bf99f9a/attachment.patch>
More information about the cross-distro
mailing list