Граф коммитов

81 Коммитов

Автор SHA1 Сообщение Дата
Michael Anthony Knyszek 0370ffc204 perf: display the geomean time series on the front page
This change does a few things:
- Start emitting geomean/<builder details> as a separate time series.
- Add the option to mix benchmarks of all platforms on the same page.
- Set up the front page to show the geomean for each builder we run.

Change-Id: I50bfe0a2f7c92bb7405cf0d799f95c4ec3226a8d
Reviewed-on: https://go-review.googlesource.com/c/build/+/627555
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
Auto-Submit: Michael Knyszek <mknyszek@google.com>
2024-11-18 19:51:16 +00:00
Michael Anthony Knyszek a21e2438b3 perf: fork and use benchtab over benchseries
benchseries seems to fall over on some of our benchmarks and it's
difficult to say why. But, benchstat works just fine.

This CL forks the internals of benchstat and rewrites benchCompare to
use them.

The comparison made by benchstat is slightly different than the one
made by benchseries, but it's not clear to me how. It might make sense
to try and flush InfluxDB and refill it with the new comparison, but I
suspect it's probably not worth it.

This is a reapplication of go.dev/cl/623275 to correctly propagate
bootstrapped ratio data instead of just a summary of the direct
benchmark data.

Change-Id: I24d161130934e59aee4082629e8d0698fef3fde5
Reviewed-on: https://go-review.googlesource.com/c/build/+/626640
Reviewed-by: Michael Pratt <mpratt@google.com>
Auto-Submit: Michael Knyszek <mknyszek@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-11-18 19:51:14 +00:00
Michael Anthony Knyszek 92dcf21b9d perf: make dashboard landing page neutral and add quick links
This adds an extra click to get to the previous dashboard page, but a
follow-up CL will start tracking geomean values and put that on the
homepage.

Change-Id: I178cad30722006629cc1b69917fda650e09cbcb4
Reviewed-on: https://go-review.googlesource.com/c/build/+/626639
Reviewed-by: Michael Pratt <mpratt@google.com>
Auto-Submit: Michael Knyszek <mknyszek@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-11-18 19:51:11 +00:00
Michael Anthony Knyszek 481d784846 perf: add linux/arm64 dropdown option to dashboard
Everything is already wired up and I can manually select data for
linux/arm64 by modifying the query params, so all that's left is adding
a dropdown option to make it easier to find.

Fixes golang/go#70231.

Change-Id: Ide7427f45a042e1ceca75763b440347daf5dabad
Reviewed-on: https://go-review.googlesource.com/c/build/+/627275
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Auto-Submit: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
2024-11-12 17:48:54 +00:00
Michael Pratt d816e4a3b2 perf: extend ingress timeout
Cloud Scheduler calls /cron/syncinflux hourly. If there are several days
of results (because we deleted data and want to re-sync), then this can
take several minutes to complete. Allow longer connections.

Change-Id: I334b86b91e6e0ebe640a7a05afd04f1193c092f6
Reviewed-on: https://go-review.googlesource.com/c/build/+/623999
Reviewed-by: Michael Knyszek <mknyszek@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Carlos Amedee <carlos@golang.org>
2024-11-01 20:49:09 +00:00
Michael Pratt cf374794c8 perf/app: log errors in /cron/syncinflux
Change-Id: Ie6be018b761afcb5684621eeb08cf52aab7d1846
Reviewed-on: https://go-review.googlesource.com/c/build/+/624436
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Auto-Submit: Michael Pratt <mpratt@google.com>
2024-11-01 20:33:30 +00:00
Michael Knyszek d46d86be8f Revert "perf: fork and use benchtab over benchseries"
This reverts commit 0d31c9b6e4.

Reason for revert: This is broken (it send raw measurements, not
a ratio) but even if that's fixed, we're not sure how to compute the
95% confidence bounds for the ratio from the information produced by benchtab.

