- There are two things going on:
- CI perf measurements
- Local machine perf measurements
I think that they are somehow handled differently (why?) but they are all muddled up on the wiki page.
They are handled differently because we do not want to compare
local metrics with CI metrics. The exception is when local metrics
don't exist, then we fall back to CI metrics as a baseline (see How
baseline metrics are calculated).
Getting to the *raw data* should be easy:
- My goal is this:
- Start with a master commit, say from Dec 2019.
- Implement some change, on a branch.
- sh validate –legacy (or something else if you like)
- Look at perf regressions.
python3 testsuite/driver/perf_notes.py --chart
chart.html --test-env local <baseline> <target>
python3 testsuite/driver/perf_notes.py --help`
for
more filtering options. This doesn't detect regressions
automatically, it only shows you the raw data. Ideally we'd add an
option to the testrunner to let you specify a baseline commit
manually. I suspect that would be close to what you're looking for.Yes, this fetches the latest CI metrics into your git notes.
- I believe I have first to utter the incantation
$ git fetch https://gitlab.haskell.org/ghc/ghc-performance-notes.git refs/notes/perf:refs/notes/ci/perf
see above.
- But then:
- How do I ensure that the baseline perf numbers I get relate to the master commit I started from, back in Dec 2019? I don’t want numbers from Jan 2020.
The test runner should use HEAD's metrics automatically (see How baseline metrics are calculated), though you will need to fetch CI metrics or run the perf tests locally on HEAD to get the relevant metrics.
- If I rebase my branch on top of HEAD, say, how do I update the perf baseline numbers to be for HEAD
The test runner will output (per test) which baseline commit is used e.g. "... from local
- Generally, how can I tell the commit to which the baseline numbers relate?
- Also, in my tree I have a series of incremental changes; I want to see if any of them have perf regressions. How do I do that?
You can run the perf tests on each commit *in commit order*, and the previous commit will always be used as the baseline. You can also then chart the results:
python3 testsuite/driver/perf_notes.py --chart
chart.html --test-env local
<oldestCommit>..<newestCommit>
Sorry if this is a bit unoptimal, but I Hope that helps
- David E
-- David Eichmann, Haskell Consultant Well-Typed LLP, http://www.well-typed.com Registered in England & Wales, OC335890 118 Wymering Mansions, Wymering Road, London W9 2NF, England