|
|
(184 intermediate revisions by 8 users not shown) |
Line 1: |
Line 1: |
| '''Poky/Bitbake Performance:'''<br>
| | == Build time tracking == |
| Performance is an essential point for measuring the quality of a build system.<br>
| |
| This page is to track performance trend of poky build. Detailed development work is on https://wiki.yoctoproject.org/wiki/Performance.<br>
| |
| <br>
| |
| '''Hardware and software configuration:'''<br>
| |
| CPU: 4-core * 2-threads Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz<br>
| |
| Memory: 4GB<br>
| |
| Harddisk: 1TB<br>
| |
| <br>
| |
| OS: Ubuntu 10.04 x86_64<br>
| |
| Kernel: 2.6.32-21<br>
| |
| <br>
| |
| local.conf:<br>
| |
| CONF_VERSION = "1"<br>
| |
| DL_DIR ?= "/sda1/sources/downloads" # Using a local download dir to avoid fetch.<br>
| |
| BB_NUMBER_THREADS = "9"<br>
| |
| PARALLEL_MAKE = "-j 9"<br>
| |
| MACHINE ?= "qemux86"<br>
| |
| DISTRO ?= "poky"<br>
| |
| BBMASK = ""<br>
| |
| EXTRA_IMAGE_FEATURES = "tools-debug tools-profile tools-testapps debug-tweaks"<br>
| |
| EXTRA_IMAGE_FEATURES_c7x0 = "tools-testapps debug-tweaks"<br>
| |
| EXTRA_IMAGE_FEATURES_mx31phy = "debug-tweaks"<br>
| |
| EXTRA_IMAGE_FEATURES_mx31ads = "tools-testapps debug-tweaks"<br>
| |
| PACKAGE_CLASSES ?= "package_rpm package_ipk"<br>
| |
| USER_CLASSES ?= "image-prelink"<br>
| |
| BBINCLUDELOGS = "yes"<br>
| |
| ENABLE_BINARY_LOCALE_GENERATION = "1"<br>
| |
| NO32LIBS = "1"<br>
| |
| <br>
| |
| '''Source code and commits:'''<br>
| |
| Green-3.3.1: http://autobuilder.yoctoproject.org/downloads/poky/poky-green-3.3.1.tar.bz2<br>
| |
| Yocto-0.9: http://autobuilder.yoctoproject.org/downloads/poky/poky-laverne-4.0.tar.bz2<br>
| |
| 01/07/2011 build: commit b22e345e05efcc3f66278af8f09fb083afe32b68<br>
| |
| 02/14/2011 build: commit 6cb8fd6def4912e4aa76330649ba42a9ed2694fd<br>
| |
| <br>
| |
| Other detail commit number for optimization will be annotated in the table note. See following.<br>
| |
| <br>
| |
|
| |
|
| '''Performance results:'''<br>
| | Script used for running the builds: |
| {| cellpadding="10" cellspacing="0" border="1"
| |
| |+Table 1: File Parsing Time Optmization Results
| |
| |align="center"|File parsing speed
| |
| |align="center"|BB files
| |
| |align="center"|Parsing time (s)
| |
| |align="center"|Standardized BB files
| |
| |align="center"|Standardized time (s)
| |
| |align="center"|Performance compare
| |
| |-
| |
| |align="center"|Green-3.3.1
| |
| |align="center"|925
| |
| |align="center"|16.5
| |
| |align="center"|770
| |
| |align="center"|13.7
| |
| |align="center"|100%
| |
| |-
| |
| |align="center"|Yocto-0.9
| |
| |align="center"|844
| |
| |align="center"|44.8
| |
| |align="center"|770
| |
| |align="center"|40.9
| |
| |align="center"|298%
| |
| |-
| |
| |align="center"|Optimization A (rm distro variables)
| |
| |align="center"|757
| |
| |align="center"|29.6
| |
| |align="center"|770
| |
| |align="center"|30.1
| |
| |align="center"|220%
| |
| |-
| |
| |align="center"|01/07/2011 build
| |
| |align="center"|770
| |
| |align="center"|16.6
| |
| |align="center"|770
| |
| |align="center"|16.6
| |
| |align="center"|121%
| |
| |-
| |
| |align="center"|Optimization B ("??=" re-implementation)
| |
| |align="center"|770
| |
| |align="center"|15.6
| |
| |align="center"|770
| |
| |align="center"|15.6
| |
| |align="center"|114%
| |
| |}
| |
| Note:<br>
| |
| Optimization A: commit: 53aff7d6775eb1c2c8f419f325b91c062d85eed5<br>
| |
| 01/07/2011 build: Latest master with parallel parsing mechanism<br>
| |
| Optimization B: "??=" re-implementation. (Pending for review)<br>
| |
| <br>
| |
|
| |
|
| <br>
| | *Before morty: poky/scripts/contrib/build-perf-test.sh |
| {| cellpadding="10" cellspacing="0" border="1"
| | *After morty: poky/scripts/oe-build-perf-test |
| |+Table 2: Build Time Optmization Results
| |
| |align="center"|Build time (poky-image-minimal)
| |
| |align="center"|Recipe number
| |
| |align="center"|Build time (s)
| |
| |align="center"|Standardized recipe number
| |
| |align="center"|Standardized time (s)
| |
| |align="center"|Performance compare
| |
| |-
| |
| |align="center"|Green-3.3.1
| |
| |align="center"|88
| |
| |align="center"|32m57s
| |
| |align="center"|147
| |
| |align="center"|53m54s
| |
| |align="center"|100%
| |
| |-
| |
| |align="center"|Yocto-0.9
| |
| |align="center"|147
| |
| |align="center"|88m50s
| |
| |align="center"|147
| |
| |align="center"|88m50s
| |
| |align="center"|165%
| |
| |-
| |
| |align="center"|Exec (before pseudo wrapper)
| |
| |align="center"|147
| |
| |align="center"|114m6s
| |
| |align="center"|147
| |
| |align="center"|114m6s
| |
| |align="center"|212%
| |
| |-
| |
| |align="center"|Fork (after pseudo wrapper)
| |
| |align="center"|147
| |
| |align="center"|99m52s
| |
| |align="center"|147
| |
| |align="center"|99m52s
| |
| |align="center"|185%
| |
| |-
| |
| |align="center"|01/07/2011 build
| |
| |align="center"|147
| |
| |align="center"|134m39s
| |
| |align="center"|147
| |
| |align="center"|134m39s
| |
| |align="center"|250%
| |
| |-
| |
| |align="center"|pipe buffer 1024 (before pipe buffer fix)
| |
| |align="center"|170
| |
| |align="center"|101m8s
| |
| |align="center"|147
| |
| |align="center"|87m27s
| |
| |align="center"|162%
| |
| |-
| |
| |align="center"|pipe buffer 102400 (after pipe buffer fix)
| |
| |align="center"|170
| |
| |align="center"|97m32s
| |
| |align="center"|147
| |
| |align="center"|84m20s
| |
| |align="center"|156%
| |
| |-
| |
| |align="center"|02/14/2011 build
| |
| |align="center"|227
| |
| |align="center"|75m10s
| |
| |align="center"|147
| |
| |align="center"|48m40s
| |
| |align="center"|90%
| |
| |}
| |
|
| |
|
| Note:<br>
| | Two identical test systems are used for the results, with all updates available installed. Extra packages installed (besides what's by the default in the distro) are the ones in the Quick Start guide. |
| Exec (before pseudo wrapper): commit 84263dbf43eba5cd99ce59062cef807a966e7312<br>
| |
| Fork (after pseudo wrapper): commit 995d4679d4bb6a28dd6fbdb1becc4231369311b7<br>
| |
| pipe buffer 1024 (before pipe buffer fix): commit 754047b6ec01df5f3159cce93b17b8493d0af5e1<br>
| |
| pipe buffer 102400 (after pipe buffer fix): commit 06c6db7929c75f576a395fb442abe447b833fc3b<br>
| |
| <br>
| |
| {| cellpadding="10" cellspacing="0" border="1"
| |
| |+Table 3: Disk Footprint Optmization Results (poky-image-minimal)
| |
| |align="center"|Disk space (poky-image-minimal)
| |
| |align="center"|Recipe number
| |
| |align="center"|Disk footprint (GB)
| |
| |align="center"|Standardized recipe number
| |
| |align="center"|Standardized disk footprint (GB)
| |
| |align="center"|Performance compare
| |
| |-
| |
| |align="center"|Green-3.3.1
| |
| |align="center"|88
| |
| |align="center"|7.6
| |
| |align="center"|147
| |
| |align="center"|12.7
| |
| |align="center"|100%
| |
| |-
| |
| |align="center"|Yocto-0.9
| |
| |align="center"|147
| |
| |align="center"|29
| |
| |align="center"|147
| |
| |align="center"|29
| |
| |align="center"|228%
| |
| |-
| |
| |align="center"|Optimization A (rm sstate-build-*)
| |
| |align="center"|147
| |
| |align="center"|24
| |
| |align="center"|147
| |
| |align="center"|24
| |
| |align="center"|189%
| |
| |-
| |
| |align="center"|01/07/2011 build
| |
| |align="center"|147
| |
| |align="center"|24
| |
| |align="center"|147
| |
| |align="center"|24
| |
| |align="center"|189%
| |
| |-
| |
| |align="center"|Optimization B (hard link files)
| |
| |align="center"|147
| |
| |align="center"|19
| |
| |align="center"|147
| |
| |align="center"|19
| |
| |align="center"|150%
| |
| |}
| |
| Note:<br>
| |
| Optimization A: commit: 7e7bb24b8512dd1452a11d8aeafc8dedcbc4d623).<br>
| |
| Optimization B: Using hardlink to replace copy between "package-->packages-split", "image-->sysroot-destdir", and "sysroot-destdir-->/tmp/sysroots" (Pending for review).<br>
| |
| <br>
| |
|
| |
|
| There are some other data we may add later.<br>
| | Configuration of the GDC Setup 2.1 - Current master |
| 1) Using socket data accessing approach to avoid data re-parsing when fork/exec new bitbake processes. | | * Ubuntu 15.10 (Wily Werewolf)" --> 4.2.0-16-generic |
| | * Fedora release 23 (Twenty Three) --> 4.7.10-100.fc23.x86_64 |
| | * HW configuration: Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz, 16GB RAM, 1 x 600 GB SDD, 1 x 2 TB HDD |
| | |
| | All system/distro settings are '''distro's defaults''', that includes: |
| | |
| | - FS mount options: ext4 rw,relatime,data=ordered |
| | |
| | - IO scheduler: cfq and CPU governer: ondemand |
| | |
| | local.conf it's the default one (the script doesn't touch it except for changing DL_DIR if necessary). |
| | |
| | It however exports these in the enviroment: |
| | <nowiki>BB_NUMBER_THREADS = "8" |
| | PARALLEL_MAKE = "-j 8" |
| | MACHINE = "qemux86"</nowiki> |
| | |
| | FAQ: |
| | *Q: Where is 1.5_M2? It's there but it's called: 1.5_M1.final-412-geaa5df3 The M2 build wasn't released hence no git tag |
| | *Q: What's with the different number of RCs? See [[Yocto_Project_Release_Process#Milestone_Releases]] |
| | *Q: Why are there more results for some commits? The script is ran from a cron job multiple times a day, sometimes master changes daily sometimes it doesn't, hence more results for one commit (ie weekends) |
| | |
| | |
| | == Daily Test Results == |
| | Build performance test suite is run multiple times per day. Latest test reports for master branch can found here: |
| | * [https://wiki.yoctoproject.org/charts/build_perf/latest/ypperf-ubuntu16_master_qemux86.html Ubuntu 16.04] |
| | * [https://wiki.yoctoproject.org/charts/build_perf/latest/ypperf-ubuntu16-xeon_master_qemux86.html Ubuntu 16.04 (Intel® Xeon® HW)] |
| | * [https://wiki.yoctoproject.org/charts/build_perf/latest/ypperf-centos7_master_qemux86.html CentOS 7] |
| | * [https://wiki.yoctoproject.org/charts/build_perf/latest/ypperf-opensuse422_master_qemux86.html OpenSUSE Leap 42.2] (retired) |
| | * [https://wiki.yoctoproject.org/charts/build_perf/latest/ypperf-fedora25_master_qemux86.html Fedora 25] (retired) |
| | * [https://wiki.yoctoproject.org/charts/build_perf/latest/ypperf01_master_qemux86.html Fedora 23] (retired) |
| | * [https://wiki.yoctoproject.org/charts/build_perf/latest/ypperf02_master_qemux86.html Ubuntu 15.10] (retired) |
| | |
| | == Milestone Test results == |
| | Guadalajara Setup from 2.1 M4 to actual master |
| | |
| | * [https://wiki.yoctoproject.org/charts/perf_milestone_GDC/performance_test.html GDC Charts] |
| | |
| | == Old Test results == |
| | |
| | Milestone test results from the retired Romania Setup (Yocto 1.6 – 2.1) can be found from here: |
| | |
| | * [https://wiki.yoctoproject.org/charts/perf_milestone/performance_test.html RO Charts] |
| | |
| | Raw test data from the retired Romania test setup has been moved to |
| | * [[Performance_Test_Old_Results]] |
| | * [[Performance_Test_Weekly_1.5]] has the old weekly results ran during the 1.5 cycle. |
| | |
| | Configuration for the Romania Setup 1.6 - 2.1: |
| | |
| | * Ubuntu 12.04 (uname -nr: ubuntu12 3.8.0-31-generic) and |
| | * Fedora 19 (uname -nr: fedora19 3.11.3-201.fc19.x86_64) |
| | * HW configuration: SandyBridge i7-2600 CPU @ 3.40GHz (4 cores/8 threads), 8GB RAM, 1 x 500 GB HDD |
Build time tracking
Script used for running the builds:
- Before morty: poky/scripts/contrib/build-perf-test.sh
- After morty: poky/scripts/oe-build-perf-test
Two identical test systems are used for the results, with all updates available installed. Extra packages installed (besides what's by the default in the distro) are the ones in the Quick Start guide.
Configuration of the GDC Setup 2.1 - Current master
- Ubuntu 15.10 (Wily Werewolf)" --> 4.2.0-16-generic
- Fedora release 23 (Twenty Three) --> 4.7.10-100.fc23.x86_64
- HW configuration: Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz, 16GB RAM, 1 x 600 GB SDD, 1 x 2 TB HDD
All system/distro settings are distro's defaults, that includes:
- FS mount options: ext4 rw,relatime,data=ordered
- IO scheduler: cfq and CPU governer: ondemand
local.conf it's the default one (the script doesn't touch it except for changing DL_DIR if necessary).
It however exports these in the enviroment:
BB_NUMBER_THREADS = "8"
PARALLEL_MAKE = "-j 8"
MACHINE = "qemux86"
FAQ:
- Q: Where is 1.5_M2? It's there but it's called: 1.5_M1.final-412-geaa5df3 The M2 build wasn't released hence no git tag
- Q: What's with the different number of RCs? See Yocto_Project_Release_Process#Milestone_Releases
- Q: Why are there more results for some commits? The script is ran from a cron job multiple times a day, sometimes master changes daily sometimes it doesn't, hence more results for one commit (ie weekends)
Daily Test Results
Build performance test suite is run multiple times per day. Latest test reports for master branch can found here:
Milestone Test results
Guadalajara Setup from 2.1 M4 to actual master
Old Test results
Milestone test results from the retired Romania Setup (Yocto 1.6 – 2.1) can be found from here:
Raw test data from the retired Romania test setup has been moved to
Configuration for the Romania Setup 1.6 - 2.1:
- Ubuntu 12.04 (uname -nr: ubuntu12 3.8.0-31-generic) and
- Fedora 19 (uname -nr: fedora19 3.11.3-201.fc19.x86_64)
- HW configuration: SandyBridge i7-2600 CPU @ 3.40GHz (4 cores/8 threads), 8GB RAM, 1 x 500 GB HDD