Change-Id: I9b182668e5f68771bb2c1992e9e1c0a30f8af9c0
Reviewed-on: https://go-review.googlesource.com/c/build/+/623996
Reviewed-by: Michael Pratt <mpratt@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Michael Knyszek <mknyszek@google.com>
2024-11-01 16:00:54 +00:00
Michael Anthony Knyszek 0d31c9b6e4 perf: fork and use benchtab over benchseries
benchseries seems to fall over on some of our benchmarks and it's
difficult to say why. But, benchstat works just fine.

This CL forks the internals of benchstat and rewrites benchCompare to
use them.

The comparison made by benchstat is slightly different than the one
made by benchseries, but it's not clear to me how. It might make sense
to try and flush InfluxDB and refill it with the new comparison, but I
suspect it's probably not worth it.

Change-Id: I7e1ea887106e6d7bd9bb310b6ee34cef47efde19
Reviewed-on: https://go-review.googlesource.com/c/build/+/623275
Reviewed-by: Michael Pratt <mpratt@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-10-30 20:47:14 +00:00
Michael Anthony Knyszek e107a4861d perf: detangle benchseries comparison from influx upload
Right now the benchseries comparison performed on benchmark data and the
influx upload code is deeply intertwined. This makes it hard to test the
benchseries comparison code, and also makes it hard to just try out
one-off comparisons for debugging.

