[OE-core] Confusing Performance Numbers

Richard Purdie richard.purdie at linuxfoundation.org
Tue Nov 12 15:31:48 UTC 2013


I had some ideas I decided to test out. Specifically:

a) stripping -native binaries before putting them in the sysroot
b) compiling -natives with -march=native
c) using hardlinks for sysroot_stage_dir

I was wondering if any of these could give a speedup to the build and if
so, whether it was a useful one. I ran this through our standard
performance script and the results were:

# Baseline
#./perfscript -c d8baa6c89b2f29e8ccc814c61dfd3b106af4fd65
#dax,(nobranch):d8baa6c89b2f29e8ccc814c61dfd3b106af4fd65,poky-10.0.0.final-391-gd8baa6c,38:41.96,11:01.73,5:02.05,4:34.08,0:11.63,0:08.04,0:01.76,25582020,4853400

# staging: Strip native binaries
#./perfscript -c 3e7cab95423c688d7db7355d86b461c1408381d0
#dax,(nobranch):3e7cab95423c688d7db7355d86b461c1408381d0,poky-10.0.0.final-392-g3e7cab9,39:07.56,11:02.05,4:46.99,4:33.99,0:11.63,0:09.40,0:01.73,25398400,4669464

#bitbake.conf: Add -march=native
#./perfscript -c d30b212c8975ad96a35ee6bace731b9823216570    
#dax,(nobranch):d30b212c8975ad96a35ee6bace731b9823216570,poky-10.0.0.final-393-gd30b212,39:16.88,11:41.67,5:05.63,4:31.88,0:11.61,0:07.94,0:01.70,25401000,4670192

# staging: Experiment with hardlinking for sysroot_stage_dir
#./perfscript -c 2feafbbd6338acd52577074db993da4e6d2de03f
#dax,master2:2feafbbd6338acd52577074db993da4e6d2de03f,poky-10.0.0.final-394-g2feafbb,39:49.88,11:11.63,4:41.16,4:38.85,0:11.40,0:07.90,0:01.73,23438704,4669984

so each time, the overall build time seems to rise slightly (first
number). The time to bitbake the kernel remains roughly the same (second
number), maybe the -march=native makes it take fractionally longer?
Stripping the binaries is worth about 200MB of disk use (with and
without rmwork). The hardlink patch is worth about 2GB disk use
(non-rmwork).

I also totalled the time in each task type, the output is below. The
numbers there are interesting as the strip patch seems to add 100s to
do_populate_sysroot. There doesn't seem to be a big difference in
compile time.

Its very hard to figure out what in these tests might be noise and what
if anything was a real gain (other than the disk usage improvements). I
suspect the hardlinking patch may be worthwhile, the other two are
perhaps not useful.

I often get asked what things we've tried so this should go some way to
documenting that and give people in insight into how we can test
changes.

Cheers,

Richard

baseline (master):
do_compile                 4062.83s
do_compile_kernelmodules   69.14s
do_compile_ptest_base      1.09s
do_configure               5455.18s
do_configure_ptest_base    1.11s
do_deploy                  13.34s
do_fetch                   20.4s
do_generate_toolchain_file 0.09s
do_install                 672.76s
do_install_locale          0.24s
do_install_ptest_base      0.72s
do_kernel_checkout         109.76s
do_kernel_configcheck      4.37s
do_kernel_configme         69.8s
do_kernel_link_vmlinux     0.09s
do_multilib_install        0.0s
do_package                 1136.39s
do_package_write_rpm       964.58s
do_packagedata             132.65s
do_patch                   96.29s
do_populate_lic            160.33s
do_populate_sysroot        490.19s
do_rootfs                  178.94s
do_sizecheck               0.08s
do_strip                   0.08s
do_uboot_mkimage           0.09s
do_unpack                  258.55s
do_validate_branches       18.69s
richard at dax:/media/build1/pokyperf/build-perf-test$ /home/richard/buildstats-tasktotals.py results-3e7cab9-20131112082932/buildstats-test1/core-image-sato-qemux86/201311120837/
do_compile                 4108.84s
do_compile_kernelmodules   69.34s
do_compile_ptest_base      0.99s
do_configure               5419.83s
do_configure_ptest_base    1.02s
do_deploy                  13.88s
do_fetch                   37.07s
do_generate_toolchain_file 0.1s
do_install                 628.89s
do_install_locale          0.53s
do_install_ptest_base      0.85s
do_kernel_checkout         47.62s
do_kernel_configcheck      4.25s
do_kernel_configme         94.91s
do_kernel_link_vmlinux     0.15s
do_multilib_install        0.0s
do_package                 1176.35s
do_package_write_rpm       947.94s
do_packagedata             182.74s
do_patch                   101.38s
do_populate_lic            152.46s
do_populate_sysroot        593.62s
do_rootfs                  180.68s
do_sizecheck               0.09s
do_strip                   0.14s
do_uboot_mkimage           0.08s
do_unpack                  290.88s
do_validate_branches       73.12s
richard at dax:/media/build1/pokyperf/build-perf-test$ /home/richard/buildstats-tasktotals.py results-d30b212-20131112093824/buildstats-test1/core-image-sato-qemux86/201311120946/
do_bundle_initramfs        0.09s
do_compile                 4183.91s
do_compile_kernelmodules   69.55s
do_compile_ptest_base      1.1s
do_configure               5535.51s
do_configure_ptest_base    0.98s
do_deploy                  13.37s
do_evacuate_scripts        4.32s
do_fetch                   47.25s
do_generate_toolchain_file 0.09s
do_install                 667.07s
do_install_locale          0.23s
do_install_ptest_base      0.81s
do_kernel_checkout         39.4s
do_kernel_configcheck      4.39s
do_kernel_configme         11.32s
do_kernel_link_vmlinux     0.09s
do_multilib_install        0.0s
do_package                 1176.05s
do_package_write_rpm       987.45s
do_packagedata             162.89s
do_patch                   97.33s
do_populate_lic            127.9s
do_populate_sysroot        594.76s
do_rootfs                  180.98s
do_sizecheck               0.1s
do_strip                   0.12s
do_uboot_mkimage           0.08s
do_unpack                  319.22s
do_validate_branches       12.08s
:/media/build1/pokyperf/build-perf-test$ /home/richard/buildstats-tasktotals.py results-2feafbb-20131112002904/buildstats-test1/core-image-sato-qemux86/201311120037/
do_bundle_initramfs        0.09s
do_compile                 4195.68s
do_compile_kernelmodules   71.07s
do_compile_ptest_base      1.09s
do_configure               5741.49s
do_configure_ptest_base    1.12s
do_deploy                  13.33s
do_evacuate_scripts        0.18s
do_fetch                   18.1s
do_generate_toolchain_file 0.09s
do_install                 697.21s
do_install_locale          0.38s
do_install_ptest_base      0.84s
do_kernel_checkout         143.08s
do_kernel_configcheck      3.85s
do_kernel_configme         60.15s
do_kernel_link_vmlinux     0.09s
do_multilib_install        0.0s
do_package                 1118.97s
do_package_write_rpm       957.41s
do_packagedata             134.04s
do_patch                   101.13s
do_populate_lic            123.11s
do_populate_sysroot        598.03s
do_rootfs                  182.04s
do_sizecheck               0.11s
do_strip                   0.15s
do_uboot_mkimage           0.1s
do_unpack                  286.99s
do_validate_branches       11.91s





More information about the Openembedded-core mailing list