<div dir="ltr">Yes, this is exactly one of the issues that marge might run into as well, the aggregate ends up performing differently from the individual ones. Now we have marge to ensure that at least the aggregate builds together, which is the whole point of these merge trains. Not to end up in a situation where two patches that are fine on their own, end up to produce a broken merged state that doesn't build anymore.<div><br></div><div>Now we have marge to ensure every commit is buildable. Next we should run regression tests on all commits on master (and that includes each and everyone that marge brings into master. Then we have visualisation that tells us how performance metrics go up/down over time, and we can drill down into commits if they yield interesting results in either way.</div><div><br></div><div>Now lets say you had a commit that should have made GHC 50% faster across the board, but somehow after the aggregate with other patches this didn't happen anymore? We'd still expect this to somehow show in each of the singular commits on master right?</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Mar 24, 2021 at 8:09 PM Richard Eisenberg <<a href="mailto:rae@richarde.dev">rae@richarde.dev</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">What about the case where the rebase *lessens* the improvement? That is, you're expecting these 10 cases to improve, but after a rebase, only 1 improves. That's news! But a blanket "accept improvements" won't tell you.<br>
<br>
I'm not hard against this proposal, because I know precise tracking has its own costs. Just wanted to bring up another scenario that might be factored in.<br>
<br>
Richard<br>
<br>
> On Mar 24, 2021, at 7:44 AM, Andreas Klebinger <<a href="mailto:klebinger.andreas@gmx.at" target="_blank">klebinger.andreas@gmx.at</a>> wrote:<br>
> <br>
> After the idea of letting marge accept unexpected perf improvements and<br>
> looking at <a href="https://gitlab.haskell.org/ghc/ghc/-/merge_requests/4759" rel="noreferrer" target="_blank">https://gitlab.haskell.org/ghc/ghc/-/merge_requests/4759</a><br>
> which failed because of a single test, for a single build flavour<br>
> crossing the<br>
> improvement threshold where CI fails after rebasing I wondered.<br>
> <br>
> When would accepting a unexpected perf improvement ever backfire?<br>
> <br>
> In practice I either have a patch that I expect to improve performance<br>
> for some things<br>
> so I want to accept whatever gains I get. Or I don't expect improvements<br>
> so it's *maybe*<br>
> worth failing CI for in case I optimized away some code I shouldn't or<br>
> something of that<br>
> sort.<br>
> <br>
> How could this be actionable? Perhaps having a set of indicator for CI of<br>
> "Accept allocation decreases"<br>
> "Accept residency decreases"<br>
> <br>
> Would be saner. I have personally *never* gotten value out of the<br>
> requirement<br>
> to list the indivial tests that improve. Usually a whole lot of them do.<br>
> Some cross<br>
> the threshold so I add them. If I'm unlucky I have to rebase and a new<br>
> one might<br>
> make it across the threshold.<br>
> <br>
> Being able to accept improvements (but not regressions) wholesale might be a<br>
> reasonable alternative.<br>
> <br>
> Opinions?<br>
> <br>
> _______________________________________________<br>
> ghc-devs mailing list<br>
> <a href="mailto:ghc-devs@haskell.org" target="_blank">ghc-devs@haskell.org</a><br>
> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs</a><br>
<br>
_______________________________________________<br>
ghc-devs mailing list<br>
<a href="mailto:ghc-devs@haskell.org" target="_blank">ghc-devs@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs</a><br>
</blockquote></div>