This change splits the logic of these two using a Go 1.23 iterator
(though they're not available in this repository yet).

For #69594.

Change-Id: Ibc104a7abf711b89e5f3a2dced91f6cd7dc9e882
Reviewed-on: https://go-review.googlesource.com/c/build/+/615137
Auto-Submit: Michael Knyszek <mknyszek@google.com>
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-09-30 16:36:56 +00:00
Michael Anthony Knyszek 4b2c343c22 perf: add latest release branch as option in branch drop-down
This was requested by the tools folks because it allows creating stable
links without knowing the magic query parameter.

Change-Id: I29570f70cf89957a54a09d9eb94c45ca1fb8a283
Reviewed-on: https://go-review.googlesource.com/c/build/+/613916
Reviewed-by: Michael Pratt <mpratt@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-09-19 17:32:58 +00:00
Michael Anthony Knyszek f4f673a371 perf: add support for multiple platforms to the dashboard
Currently the dashboard's influx queries hard-code linux/amd64. Remove
the hard-coding by adding a "platform" dropdown to the page and passing
that as a query parameter.

Change-Id: I18c19b95da9aae73b26d93ee850c3181de45b999
Reviewed-on: https://go-review.googlesource.com/c/build/+/613719
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
2024-09-19 17:32:49 +00:00
Michael Anthony Knyszek 8d2443a247 perf: fix dashboard link bug where repo for commit was always "go"
Currently the "table"/"unit" page has its commit links broken because
the repository value is loaded from the drop-down UI element.
Unfortunately, that doesn't work because the callbacks for fetching
formfields.js won't run until the top-level code is done, so the UI
elements won't be properly prefilled.

Instead of relying on that, access the source-of-truth to get the
repository: the query parameters. This fixes the bug.

Change-Id: I91d3c81036e3722951d5353cdf4b5cff5c7c61a3
Reviewed-on: https://go-review.googlesource.com/c/build/+/613915
Reviewed-by: Michael Pratt <mpratt@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Michael Knyszek <mknyszek@google.com>
2024-09-17 17:52:31 +00:00
Dmitri Shuralyov 298fa01b01 influx, perf: update Dockerfile to build with Go 1.23
Change-Id: Ife18300373ea73af34f80a3d161794f50737cde5
Reviewed-on: https://go-review.googlesource.com/c/build/+/611555
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
2024-09-09 15:47:43 +00:00
Michael Anthony Knyszek 73ba4218a3 perf: tweak isHigherBetter heuristic
With the CockroachDB benchmark, we now have some new units where higher
is better that don't get matched in the current heuristic. Change the
heuristic to look at unit suffixes to identify some common patterns for
describing throughput.

Change-Id: Ifebf661e2ed0dd104f211e54b9463c571ac8d008
Reviewed-on: https://go-review.googlesource.com/c/build/+/593095
Reviewed-by: Michael Pratt <mpratt@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-06-17 20:01:49 +00:00
Michael Anthony Knyszek f8a91cfcf0 perf: dynamically fill in branch options from maintner
This change adds the formfields.json endpoint which the web client hits
to figure out what the valid form options should be. For now, it only
returns the full list of latest Go release branches as well as the
single latest release branch. This information is then used to
dynamically populate the branch dropdown. This means we no longer have
to manually update the list of supported releases.

While we're here, let's also add support for "latest-release" as a
pseudo-branch that picks the latest release. This allows subrepositories
which do not benchmark against Go at master to generate evergreen static
links to their benchmarks.

Fixes golang/go#67530.

Change-Id: I8b1060686be86f5d1ecc55ae92e632873e60a445
Reviewed-on: https://go-review.googlesource.com/c/build/+/590656
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
2024-06-13 20:52:07 +00:00
Michael Anthony Knyszek 3a748bdd38 perf: show the full commit history on the units page
This change modifes the units page to show the full commit history as
the timeline, leaving blank spaces where there isn't any data for an
experiment commit. This makes skipped commits and commit ranges much
more obvious.

Change-Id: I71aa2390ab1b98053065537ca038f81d3eb491fc
Reviewed-on: https://go-review.googlesource.com/c/build/+/587921
Auto-Submit: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-05-24 17:30:47 +00:00
Michael Anthony Knyszek cba72a92d9 perf: update default set of benchmarks
A bunch of the default benchmarks are no longer tracked (thier names
were updated). We can also stand to add a few additional benchmarks as
well; the page isn't very full.

Change-Id: I6b92d278ef7e8b7b33cb9d9fc4fb7c41e2884247
Reviewed-on: https://go-review.googlesource.com/c/build/+/587618
Reviewed-by: Michael Pratt <mpratt@google.com>
Auto-Submit: Michael Knyszek <mknyszek@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-05-24 17:30:45 +00:00
Michael Anthony Knyszek 8dfa8a012b perf: make the dashboard charts' X axes based on the real commit history
A long-standing problem with the existing charts is that they always
expand out all data to fit the chart, since each commit is given equal
space on each chart. For benchmarks that go away, or change names, or
are added, this makes comparing two charts side-by-side difficult and
confusing.

The crux of the problem is that the commit list the charts are based on
is the list of commits that actually had benchmark runs for a given
builder.

This change modifies the charts' X axes to be based on the real commit
history of the repository, which is fetched by the server and passed
down to the client.

This also fixes a graphical bug with some of the binary size benchmarks
which have multiple data points for the same commit. Because the
benchmark samples are projected onto a separate history, it'll prevent
the squeezing that happens.

Change-Id: I8b341434b5443fa3bd4386b263dfef659bd509dc
Reviewed-on: https://go-review.googlesource.com/c/build/+/587617
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
Auto-Submit: Michael Knyszek <mknyszek@google.com>
2024-05-24 17:29:28 +00:00
Michael Anthony Knyszek 16a1c3d308 perf: update the default benchmarks' suffixes from -8 to -16
We moved from 8 core machines for performance tests recently to 16
core machines. Some of the benchmark names changed as a result. This
change updates those benchmarks that appear on the landing page.

Change-Id: If8964aff3491da3a5dd7d75d1ea7a9ab12365e88
Reviewed-on: https://go-review.googlesource.com/c/build/+/570239
Reviewed-by: Michael Pratt <mpratt@google.com>
Reviewed-by: David Chase <drchase@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-03-11 16:22:00 +00:00
Michael Anthony Knyszek 9a3c313d46 perf: fix the dashboard landing page
Currently the dashboard landing page is broken because no data for some
of the benchmarks can be found. The reason for this is that we switched
to 16 core machines, so the old -8 benchmarks don't have data in the
last 30 days.

This change switches to using errors.Is for errBenchmarkNotFound. The
reason for the poor error message is because this error gets wrapped,
and we're not searching for it correctly. Using errors.Is let's us check
for the error more robustly. Also, if we can't find data on a particular
benchmark on the default page, I think it's OK to just skip it in
general. It'll be fairly obvious if something is wrong and all the data
is missing.

Change-Id: Iaad6700a6cb35d7ec1b2444b422d35fd55631f41
Reviewed-on: https://go-review.googlesource.com/c/build/+/570238
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-03-11 16:21:42 +00:00
Dmitri Shuralyov f15cdea17d cmd/coordinator, perf/app: prepare a placeholder banner
We initially intended for a banner to show up to notify users about
a migration affecting the old dashboard. A banner turned out not to
be needed at this time. Since it was already prepared and might end
up being useful later on, add an invisible placeholder for now.

Unfortunately, it would take more refactoring than I was willing to
take on at this stage to make it possible for the unified banner to
be implemented in one place, so it is instead implemented inline in
multiple places.

For golang/go#65913.

Change-Id: I86fbf17b56711f0855e206e803eff8271019b6a8
Reviewed-on: https://go-review.googlesource.com/c/build/+/567498
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
2024-02-29 21:53:05 +00:00
Michael Pratt 8f1a059be0 perf: update builder name, dashboard description
Change-Id: I1092207a01c5cf6c4d56f9900d33fba1317a1d12
Reviewed-on: https://go-review.googlesource.com/c/build/+/566975
Auto-Submit: Michael Pratt <mpratt@google.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-02-26 18:45:25 +00:00
Michael Anthony Knyszek 3d1fda8489 perf: tweak the dashboard page
- Change links to point at the LUCI build dashboard.
- Call the branch input "Go branch" and tweak the help text to match.
- Add some helpful text if no data could be fetched for charts.
- Update the release branch list to include new releases and drop old
  ones.

Change-Id: If821a9919d5ae3e07ddc7e394c8887db0bb1d146
Reviewed-on: https://go-review.googlesource.com/c/build/+/563875
Reviewed-by: Michael Pratt <mpratt@google.com>
Auto-Submit: Michael Knyszek <mknyszek@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-02-13 17:51:19 +00:00
Michael Pratt 1dce082512 perf: mention wiki page on dashboard
Otherwise no one will ever find it.

Change-Id: Ibcaf2df7d7b4a190dc7fa17f1bed92502830b6af
Reviewed-on: https://go-review.googlesource.com/c/build/+/563403
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Michael Pratt <mpratt@google.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
2024-02-13 00:10:26 +00:00
Michael Anthony Knyszek b9b8ded595 perf: add baseline and benchmarks commits to per-unit page
Currently there's no way to identify a baseline change or a change in
the benchmarks as the source of a regression or improvement. This change
adds this information to the per-unit page, which at least allows for
*some* way to check it in the UI.

Change-Id: I28bfe7eca1dfb2792a1f7adc94b3ac7b4aa8911e
Reviewed-on: https://go-review.googlesource.com/c/build/+/563400
Reviewed-by: Michael Pratt <mpratt@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Michael Knyszek <mknyszek@google.com>
2024-02-12 19:49:41 +00:00
Michael Anthony Knyszek d8b3a64ed0 perf: switch to collecting LUCI benchmark results
Currently perf.golang.org ingests only benchmark results produced by the
coordinator service account. Now that the LUCI perf builders are up, we
should target those instead. This change makes the switch.

Although it might seem prudent to support the old and new infrastructure
simultaneously, the old infra's perf builder has been broken since the
Go 1.22 release, since it's running out of disk space. (The LUCI
machines have plenty of disk space, so this shouldn't be a problem going
forward.) This presents an opportunity to do a clean switch and not fix
the old builder at all.

