> The ratio of things landed on inbound which turn out to busted is really > worrying
> * 116 of the 916 changesets (12.66%) were backed out If 13% is "really worrying", what do you think our goal should be? On Tue, Apr 23, 2013 at 12:39 AM, Ehsan Akhgari <ehsan.akhg...@gmail.com> wrote: > This was a fantastic read, it almost made me shed happy tears! Thanks a lot > kats for doing this. > > The ratio of things landed on inbound which turn out to busted is really > worrying, and it might be an indicator that (some?) developers have a poor > judgement on how safe their patches are. How hard would it be to gather a > list of the total number of patches being backed out plus the amount of time > that we spent building/testing those, hopefully in a style similar to > <http://people.mozilla.org/~catlee/highscores/highscores.html>? If we had > such a list, perhaps we could reach out to the high offenders there and let > them know about the problem, and see if that changes these stats a couple of > weeks from now? > > Thanks! > Ehsan > > > On 2013-04-22 3:54 PM, Kartikaya Gupta wrote: >> >> TL;DR: >> * Inbound is closed 25% of the time >> * Turning off coalescing could increase resource usage by up to 60% (but >> probably less than this). >> * We spend 24% of our machine resources on changes that are later backed >> out, or changes that are doing the backout >> * The vast majority of changesets that are backed out from inbound are >> detectable on a try push >> >> Because of the large effect from coalescing, any changes to the current >> process must not require running the full set of tests on every push. >> (In my proposal this is easily accomplished with trychooser syntax, but >> other proposals include rotating through T-runs on pushes, etc.). >> >> --- Long verion below --- >> >> Following up from the infra load meeting we had last week, I spent some >> time this weekend crunching various pieces of data on mozilla-inbound to >> get a sense of how much coalescing actually helps us, how much backouts >> hurt us, and generally to get some data on the impact of my previous >> proposal for using a multi-headed tree. I didn't get all the data that I >> wanted but as I probably won't get back to this for a bit, I thought I'd >> share what I found so far and see if anybody has other specific pieces >> of data they would like to see gathered. >> >> -- Inbound uptime -- >> >> I looked at a ~9 day period from April 7th to April 16th. During this >> time: >> * inbound was closed for 24.9587% of the total time >> * inbound was closed for 15.3068% of the total time due to "bustage". >> * inbound was closed for 11.2059% of the total time due to "infra". >> >> Notes: >> 1) "bustage" and "infra" were determined by grep -i on the data from >> treestatus.mozilla.org. >> 2) There is some overlap so bustage + infra != total. >> 3) I also weighted the downtime using checkins-per-hour histogram from >> joduinn's blog at [1], but this didn't have a significant impact: the >> total, bustage, and infra downtime percentages moved to 25.5392%, >> 15.7285%, and 11.3748% respectively. >> >> -- Backout changes -- >> >> Next I did an analysis of the changes that landed on inbound during that >> time period. The exact pushlog that I looked at (corresponding to the >> same April 7 - April 16 time period) is at [2]. I removed all of the >> merge changesets from this range, since I wanted to look at inbound in >> as much isolation as possible. >> >> In this range: >> * there were a total of 916 changesets >> * there were a total of 553 "pushes" >> * 74 of the 916 changesets (8.07%) were backout changesets >> * 116 of the 916 changesets (12.66%) were backed out >> * removing all backouts and changes backed out removed 114 pushes (20.6%) >> >> Of the 116 changesets that were backed out: >> * 37 belonged to single-changeset pushes >> * 65 belonged to multi-changeset pushes where the entire pushed was >> backed out >> * 14 belonged to multi-changeset pushes where the changesets were >> selectively backed out >> >> Of the 74 backout changesets: >> * 4 were for commit message problems >> * 25 were for build failures >> * 36 were for test failures >> * 5 were for leaks/talos regressions >> * 1 was for premature landing >> * 3 were for unknown reasons >> >> Notes: >> 1) There were actually 79 backouts, but I ignored 5 of them because they >> backed out changes that happened prior to the start of my range). >> 2) Additional changes at the end of my range may have been backed out, >> but the backouts were not in my range so I didn't include them in my >> analysis. >> 3) The 14 csets that were selectively backed out is interesting to me >> because it implies that somebody did some work to identify which changes >> in the push were bad, and this naturally means that there is room to >> save on doing that work. >> >> -- Merge conflicts -- >> >> I also wanted to determine how many of these changes conflicted with >> each other, and how far away the conflicting changes were. I got a >> partial result here but I need to do more analysis before I have numbers >> worth posting. >> >> -- Build farm resources -- >> >> Finally, I used a combination of gps' mozilla-build-analyzer tool [3] >> and some custom tools to determine how much machine time was spent on >> building all of these pushes and changes. >> >> I looked at all the build.json files [4] from the 6th of April to the >> 17th of April and pulled out all the jobs that corresponding to the >> "push" changesets in my range above. For this set of 553 changesets, >> there were 500 (exactly!) distinct "builders". 111 of these had "-pgo" >> or "_pgo" in the name, and I excluded them. I created a 553x389 matrix >> with the remaining builders and filled in how much time was spent on >> each changeset for each builder (in case of multiple jobs, I added the >> times). >> >> Then I assumed that any empty field in the 553x389 matrix was a result >> of coalescing. This is a grossly simplifying assumption that I would >> like to revisit - I know for Android changes we can detect that in some >> cases and only run the relevant tests; my assumption means the rest of >> the platforms are considered "coalesced" for these changes. I filled in >> these fields in the matrix with the average time spent on all the other >> builds for that builder in the matrix. >> >> * A total of 228717299 seconds were spent on the 128777 entries in the >> matrix >> * After de-coalescing, a total of 373751505 seconds would have been >> spent on the 215117 entries in the matrix (an increase of 63%) >> * With coalescing, but removing all the backout pushes and pushes that >> were completely backed out, a total of 173027517 seconds were spent on >> 97623 entries (down 24% from actual usage) >> * With de-coalescing AND stripping backouts, a total of 292634211 >> seconds would have been spent on the 168437 entries (an increase of 27% >> over actual usage) >> >> Notes: >> 1) I tried a minor variation where I excluded the 21 builders that ran >> on less than 50% of the changes, on the assumption that these were not >> coalesced out, but are actually run on demand. This brought down the >> increase from 63% to 58%. >> >> -- Conclusions -- >> >> See TL;DR up top. >> >> Cheers, >> kats >> >> [1] http://oduinn.com/images/2013/blog_2013_02_pushes_per_hour.png >> [2] >> >> https://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=74354f979ea8&tochange=cad82c3b69bc >> >> [3] >> >> http://gregoryszorc.com/blog/2013/04/01/bulk-analysis-of-mozilla%27s-build-and-test-data/ >> >> [4] http://builddata.pub.build.mozilla.org/buildjson/ >> _______________________________________________ >> dev-platform mailing list >> dev-platform@lists.mozilla.org >> https://lists.mozilla.org/listinfo/dev-platform > > > _______________________________________________ > dev-platform mailing list > dev-platform@lists.mozilla.org > https://lists.mozilla.org/listinfo/dev-platform _______________________________________________ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform