зеркало из https://github.com/golang/build.git
62 строки
2.2 KiB
Markdown
62 строки
2.2 KiB
Markdown
# 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](https://pkg.go.dev/golang.org/x/build/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).
|
|
|
|
To run the analysis frontend connected to a local InfluxDB instance, first
|
|
follow [the instructions to set one up](../influx/README.md).
|
|
Then, run the above command but with the `-influx-host` and `-influx-token`
|
|
flags set to their appropriate values (as specified by the InfluxDB setup
|
|
instructions).
|
|
|
|
Send an HTTP request to https://localhost:8080/cron/sync-influx to sync the
|
|
local instances together.
|
|
|
|
## 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]"
|
|
|
|
## Deployment
|
|
|
|
See the documentation on [deployment](../doc/deployment.md).
|