Change-Id: I7005f9d0996d20da0c4e01d36088ecd2e9e14021
Reviewed-on: https://go-review.googlesource.com/c/build/+/563399
Reviewed-by: Michael Pratt <mpratt@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-02-12 19:29:29 +00:00
Dmitri Shuralyov 2e1eb85ccb all: use Go 1.21 for building services
Use a newer supported version.

For golang/go#64169.

Change-Id: Ice8fea55951bf1615a04aca24a870556c281877a
Reviewed-on: https://go-review.googlesource.com/c/build/+/556359
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Carlos Amedee <carlos@golang.org>
2024-01-17 23:47:09 +00:00
cui fliter ef07766874 all: remove the repetitive word
Change-Id: I9ec730f3db878a0e6de38b5b513b4d1ce8182eff
Reviewed-on: https://go-review.googlesource.com/c/build/+/537835
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Carlos Amedee <carlos@golang.org>
Run-TryBot: shuang cui <imcusg@gmail.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
2023-10-26 14:43:04 +00:00
Dmitri Shuralyov 39811cbf78 all: migrate to cloud.google.com message types
Done with:

go run cloud.google.com/go/internal/aliasfix/cmd/aliasfix@latest .
go mod tidy

As suggested in the package deprecation note¹.

¹ https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/secretmanager/v1#pkg-overview

