Changes to performance testing?
John Ericson
john.ericson at obsidian.systems
Tue Feb 23 19:21:28 UTC 2021
If we make the changes proposed in the "On CI" thread, I think we solve
most of this for free. If a perf test fails, resubmitting should not
need to rebuild GHC because it is cached. I'd say at that point, it's
not even worth making Marge bot auto-accept extra improvements because
restarting with new perf windows should be so easy.
John
On 2/22/21 8:46 AM, Andreas Klebinger wrote:
>
> This seems quite reasonable to me.
> Not sure about the cost of implementing it (and the feasability of it
> if/when merge-trains arrive).
>
> Andreas
>
> Am 21/02/2021 um 21:31 schrieb Richard Eisenberg:
>>
>>
>>> On Feb 21, 2021, at 11:24 AM, Ben Gamari <ben at well-typed.com
>>> <mailto:ben at well-typed.com>> wrote:
>>>
>>> To mitigate this I would suggest that we allow performance test failures
>>> in marge-bot pipelines. A slightly weaker variant of this idea would
>>> instead only allow performance *improvements*. I suspect the latter
>>> would get most of the benefit, while eliminating the possibility that a
>>> large regression goes unnoticed.
>>
>> The value in making performance improvements a test failure is so
>> that patch authors can be informed of what they have done, to make
>> sure it matches expectations. This need can reasonably be satisfied
>> without stopping merging. That is, if Marge can accept performance
>> improvements, while (say) posting to each MR involved that it may
>> have contributed to a performance improvement, then I think we've
>> done our job here.
>>
>> On the other hand, a performance degradation is a bug, just like,
>> say, an error message regression. Even if it's a combination of
>> commits that cause the problem (an actual possibility even for error
>> message regressions), it's still a bug that we need to either fix or
>> accept (balanced out by other improvements). The pain of debugging
>> this scenario might be mitigated if there were a collation of the
>> performance wibbles for each individual commit. This information is,
>> in general, available: each commit passed CI on its own, and so it
>> should be possible to create a little report with its rows being perf
>> tests and its columns being commits or MR #s; each cell in the table
>> would be a percentage regression. If we're lucky, the regression
>> Marge sees will be the sum(*) of the entries in one of the rows --
>> this means that we have a simple agglomeration of performance
>> degradation. If we're less lucky, the whole will not equal the sum of
>> the parts, and some of the patches interfere. In either case, the
>> table would suggest a likely place to look next.
>>
>> (*) I suppose if we're recording percentages, it wouldn't necessarily
>> be the actual sum, because percentages are a bit funny. But you get
>> my meaning.
>>
>> Pulling this all together:
>> * I'm against the initial proposal of allowing all performance
>> failures by Marge. This will allow bugs to accumulate (in my opinion).
>> * I'm in favor of allowing performance improvements to be accepted by
>> Marge.
>> * To mitigate against the information loss of Marge accepting
>> performance improvements, it would be great if Marge could alert MR
>> authors that a cumulative performance improvement took place.
>> * To mitigate against the annoyance of finding a performance
>> regression in a merge commit that does not appear in any component
>> commit, it would be great if there were a tool to collect performance
>> numbers from a set of commits and present them in a table for further
>> analysis.
>>
>> These "mitigations" might take work. If labor is impossible to
>> produce to complete this work, I'm in favor of simply allowing the
>> performance improvements, maybe also filing a ticket about these
>> potential improvements to the process.
>>
>> Richard
>>
>> _______________________________________________
>> ghc-devs mailing list
>> ghc-devs at haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20210223/6a280621/attachment.html>
More information about the ghc-devs
mailing list