ReleaseEngineering/BuildFaster: Difference between revisions

 
(54 intermediate revisions by 8 users not shown)
Line 1: Line 1:
= Goals =
= Goals =
The problem is that right now our end to end time from checkin to all tests done is around 6-8 hours.  That's wasting a lot of developer time and productivity.  The Goal of this project is to increase developer productivity by both minimizing time spent waiting for results and by making the "waiting for results" less of a time consuming task in itself.
Most of the bugs are concerned with performance optimization.  Productivity bugs that do not affect performance optimization are noted with (loosely related) in their descriptions.
The priority of the tasks below will be determined by the data we have on the gains associated with completing them.  We'll evaluate all proposals in terms of that data.  If you have a proposal, add it to the proposals section below (hopefully with links to data)
'''The Goals:'''
* The overall target we're shooting for is 2 hours from checkin to all tests done.
* Get time from build-available to all tests done to <= 30 minutes
* Get time from build-available to all tests done to <= 30 minutes
* Get per-checkin build time to under 2 hours for all platforms
* Get per-checkin build time to under 1.5 hours for all platforms
* There are other small advances in related bugs that can help free-up developer time.
* Measure and track our progress
 
'''Non-goals:'''
* Do not boil the ocean - we need to be selective
* Ensure amount of work is worth the performance payoff
* Buying more minis - we cannot buy more minis at this time (our rev is discontinued)


= Current activities =
= Current activities =
* Set up metrics to quantify our current end-to-end time, and be able to track it
Ensure any bugs that are filed for this effort have [buildfaster:pN] in the whiteboard.  Where N is some number 1-5.  P1 is highest priority, P5 is the lowest.
* Do non-PGO opt builds for linux and windows {{bug|658313}}
 