Change-Id: Ibf91029e113b9cb199a306c7516a48c0307514e0
Reviewed-on: https://go-review.googlesource.com/c/build/+/531976
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Carlos Amedee <carlos@golang.org>
2023-10-02 13:54:14 +00:00
cui fliter 5a5198dc10 perf/app: gofmt format
Change-Id: I2c308bcd0f0b603bdedeeef64dff64f3ef4ae4aa
Reviewed-on: https://go-review.googlesource.com/c/build/+/520576
Reviewed-by: Ian Lance Taylor <iant@google.com>
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Run-TryBot: Dmitri Shuralyov <dmitshur@golang.org>
Run-TryBot: Ian Lance Taylor <iant@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Auto-Submit: Ian Lance Taylor <iant@google.com>
2023-08-18 21:41:24 +00:00
Carlos Amedee 590d2aa95d all: update the minimum go version to 1.20
This updates the repository to a currently supported version of
go1.20. Most of the Docker configuration files have been updated to
use go1.20 and Debian bookworm. This change is needed in order to
import some of the LUCI packages we intend to use.

Change-Id: Ibef9f2e5a0d5ee5b842cf4559c858630e32528eb
Reviewed-on: https://go-review.googlesource.com/c/build/+/518296
Auto-Submit: Carlos Amedee <carlos@golang.org>
Run-TryBot: Carlos Amedee <carlos@golang.org>
Reviewed-by: Heschi Kreinick <heschi@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Carlos Amedee <carlos@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
2023-08-10 19:26:26 +00:00
Michael Pratt 03ab3b014c perf: add PGO comparisons to dashboard
CL 498278 starts collecting PGO benchmark results with key pgo:on. This
CL adds PGO results to the dashboard via two different comparison
dimensions:

1. "/pgo=on,toolchain:baseline-vs-experiment" is "toolchain:baseline" vs
   "toolchain:experiment" when "pgo:on". i.e., how much has performance
   changed since baseline if PGO has been enabled the entire time.

2. "/toolchain:experiment,pgo=off-vs-on" is "pgo:off" vs "pgo:on" for
   "toolchain:experiment". i.e., how much performance changes when
   enabling PGO at experiment.

These names are added as a suffix to the existing benchmark name. The
unmodified benchmark name remains the same as before:
"toolchain:baseline" vs "toolchain:experiment" when "pgo:off".

I would argue that tracking (1) makes the most sense for a few reasons:

