<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html;
      charset=windows-1252">
  </head>
  <body>
    <p>This seems quite reasonable to me.<br>
      Not sure about the cost of implementing it (and the feasability of
      it if/when merge-trains arrive).</p>
    <p>Andreas<br>
    </p>
    <div class="moz-cite-prefix">Am 21/02/2021 um 21:31 schrieb Richard
      Eisenberg:<br>
    </div>
    <blockquote type="cite"
cite="mid:010f0177c64a7c40-97040c50-92b1-4ad7-841d-8055824a8de2-000000@us-east-2.amazonses.com">
      <meta http-equiv="Content-Type" content="text/html;
        charset=windows-1252">
      <br class="">
      <div><br class="">
        <blockquote type="cite" class="">
          <div class="">On Feb 21, 2021, at 11:24 AM, Ben Gamari <<a
              href="mailto:ben@well-typed.com" class=""
              moz-do-not-send="true">ben@well-typed.com</a>> wrote:</div>
          <br class="Apple-interchange-newline">
          <div class=""><span style="caret-color: rgb(0, 0, 0);
              font-family: Menlo-Regular; font-size: 11px; font-style:
              normal; font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none; float: none; display: inline
              !important;" class="">To mitigate this I would suggest
              that we allow performance test failures</span><br
              style="caret-color: rgb(0, 0, 0); font-family:
              Menlo-Regular; font-size: 11px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none;" class="">
            <span style="caret-color: rgb(0, 0, 0); font-family:
              Menlo-Regular; font-size: 11px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none; float: none; display: inline
              !important;" class="">in marge-bot pipelines. A slightly
              weaker variant of this idea would</span><br
              style="caret-color: rgb(0, 0, 0); font-family:
              Menlo-Regular; font-size: 11px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none;" class="">
            <span style="caret-color: rgb(0, 0, 0); font-family:
              Menlo-Regular; font-size: 11px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none; float: none; display: inline
              !important;" class="">instead only allow performance
              *improvements*. I suspect the latter</span><br
              style="caret-color: rgb(0, 0, 0); font-family:
              Menlo-Regular; font-size: 11px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none;" class="">
            <span style="caret-color: rgb(0, 0, 0); font-family:
              Menlo-Regular; font-size: 11px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none; float: none; display: inline
              !important;" class="">would get most of the benefit, while
              eliminating the possibility that a</span><br
              style="caret-color: rgb(0, 0, 0); font-family:
              Menlo-Regular; font-size: 11px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none;" class="">
            <span style="caret-color: rgb(0, 0, 0); font-family:
              Menlo-Regular; font-size: 11px; font-style: normal;
              font-variant-caps: normal; font-weight: normal;
              letter-spacing: normal; text-align: start; text-indent:
              0px; text-transform: none; white-space: normal;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;
              text-decoration: none; float: none; display: inline
              !important;" class="">large regression goes unnoticed.</span></div>
        </blockquote>
      </div>
      <br class="">
      <div class="">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.</div>
      <div class=""><br class="">
      </div>
      <div class="">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.</div>
      <div class=""><br class="">
      </div>
      <div class="">(*) 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.</div>
      <div class=""><br class="">
      </div>
      <div class="">Pulling this all together:</div>
      <div class="">* I'm against the initial proposal of allowing all
        performance failures by Marge. This will allow bugs to
        accumulate (in my opinion).</div>
      <div class="">* I'm in favor of allowing performance improvements
        to be accepted by Marge.</div>
      <div class="">* 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.</div>
      <div class="">* 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.</div>
      <div class=""><br class="">
      </div>
      <div class="">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.</div>
      <div class=""><br class="">
      </div>
      <div class="">Richard</div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
ghc-devs mailing list
<a class="moz-txt-link-abbreviated" href="mailto:ghc-devs@haskell.org">ghc-devs@haskell.org</a>
<a class="moz-txt-link-freetext" href="http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs">http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs</a>
</pre>
    </blockquote>
  </body>
</html>