build/perf
Carlos Amedee e8c8ca12ab all: add license headers
This change adds license headers to files which are missing them.
A modified version of the addlicense tool was used to add these headers:
https://github.com/google/addlicense

The command issued was:
addlicense -c "Go Authors" -l bsd *

Change-Id: Id6fd17c587f99b3ff0ef5f5f35befcfe5aaeef72
Reviewed-on: https://go-review.googlesource.com/c/build/+/409614
Run-TryBot: Carlos Amedee <carlos@golang.org>
Auto-Submit: Carlos Amedee <carlos@golang.org>
Reviewed-by: Carlos Amedee <carlos@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Alex Rakoczy <alex@golang.org>
2022-06-01 18:19:15 +00:00
..
app all: add license headers 2022-06-01 18:19:15 +00:00
Dockerfile perf: add CA certificates to container 2022-04-12 17:45:55 +00:00
Makefile perf: add CA certificates to container 2022-04-12 17:45:55 +00:00
README.md perf: convert app to run on kubernetes 2022-04-08 20:45:57 +00:00
deployment-prod.yaml all: add license headers 2022-06-01 18:19:15 +00:00
main.go perf: add cron endpoint for pushing perfdata to InfluxDB 2022-04-13 15:27:06 +00:00

README.md

Performance analysis system

This package contains the https://perf.golang.org/ benchmark result analysis system. It serves as a front-end to the benchmark result storage system at https://perfdata.golang.org/.

The storage system is designed to have a standardized REST API at https://perfdata.golang.org/, and we encourage additional analysis tools to be written against the API. An example client can be found in the perfdata package.

Local

Both storage and analysis can be run locally; the following commands will run the complete stack on your machine with an in-memory datastore.

To run the storage system:

$ go install golang.org/x/build/perfdata/localperfdata@latest
$ localperfdata -addr=:8081 -view_url_base=http://localhost:8080/search?q=upload: &

To run the analysis frontend:

$ make docker-prod
$ docker run --rm --net=host gcr.io/symbolic-datum-552/perf:latest -listen-http=:8080 -perfdata=http://localhost:8081

Browse to https://localhost:8080 (note that the instance uses a self-signed certificate).

Google Cloud

One-time setup:

  1. IAM setup, based on https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#authenticating_to:

a. Create GCP service account:

$ gcloud iam service-accounts create perf-prod \
    --description="Runs golang.org/x/build/perf"

c. Allow Kubernetes service account (created by deployment-prod.yaml) to impersonate the GCP service account:

$ gcloud iam service-accounts add-iam-policy-binding \
    perf-prod@<PROJECT>.iam.gserviceaccount.com \
    --role roles/iam.workloadIdentityUser \
    --member "serviceAccount:<PROJECT>.svc.id.goog[prod/perf-prod]"