a. It is easier to understand the charts. If we make a non-PGO
optimization, both the standard (non-PGO) and (1) charts will show
improvement. If we make a PGO optimization, the standard chart will be
unchanged and (1) will show improvement. If we track (2), a non-PGO
optimization may show a regression (percentage closer to zero but still
negative) because the slightly faster experiment build has a smaller
percentage improvement when PGO is applied. This looks like things are
worse even though the overall binary is still faster.

b. The ultimate goal of PGO is to save money by making more efficient
binaries, which is what (1) shows, not to make a big delta vs PGO
disabled. The delta from PGO disabled is effectively "marketing" to show
folks it is worthwhile to switch it on.

That said, both can be interesting views, so this CLs enables both while
we gain experience with them.

Adding PGO runs is expected to increase benchmarking time to closer to
8hr. Bump the timeout to be safe.

Change-Id: I974aa84c03ac8df4b4c483c57a98805edc708574
Reviewed-on: https://go-review.googlesource.com/c/build/+/498335
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Run-TryBot: Michael Pratt <mpratt@google.com>
2023-06-13 20:22:09 +00:00
Michael Anthony Knyszek 5dcd7847d1 perf: change dashboard homepage defaults
The Tile38 benchmarks were merged, so use the merged one. Also add p99
latency.

Change-Id: I6d36f8cd4d4cc60e25b754fc9136cce3832280e0
Reviewed-on: https://go-review.googlesource.com/c/build/+/491016
Reviewed-by: Michael Pratt <mpratt@google.com>
Auto-Submit: Michael Knyszek <mknyszek@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Michael Knyszek <mknyszek@google.com>
2023-05-01 20:40:14 +00:00
Michael Pratt f9fc598189 perf/app: drop BleveQuery from dashboard home page
This benchmark was deleted and now the home page doesn't load because
there is no data.

For golang/go#58534.

Change-Id: Ic203932f6d9896dcd102484721cfe73152590403
Reviewed-on: https://go-review.googlesource.com/c/build/+/478615
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Michael Pratt <mpratt@google.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
2023-03-24 19:17:19 +00:00
Dmitri Shuralyov 7bf60f09df all: make copyright headers consistent
Replace "Go Authors" with "The Go Authors." to be consistent with the
standard copyright header at https://go.dev/doc/contribute#copyright.
There were also a couple instances of a double space and double "the".

Change-Id: Ife7a80dd40f1a760ba85cbfee270356d46cfc53f
Reviewed-on: https://go-review.googlesource.com/c/build/+/472376
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Run-TryBot: Dmitri Shuralyov <dmitshur@golang.org>
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
2023-03-01 01:31:01 +00:00
Oleksandr Redko 47c00be222 all: change golang.org/x/net/context to context
Run commands:
- go tool fix -r context .
- goimports .

Change-Id: I231da3b8de36a0362f5988df7b00bb4bfec6d58a
Reviewed-on: https://go-review.googlesource.com/c/build/+/468015
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Run-TryBot: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Michael Pratt <mpratt@google.com>
2023-02-15 22:02:43 +00:00
Michael Anthony Knyszek cef3db4d56 perf: replace regression page issue links with emojis for good results
Also fixes the higher is better logic for this page. Oops.

Change-Id: I27aa263526bd2be39f0ca55248e35b4b2cc672d8
Reviewed-on: https://go-review.googlesource.com/c/build/+/464356
Run-TryBot: Michael Knyszek <mknyszek@google.com>
Reviewed-by: David Chase <drchase@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
2023-01-31 18:41:00 +00:00
Michael Anthony Knyszek 892b779645 perf: UI tweaks for per-unit dashboard page
This change adds a vertical line at 0% that spans the page (meticulously
removing sources of padding and borders from the table to achieve it)
and also makes the center line thinner.

