New Instance Checklist

When launching a new Perf instance:

1. Create new database in CockroachDB.

$ ./cockroachdb/connect.sh
If you don't see a command prompt, try pressing enter.
root@perf-cockroachdb-public:26257/defaultdb> CREATE DATABASE flutter_flutter2;
CREATE DATABASE

Time: 24.075052ms

2. Perform the migrations on the new database to create the tables. See

COCKROACH.md.

First port-forward in the production database:

kubectl port-forward perf-cockroachdb-0 26257:26257

Then apply the migrations:

$ perf-tool database migrate \
   --config_filename=./configs/flutter-flutter2.json  \
   --connection_string=postgresql://root@localhost:26257/flutter_flutter2?sslmode=disable

3. Add the database to be backed up to ./images/backup/backup.sh.

4. Push a new version of perf-cockroachdb-backup.

  • make push_backup

5. Optional: Add a script to create a new service account in secrets with

access to the Google Cloud Storage location containing the files to ingest. This step is optional if you are re-using an existing service account, such as skia-perf-sa for the new instance. Note that there may be different service accounts for ingestion vs front-end instances. For example perf-ingest@skia-public.iam.gserviceaccount.com is typically used for ingestion instances.

#/bin/bash

# Creates the service account for flutter perf.
../../kube/secrets/add-service-account.sh \
  skia-public \
  skia-public \
  flutter-perf-service-account \
  "The flutter perf service account." \
  roles/pubsub.editor \
  roles/cloudtrace.agent

Create the secrets:

./secrets/create-flutter-perf-service-account.sh

Apply the secrets to the cluster.

../kube/secrets/apply-secret-to-cluster.sh skia-public flutter-perf-service-account

6. Create the PubSub topic for ingestion.

This creates the topic.

perf-tool config create-pubsub-topics --config_filename=./configs/angle.json

7. Configure GCS to emit PubSub Events:

This configures the GCS bucket/directory to send PubSub events to that topic when new files arrive:

#/bin/bash
# Creates the PubSub topic for Android Perf files and then ties it to GCS
# notifications.

set -e -x

PROJECT_ID=skia-public
TOPIC=perf-ingestion-flutter-flutter2

gsutil notification create -f json -e OBJECT_FINALIZE -t projects/${PROJECT_ID}/topics/${TOPIC} -p flutter-flutter gs://flutter-skia-perf-prod

Note that for buckets not owned by the Skia Infra team this command needs to be run by someone with admin rights on the bucket and also the ability to create the link to the pubsub receiver in the skia-public project. For non-Skia Infra buckets I've found the easiest thing to do is give the requester privileges to the skia-public project (for an hour) and have them run the above command.

8. Start new “perfserver ingest” instances for the given data with new service

account.

9. [Optional] Use perf-tool to forcibly trigger re-ingestion of existing files.

perf-tool ingest force-reingest --config_filename=./configs/flutter-flutter2.json

10. Once data has been ingested stand up the “perfserver frontend” instance.

11. Push skfe.

Once the new instance of the frontend is running push a new version of SKFE so we route traffic to the new instance:

  cd skfe
  make release

12. Add probers for the frontend.