* Investigate if we can do 64-bit only 10.6 builds per-checkin. Need to determine if there are many 10.5 only test failures.
[https://bugzilla.mozilla.org/buglist.cgi?list_id=743687&resolution=---&status_whiteboard_type=allwordssubstr&query_format=advanced&status_whiteboard=buildfaster:p This is our list of '''current active bugs'''].
* Determine which suites to be merged with others - {{bug|659328}}
 
** Improve set-up time
If you'd like to file a bug for something you'd like to see included in this effort, you can use [buildfaster:?] in the whiteboard. 
* Gather data for devs to tackle test jobs that take long
 
* Speeding up the build system itself:
[https://bugzilla.mozilla.org/buglist.cgi?list_id=743751&resolution=---&resolution=DUPLICATE&status_whiteboard_type=allwordssubstr&query_format=advanced&status_whiteboard=buildfaster%3A%3F This is our list of '''proposed bugs'''].
** (universal-singlepass) less painful universal builds on mac (build universal as a single pass) - {{bug|417044}}
 
** makefiles: split of config/rules.mk into a hierarchy of makefiles - {{bug|662833}}
The table below is for current tasks that are not tracked in bugzilla.


{| style="width: 100%" class="fullwidth-table sortable"
{| style="width: 100%" class="fullwidth-table sortable"
|-
|-
| style="background:#DDD;" width="25%" | '''Bug'''
| style="background:#DDD;" width=15%" | '''Bug'''
| style="background:#DDD" | '''Description'''
| style="background:#DDD" | '''Description'''
| style="background:#DDD" | '''Owner'''
| style="background:#DDD" | '''Owner'''
| style="background:#DDD" | '''Status'''
| style="background:#DDD" | '''Status'''
|-
|-
| ??
| {{bug|772446}}
| Set up metrics to quantify our current end to end time for tracking
| Move all Linux builds to AWS
| catlee
| jhopkins
| {{StatusHealthy|status=In Design}}
| {{StatusHealthy|status=All Firefox builds are there now, just waiting on Thunderbird to catch-up.}}
|-
|-
| {{bug|658313}}
| {{bug|758624}}
| Make on-change builds into non PGO, only do PGO on an as available basis
| Purchase new machines for win/linux testers that are not tied to aggressive obsolescence schedule
| '''UNOWNED'''
| coop
| {{StatusAtRisk|status=Needs owner}}
| {{StatusBlocked|status=Underway. Various test OSes are being setup and validated.}}
|-
|-
| ??
| {{bug|784913}}
| Investigate if we can do 64 bit only 10.6 builds per-checkin (how many 10.5 failures are there?)
| migrate linux xpcshell testsuite to AWS
| '''UNOWNED'''
| {{StatusAtRisk|status=Needs Owner}}
|-
| {{bug|659328}}
| Determine which suites can be merged to amortize setup cost
| armenzg
| {{StatusHealthy|status=Has Patches}}
|-
| n/a
| Profile Test suites to find individual tests are higher than average time to complete (so devs can fix them)
| jmaher
| jmaher
| {{StatusHealthy|status=First analysis of mochitest-plain complete}}
| {{StatusBlocked|status=Blocked on panda work}}
|-
|-
| {{bug|417044}}
| {{bug|784913}}
| Perform Universal binary builds as single-pass
| migrate linux xpcshell testsuite to AWS
| :joey
| '''unowned'''
| {{StatusHealthy|status=In Progress}}
| {{StatusBlocked|status=Needs an owner}}
|-
| {{bug|662833}}
| Split config/rules.mk into hierarchy of makefiles
| :joey
| {{StatusHealthy|status=Waiting on Review}}
|-
| {{bug|659222}}
| Branch prioritization broken for test jobs
| catlee
| {{StatusHealthy|status=In Progress}}
|-
| {{bug|661656}}
| Improving network between colos
| zandr
| {{StatusHealthy|status=In Progress}}
|-
| {{bug|586418}}
| Selective unpacking of unittests
| :salbiz
| {{StatusBlocked|status=Selective unpacking landed, cannot finish until {{bug|594415}} completed}}
|}
|}
== Long Term Ideas ==
* {{bug|657738}} - Automatically determine when oranges happen and auto-star them (no owner/decision on steps yet)
* Windows builds on AWS are still too slow, but we can revisit this regularly
* Cross-compile Mac builds on AWS
** after legal review, *yes* we think we can do this. Need to find a developer owner to give this a try.
* {{bug|772579}} - Can we run unittests on AWS for Linux (and eventually Windows)?
* Analyze methods of understanding and optimizing what we run on a per-checkin basis
** Test code related to the current patch?
** Run full tests only every x pushes or y time (whichever occurs first).  Between those only run a set of tests related to the patch at hand. (Would need developer override and on-demand testing ability)
* less frequent debug builds
* use an optimized xpcshell + httpd.js to run debug tests (depends on <s>{{bug|669953}}</s>)
= Data we need =
* Profiling on all major harnesses
** Currently profiling is being done on mochitest harness and tracked [http://brasstacks.mozilla.com/testperf_dashboard/#/mochitest here]. Be sure to select either "opt" or "debug" builds, since choosing "any" is probably not what you want (profiling times differ greatly between the two).
* How many 10.5-only test failures have there been?  Do we need to run 10.5 tests on-checkin?
* Where are we spending our time during build slave setup/teardown (catlee owns)
* Gather data on specific long-running tests on mochitest & mochitest other
** Jmaher reported to newsgroup some data on mochitest-plain.  Moth is still TBD
= Data we have =
* [https://spreadsheets.google.com/spreadsheet/ccc?key=tNfPnuOZvLcbnItGP6gCYSQ&authkey=COzKr8wL#gid=0 Test Setup versus Run Time] (thanks to armenzg)
* [https://spreadsheets.google.com/spreadsheet/ccc?key=0Ai3AuZk9qRnPdHhOQ0I2SkdtWnN4WnN5d1NGYzhaZlE&hl=en_US&authkey=CIfR17IN#gid=0 Data from Orange factor] detailing 31,000 Mochitest other test runs. (Thanks to jgriffin)
** Here is the [[ReleaseEngineering/BuildFaster/Mochitest-other-analysis|easy-to-parse version]], showing we have something seriously wrong with mochitest-browser-chrome debug.  (opt is no light weight either).  Also, the ipcplugin test varies wildly on mac and could possibly improved for some minor wins.


= People =
= People =
Line 76: Line 86:
* Armen Zambrano (:armenzg)
* Armen Zambrano (:armenzg)
* Joey Armstrong (:joey)
* Joey Armstrong (:joey)
* Clint Talbert (:ctalbert)
* Will Lachance (:wlach)
* Ted Mielczarek (:ted)
* Chris Cooper (:coop)


= Definitions =
= Definitions =
; end-to-end time: The time between a change being pushed to HG and all builds and test results being available
; end-to-end time: The time between a change being pushed to HG and all builds and test results being available
; per-checkin build: Opt and debug builds that are triggered by a new checkin
; per-checkin build: Opt and debug builds that are triggered by a new checkin
; on-change build: same as per-checkin
; as-available run: Run the given test/build task only as fast as you can complete the previous run. Run the previous run, complete, then start the next task with the latest checkin.
= Proposals for consideration =
Please add proposals here...
= Meetings =
* [[ReleaseEngineering/BuildFaster/Meetings/2012-10-11|2012-10-11]]
* [[ReleaseEngineering/BuildFaster/Meetings/2012-06-28|2012-06-28]]
* [[ReleaseEngineering/BuildFaster/Meetings/2011-10-26|2011-10-26]]
* [[ReleaseEngineering/BuildFaster/Meetings/2011-09-28|2011-09-28]]
* [[ReleaseEngineering/BuildFaster/Meetings/2011-08-31|2011-08-31]]
* [[ReleaseEngineering/BuildFaster/Meetings/2011-08-17|2011-08-17]]
* [[ReleaseEngineering/BuildFaster/Meetings/2011-08-03|2011-08-03]]
* [[ReleaseEngineering/BuildFaster/Meetings/2011-07-20|2011-07-20]]
* [[ReleaseEngineering/BuildFaster/Meetings/2011-07-07|2011-07-07]]

Latest revision as of 21:36, 8 November 2012

Goals

The problem is that right now our end to end time from checkin to all tests done is around 6-8 hours. That's wasting a lot of developer time and productivity. The Goal of this project is to increase developer productivity by both minimizing time spent waiting for results and by making the "waiting for results" less of a time consuming task in itself.

Most of the bugs are concerned with performance optimization. Productivity bugs that do not affect performance optimization are noted with (loosely related) in their descriptions.

The priority of the tasks below will be determined by the data we have on the gains associated with completing them. We'll evaluate all proposals in terms of that data. If you have a proposal, add it to the proposals section below (hopefully with links to data)

The Goals:

  • The overall target we're shooting for is 2 hours from checkin to all tests done.
  • Get time from build-available to all tests done to <= 30 minutes
  • Get per-checkin build time to under 1.5 hours for all platforms
  • There are other small advances in related bugs that can help free-up developer time.
  • Measure and track our progress

Non-goals:

  • Do not boil the ocean - we need to be selective
  • Ensure amount of work is worth the performance payoff
  • Buying more minis - we cannot buy more minis at this time (our rev is discontinued)

Current activities

Ensure any bugs that are filed for this effort have [buildfaster:pN] in the whiteboard. Where N is some number 1-5. P1 is highest priority, P5 is the lowest.

This is our list of current active bugs.

If you'd like to file a bug for something you'd like to see included in this effort, you can use [buildfaster:?] in the whiteboard.

This is our list of proposed bugs.

The table below is for current tasks that are not tracked in bugzilla.

Bug Description Owner Status
bug 772446 Move all Linux builds to AWS jhopkins All Firefox builds are there now, just waiting on Thunderbird to catch-up.
bug 758624 Purchase new machines for win/linux testers that are not tied to aggressive obsolescence schedule coop Underway. Various test OSes are being setup and validated.
bug 784913 migrate linux xpcshell testsuite to AWS jmaher Blocked on panda work
bug 784913 migrate linux xpcshell testsuite to AWS unowned Needs an owner

Long Term Ideas

  • bug 657738 - Automatically determine when oranges happen and auto-star them (no owner/decision on steps yet)
  • Windows builds on AWS are still too slow, but we can revisit this regularly
  • Cross-compile Mac builds on AWS
    • after legal review, *yes* we think we can do this. Need to find a developer owner to give this a try.
  • bug 772579 - Can we run unittests on AWS for Linux (and eventually Windows)?
  • Analyze methods of understanding and optimizing what we run on a per-checkin basis
    • Test code related to the current patch?
    • Run full tests only every x pushes or y time (whichever occurs first). Between those only run a set of tests related to the patch at hand. (Would need developer override and on-demand testing ability)
  • less frequent debug builds
  • use an optimized xpcshell + httpd.js to run debug tests (depends on bug 669953)

Data we need

  • Profiling on all major harnesses
    • Currently profiling is being done on mochitest harness and tracked here. Be sure to select either "opt" or "debug" builds, since choosing "any" is probably not what you want (profiling times differ greatly between the two).
  • How many 10.5-only test failures have there been? Do we need to run 10.5 tests on-checkin?
  • Where are we spending our time during build slave setup/teardown (catlee owns)
  • Gather data on specific long-running tests on mochitest & mochitest other
    • Jmaher reported to newsgroup some data on mochitest-plain. Moth is still TBD

Data we have

  • Test Setup versus Run Time (thanks to armenzg)
  • Data from Orange factor detailing 31,000 Mochitest other test runs. (Thanks to jgriffin)
    • Here is the easy-to-parse version, showing we have something seriously wrong with mochitest-browser-chrome debug. (opt is no light weight either). Also, the ipcplugin test varies wildly on mac and could possibly improved for some minor wins.

People

  • Chris AtLee (:catlee)
  • Armen Zambrano (:armenzg)
  • Joey Armstrong (:joey)
  • Clint Talbert (:ctalbert)
  • Will Lachance (:wlach)
  • Ted Mielczarek (:ted)
  • Chris Cooper (:coop)

Definitions

end-to-end time
The time between a change being pushed to HG and all builds and test results being available
per-checkin build
Opt and debug builds that are triggered by a new checkin
on-change build
same as per-checkin
as-available run
Run the given test/build task only as fast as you can complete the previous run. Run the previous run, complete, then start the next task with the latest checkin.

Proposals for consideration

Please add proposals here...

Meetings