Change-Id: I79b1bbf77be7a8fc2e2d7cc8e368efedaddcecca
Reviewed-on: https://go-review.googlesource.com/c/build/+/464355
Reviewed-by: Michael Pratt <mpratt@google.com>
Reviewed-by: David Chase <drchase@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Michael Knyszek <mknyszek@google.com>
Auto-Submit: Michael Knyszek <mknyszek@google.com>
2023-01-31 17:48:28 +00:00
Michael Anthony Knyszek 55a7c19884 perf: fix scroll-to glitch for anchors on per-unit dashboard page
Currently commits on the per-unit dashboard page have anchors with IDs
that directly contain the commit hash. Although this hash is always a
valid ID, it may not be a valid CSS selector because it may start with a
digit. Fix this my prepending all anchors with the string "commit" and
updating links.

This also cleans up some logic with commitSelected in addTable.

Change-Id: I6d9a9306406c7778261c97a039bb284f17490f5e
Reviewed-on: https://go-review.googlesource.com/c/build/+/464298
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Michael Pratt <mpratt@google.com>
Run-TryBot: Michael Knyszek <mknyszek@google.com>
Auto-Submit: Michael Knyszek <mknyszek@google.com>
2023-01-31 16:48:35 +00:00
Michael Anthony Knyszek cf38df6916 perf: improve regressions page on performance dashboard
This change makes a few improvements to the regressions page:
1. It binds regressions to benchmark+unit, so now the regressions page
   might break up the groupings compared to before (which is probably
   OK).
2. This binding lets us avoid putting regression information into the
   benchmark name, which previously broke the title's link, so this
   change also moves that information to just above each graph.
3. This change adds a link to the regression information which jumps to
   the offending commit on the per-benchmark+unit page.
4. It adds a file-an-issue link to the regressions page which
   streamlines some of the overhead of triaging.

Note that deltaScore isn't exported to the regressions page anymore
because JSON can't tolerate negative infinities, and the new code is
trying to be as simple as possible. The next step is probably to filter
out non-regressions entirely, rather than try to make the deltaScore
work. We can also always bring it back as a string if we feel it's very
useful.

Change-Id: Ib7cf16ef92534fd1d9b9c23798e9474e20f4e8c2
Reviewed-on: https://go-review.googlesource.com/c/build/+/459518
Run-TryBot: Michael Knyszek <mknyszek@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Michael Pratt <mpratt@google.com>
2023-01-20 21:48:02 +00:00
Michael Anthony Knyszek ed57e0e2c4 perf: plumb repository into UI links
Change-Id: I8b50359ff887b35912143954f10fb03944318b2e
Reviewed-on: https://go-review.googlesource.com/c/build/+/462975
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
2023-01-20 21:47:58 +00:00
Michael Anthony Knyszek 5589198e8a perf: add per-unit page to dashboard
This page helps avoid the need to zoom in on the chart SVGs to try and
select exactly the commit you want. It essentially shows an expanded
version of the graph as a table.

Change-Id: Ibf17f23c267b3ba0b1e4c51c32c6b5c927f53a95
Reviewed-on: https://go-review.googlesource.com/c/build/+/459517
Run-TryBot: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
2023-01-20 21:47:53 +00:00
Michael Anthony Knyszek 5ffb58e67f perf: make the dashboard significantly more compact
This makes the "regressions first" dashboard look kind of bad, but
that's OK; we'll clean that up in follow-up CLs.

Change-Id: I18c83c0e05fc996e50cb9fca33af738e50c58628
Reviewed-on: https://go-review.googlesource.com/c/build/+/459516
Run-TryBot: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
2023-01-20 21:47:49 +00:00
Michael Pratt 1d025eeba0 all: upgrade to golang.org/x/perf@3fd27c2392831a268043c8e09d4599e7f1c441d3
This fixes AllComparisonSeries to return errors rather than panicking.

For golang/go#53538.

Change-Id: I872a1a77c8aedc3827dec650c21afa7c68b540af
Reviewed-on: https://go-review.googlesource.com/c/build/+/459195
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
Auto-Submit: Michael Pratt <mpratt@google.com>
Run-TryBot: Michael Pratt <mpratt@google.com>
2022-12-22 17:50:15 +00:00
Michael Pratt cabcec969b perf: dashboard support for multiple branches
First and foremost, we must ingest uploads on alternative branches.
Right now ingest only branch master.

