Closed Bug 1042553 Opened 11 years ago Closed 7 years ago

Provide Builds for every Gecko commit for b2ghaystack

Categories

(Firefox OS Graveyard :: Performance, defect, P1)

x86
macOS
defect

Tracking

(tracking-b2g:-)

RESOLVED WONTFIX
tracking-b2g -

People

(Reporter: mchang, Unassigned)

References

Details

(Keywords: perf, Whiteboard: [c=automation p= s= u=])

Modify b2ghaystack to get builds for every gecko commit. This means either (1) find out if we are building gecko builds for every gecko commit, or (2) build our own single machine that given two regressions and the mozilla-central source, builds the necessary files to bisect.
Hi Dave, think you could find out if we already have builds somewhere? Otherwise, I can start ordering a machine to do this for us. Thanks!
Flags: needinfo?(dhuseby)
I just asked davehunt on IRC.
Flags: needinfo?(dhuseby)
We're going to need to put together our own build cluster. As far as Dave Hunt knows, we only have gecko builds per b2g-inbound commit. Typically, those contain 60-150 gecko commits. So we'll need enough machines to make 3-7 gecko builds in parallel. Since there is resistance to having more flame devices in the rack, I think we should try to get by with only 3 devices to do the bisection, which means we only need enough build machines to make 3 gecko builds in parallel to feed the bisection.
Flags: needinfo?(mchang)
how long does a test take on a flame? I assume it is less time than a build takes, so you would need more build machines than flames. If you only do a build once you have results from your bisection, then it will take longer, but you won't need as many build machines :)
(In reply to Dave Huseby [:huseby] from comment #3) > We're going to need to put together our own build cluster. As far as Dave > Hunt knows, we only have gecko builds per b2g-inbound commit. Typically, > those contain 60-150 gecko commits. So we'll need enough machines to make > 3-7 gecko builds in parallel. Since there is resistance to having more > flame devices in the rack, I think we should try to get by with only 3 > devices to do the bisection, which means we only need enough build machines > to make 3 gecko builds in parallel to feed the bisection. I'm curious to know where the figure of 60-150 gecko commits comes from? Looking at the b2g-inbound pushlog (http://hg.mozilla.org/integration/b2g-inbound/pushloghtml) I see most have considerably less commits than that. (In reply to Joel Maher (:jmaher) from comment #4) > how long does a test take on a flame? I think the bisects are likely to be on individual apps that have shown regressions. For b2gperf a single app would take ~10 minutes to test.
So I think we have two routes here: 1) Build locally and enable b2ghaystack, given a mozilla-central directory and gecko commit, to just build and flash locally. 2) Create a custom job on Jenkins and fetch the build from jenkins when it's done. However, jgriffin said this might be an issue since we have to wait for Jenkin's to queue and run the job. If we could prioritize our custom job so that we could get a build back within an hour, that might be doable. Even then though, on my macbook pro, I'm able to get a full clobber build in ~10 minutes with ccache, so I'm leaning more towards (1).
Flags: needinfo?(mchang)
Just to clarify, in 2) we'd be requesting missing builds from buildbot, not Jenkins, but b2ghaystack would still have to wait for them. A full clobber device build in 10 minutes is impressive!
I can confirm. With my distcc+ccache build cluster, I was getting 10-15 minute full clobber builds. http://bit.ly/1fI3kd8 I'm interested mostly in whatever is the easiest way. Dave, what do you think would be easier to make b2ghaystack do? 1) drive local builds given a repo and revision and run b2gperf directly, or 2) request missing builds from buildbot?
Flags: needinfo?(dave.hunt)
This is really outside of my expertise. When b2ghaystack was written it was intended for bisecting within available build rather than triggering additional builds. Given the suggestions in comment 8 I would probably lean towards requesting builds from buildbot so that we have consistency in the build environments, but like I say, I'm out of my depth here.
Flags: needinfo?(dave.hunt)
Do we have an easy ability / API to request builds from buildbot and get a notification programmatically? Or would we have to do that ourselves as well.
There is an API for requesting the builds. There isn't an API per se for getting a notification, but we could rely on pulse or builds-4hr.js (the same thing that Treeherder uses). I'm still not sure how much of a real problem this is. The number of skipped builds is normally small, and so the effort of building out this capability may exceed its actual usefulness. I'd rather get b2ghaystack using existing builds, see how big of a problem this is in real practice, and then tackle this if seems to warrant the effort.
Let's discuss this at next Friday's B2G Perf sync up and come to some conclusion there.
From the b2g automation + fxos perf team meeting, we decided that due to the difficulty in getting buildbot and b2ghaystack to work together, and that we don't know that this is a real problem, we should do two things. First, we will log when a gecko commit causes a regression and how much bisection duty it required so that we have metrics to see how big of a problem this is. Second, if it is a small problem, and b2g-inbound only misses 3-4 gecko commits at a time, we can just bisect locally as it should be fast at that point. We can further automate this process by modifying b2g haystack to use a local build instead of requesting a build.
tracking-b2g: --- → -
Firefox OS is not being worked on
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.