On the frontend, add a dropdown for branch, very similar to the
repository dropdown. In the future, we should probably fetch a list of
branches rather than hard-coding them.

Note that the branch here is the Go branch that the perf builder
triggered against, which is a bit confusing for subrepos, but I've added
a note to try to explain.

For golang/go#53538.

Change-Id: Ib5b74b9e5d7b67ce2b04bc2bb22e3521dffaee36
Reviewed-on: https://go-review.googlesource.com/c/build/+/459155
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Run-TryBot: Michael Pratt <mpratt@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
2022-12-22 17:14:18 +00:00
Michael Pratt e2a6520670 perf: add repository selection drop-down
The tools repo will soon have benchmark results. Split the dashboard by
repository (default 'go'), so that results aren't mixed together.

This is pretty straightforward. The Influx queries filter by repository
(backfilling any points without the 'repository' field as 'go') via a
URL parameter. The frontend adds a drop-down box to select the
repository.

The "All benchmarks" and "Regressions first" links unfortunately don't
maintain the repository setting (or duration/end time). That requires a
bit more JS magic.

For golang/go#53538.

Change-Id: I1d46a23558a37feef4c8c89cfb9c3927304ebb60
Reviewed-on: https://go-review.googlesource.com/c/build/+/458996
Run-TryBot: Michael Pratt <mpratt@google.com>
Reviewed-by: Dylan Le <dungtuanle@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
2022-12-21 22:21:55 +00:00
Michael Pratt 6ae4b6972c perf: fix influx string validation
We need to match the entire string to avoid quotes, not just any part of
it. While we are here, log all queries we make.

Change-Id: I5daff2a7a13d607f0e5450e5a3b8f966a20ada47
Reviewed-on: https://go-review.googlesource.com/c/build/+/458997
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Run-TryBot: Michael Pratt <mpratt@google.com>
Auto-Submit: Michael Pratt <mpratt@google.com>
2022-12-21 22:19:43 +00:00
Heschi Kreinick 826bc42c71 internal/https: add health checking support and use it
CL 454935 broke the Kubernetes ingress by requiring IAP on health
checks. Move /healthz handling into internal/https, where it
automatically bypasses authentication and removes some duplicate trivial
implementations.

Unfortunately, GKE is not capable of inferring health check parameters
from a multi-container pod like relui, so we have to change our
BackendConfig. That sets off a yak shave -- I made the questionable
decision to use the same backend for all our IAP services, and the
coordinator doesn't currently support /healthz. Split all them up and
delete the devapp configuration I was using for testing way back in the
day.

Change-Id: I45e866d30508a07e9a805de70af731dd64c22d7f
Reviewed-on: https://go-review.googlesource.com/c/build/+/455215
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Auto-Submit: Heschi Kreinick <heschi@google.com>
Run-TryBot: Heschi Kreinick <heschi@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
2022-12-05 19:20:45 +00:00
Michael Anthony Knyszek 1954702aff perf: update docs with influx testing instructions
Change-Id: Iea024f4eb20167df03f114fd3a26bd291e7d128d
Reviewed-on: https://go-review.googlesource.com/c/build/+/450895
Reviewed-by: David Chase <drchase@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Michael Knyszek <mknyszek@google.com>
2022-11-16 23:07:30 +00:00
Michael Pratt 51d7d4d59e perf: move unrelated types/consts
These are not related to regression detection, so move them from the
middle of the regression functions.

For golang/go#48803.

Change-Id: If9d0d1d7560c54db5da6feb83cdaaffa803ba056
Reviewed-on: https://go-review.googlesource.com/c/build/+/442259
Reviewed-by: David Chase <drchase@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Michael Pratt <mpratt@google.com>
2022-10-11 20:16:49 +00:00