perf/

directory
v0.0.0-...-9dab196 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 27, 2024 License: BSD-3-Clause

README

SkiaPerf Server

Reads Skia performance data from databases and serves interactive dashboards for easy exploration and annotations.

Developing

First check out this repo and get all the dependencies per this README.md, including the Cloud SDK, which is needed to run tests locally.

All building and testing is done by Bazel, but there is a Makefile that records regularly used commands.

Build

To build the full project:

bazelisk build --config=mayberemote //perf/...

Test

To run all the tests:

bazelisk test --config=mayberemote //perf/...

Note the first time you run this it will fail and inform you of the gcloud simulators that need to be running in the background and how to start them.

Running locally

To run a local instance of Perf against a fake dataset:

  1. Run with a fresh database (demo data ingested)

    make run-demo-instance
    
  2. Run without tearing down database (expects a running database on the machine)

    make run-demo-instance-db-persist
    

If you are interested in reading more about the local database, refer to this doc

You can also view demo/test pages of a web components by running demopage.sh from the root of the repo and passing in the relative path of the web component you want to view, for example:

./demopage.sh perf/modules/day-range-sk

Additionally, the remote backend can be reverse-proxied such that the demo page server will forward APIs under /_/ to the remote backend (ENV_REMOTE_ENDPOINT)

ENV_REMOTE_ENDPOINT='https://v8-perf.skia.org' ./demopage.sh perf/modules/day-range-sk

or

ENV_REMOTE_ENDPOINT='https://v8-perf.skia.org' bazelisk run //perf/modules/plot-summary-sk:demo_page_server

This will allow the demo page to fetch the real data.

Note you need to have entr installed for this to work:

sudo apt install entr

Legacy mode with CockroachDB (Deprecated)

In addition you will also need to install the full executable cockroach. In order to successfully install and work on the command, here are a set of cautions when installing coakroach on your machine:

  • Make sure to download the Full Binary version : https://www.cockroachlabs.com/docs/releases#v22-1. Choose the v22-1 full binary version for compatibility with Schema validation on your machine. Linux version is for cloudtop, and ARM 64-bit is for Mac.

    • After downloading the cockroach version, we extract the download archive anywhere(default is from Downloads), and then unzip the archive file to export that directory into the path variable.

    • Alternative, we can unzip the downloaded cockroach file, open the lib folder, and copy the libgeos.so and libgeos_c.so files from current path into the /usr/local/lib/cockroach folder, eg.

      cp -i /usr/local/google/home/username/Downloads/cockroach-v22.1.22.linux-amd64/lib/libgeos.so /usr/local/lib/cockroach
      
    • Then export path

      export PATH=$PATH:/path/to/cockroach
      
    • Then add this path into the .bashrc file. Also make sure to source the .bashrc file under the current path to refresh the active terminal, or open a new terminal.

    • After that, run

      cockroach start-single-node --insecure --listen-addr=127.0.0.1:26257
      

      (nit: listen-address is set by default)

    • Then type dt, you will see a list of local tables with no data.

    • To confirm that the cockroach installation has been completed, we should open a SQL shell to this running database, by running

      cockroach sql --insecure --host=localhost:26257
      

Directories

Path Synopsis
Command line application to filter the output of a CSV file downloaded from Perf.
Command line application to filter the output of a CSV file downloaded from Perf.
Generates demo data to go along with the demo repo at https://github.com/skia-dev/perf-demo-repo.
Generates demo data to go along with the demo repo at https://github.com/skia-dev/perf-demo-repo.
go
alerts/sqlalertstore
Package sqlalertstore implements alerts.Store using SQL.
Package sqlalertstore implements alerts.Store using SQL.
anomalygroup/proto/v1/mocks
Code generated by mockery v0.0.0-dev.
Code generated by mockery v0.0.0-dev.
bug
bug is a package for handling bug reporting URLs.
bug is a package for handling bug reporting URLs.
builders
Package builders builds objects from config.InstanceConfig objects.
Package builders builds objects from config.InstanceConfig objects.
config/generate
Program to generate JSON Schema definitions for the InstanceConfig struct.
Program to generate JSON Schema definitions for the InstanceConfig struct.
ctrace2
ctrace makes Traces into ClusterableTraces which can then be used in kmeans.
ctrace makes Traces into ClusterableTraces which can then be used in kmeans.
culprit/proto/v1/mocks
Code generated by mockery v0.0.0-dev.
Code generated by mockery v0.0.0-dev.
culprit/sqlculpritstore
Package storage implements culprit.Store using SQL.
Package storage implements culprit.Store using SQL.
dataframe
Package dataframe provides DataFrame which is a TraceSet with a calculated ParamSet and associated commit info.
Package dataframe provides DataFrame which is a TraceSet with a calculated ParamSet and associated commit info.
dfiter
Package dfiter efficiently creates dataframes used in regression detection.
Package dfiter efficiently creates dataframes used in regression detection.
dryrun
dryrun allows testing an Alert and seeing the regression it would find.
dryrun allows testing an Alert and seeing the regression it would find.
file
Package file is a source of file names and contents that contain data for Perf to ingest.
Package file is a source of file names and contents that contain data for Perf to ingest.
file/dirsource
Package dirsource implements the file.Source interface for filesystem directories.
Package dirsource implements the file.Source interface for filesystem directories.
file/gcssource
Package gcssource implements files.Source on top of Google Cloud Storage.
Package gcssource implements files.Source on top of Google Cloud Storage.
filestore/gcs
Package gcs implements fs.FS using Google Cloud Storage.
Package gcs implements fs.FS using Google Cloud Storage.
filestore/local
Package local implements fs.FS for local files
Package local implements fs.FS for local files
frontend
Package frontend contains the Go code that servers the Perf web UI.
Package frontend contains the Go code that servers the Perf web UI.
git
Package git manages a cache of git commit info that's stored in the database.
Package git manages a cache of git commit info that's stored in the database.
git/gittest
Package gittest has utilities for testing perf/go/git.
Package gittest has utilities for testing perf/go/git.
git/provider
Package provider contains types and interfaces for interacting with Git repos.
Package provider contains types and interfaces for interacting with Git repos.
git/providers
Package providers builds different kinds of provider.Provider.
Package providers builds different kinds of provider.Provider.
git/providers/git_checkout
Package git_checkout implements provider.Provider by shelling out to run git commands.
Package git_checkout implements provider.Provider by shelling out to run git commands.
git/providers/gitiles
Package gitiles imlements provider.Provider using the Gitiles API.
Package gitiles imlements provider.Provider using the Gitiles API.
graphsshortcut
Package graphsshortcut handles storing and retrieving shortcuts for graphs.
Package graphsshortcut handles storing and retrieving shortcuts for graphs.
graphsshortcut/graphsshortcuttest
Package graphsshortcuttest has common code for tests of implementations of graphsshortcut.Store.
Package graphsshortcuttest has common code for tests of implementations of graphsshortcut.Store.
ingest/filter
Package filter implements Accept/Reject filtering of file.Names.
Package filter implements Accept/Reject filtering of file.Names.
ingest/format
Package format is the format for ingestion files.
Package format is the format for ingestion files.
ingest/format/generate
Program to generate JSON Schema definitions for the InstanceConfig struct.
Program to generate JSON Schema definitions for the InstanceConfig struct.
ingest/parser
Package parser has funcs for parsing ingestion files.
Package parser has funcs for parsing ingestion files.
ingest/process
Package process does the whole process of ingesting files into a trace store.
Package process does the whole process of ingesting files into a trace store.
ingestevents
Package ingestevents is a package with helper functions for ingestion PubSub events, the ones that are sent when a file in done ingesting and received by a clusterer to trigger regression detection.
Package ingestevents is a package with helper functions for ingestion PubSub events, the ones that are sent when a file in done ingesting and received by a clusterer to trigger regression detection.
initdemo
This application creates the 'demo' database on a local CockroachDB instance and also applies the latest schema.
This application creates the 'demo' database on a local CockroachDB instance and also applies the latest schema.
kmeans
kmeans implements a generic k-means clustering algorithm.
kmeans implements a generic k-means clustering algorithm.
maintenance
Package maintenance runs long running processes for a single perf instance.
Package maintenance runs long running processes for a single perf instance.
notify
Package notify is a package for sending notifications.
Package notify is a package for sending notifications.
perf-tool
Command-line application for interacting with Perf.
Command-line application for interacting with Perf.
perfserver
perfserver is the single executable that contains the sub-commands that make up a running Perf system, including the web ui, the ingestion process, and the regression detection process.
perfserver is the single executable that contains the sub-commands that make up a running Perf system, including the web ui, the ingestion process, and the regression detection process.
pivot
Package pivot provides the ability to pivot dataframes.
Package pivot provides the ability to pivot dataframes.
progress
Package progress is for tracking the progress of long running tasks on the backend in a way that can be reflected in the UI.
Package progress is for tracking the progress of long running tasks on the backend in a way that can be reflected in the UI.
redis
Package redis implements the redis related operations to support Skia perf, specifically for the query UI.
Package redis implements the redis related operations to support Skia perf, specifically for the query UI.
regression
Package regression provides for tracking Perf regressions.
Package regression provides for tracking Perf regressions.
regression/continuous
Package continuous looks for Regressions in the background based on the new data arriving and the currently configured Alerts.
Package continuous looks for Regressions in the background based on the new data arriving and the currently configured Alerts.
regression/regressiontest
Package regressiontest has common utility funcs for testing the regression package.
Package regressiontest has common utility funcs for testing the regression package.
regression/sqlregressionstore
Package sqlregressionstore implements the regression.Store interface on an SQL database backend.
Package sqlregressionstore implements the regression.Store interface on an SQL database backend.
sheriffconfig/proto/v1
Generate the go code from the protocol buffer definitions.
Generate the go code from the protocol buffer definitions.
shortcut
Package shortcut handles storing and retrieving shortcuts.
Package shortcut handles storing and retrieving shortcuts.
shortcut/shortcuttest
Package shortcuttest has common code for tests of implementations of shortcut.Store.
Package shortcuttest has common code for tests of implementations of shortcut.Store.
shortcut/sqlshortcutstore
Package sqlshortcutstore implements shortcut.Store using an SQL database.
Package sqlshortcutstore implements shortcut.Store using an SQL database.
sql
sql/expectedschema
Package expectedschema contains the schema the database is expected to have.
Package expectedschema contains the schema the database is expected to have.
sql/exportschema
Application exportschema exports the expected schema as a serialized schema.Description.
Application exportschema exports the expected schema as a serialized schema.Description.
sql/tosql
This executable generates a go file that contains the SQL schema for machineserver defined as a string.
This executable generates a go file that contains the SQL schema for machineserver defined as a string.
subscription
Package subscription handles retrieving subscriptions.
Package subscription handles retrieving subscriptions.
tracestore/sqltracestore
Package sqltracestore implements a tracestore.TraceStore on top of SQL.
Package sqltracestore implements a tracestore.TraceStore on top of SQL.
tracing
Package tracing consolidates OpenCensus tracing initialization in one place.
Package tracing consolidates OpenCensus tracing initialization in one place.
trybot
Package trybot has common types for the store and ingester sub-modules.
Package trybot has common types for the store and ingester sub-modules.
trybot/results
Package results defines the interface for loading trybot results.
Package results defines the interface for loading trybot results.
trybot/results/dfloader
Package dfloader implements results.Loader using a DataFrameBuilder.
Package dfloader implements results.Loader using a DataFrameBuilder.
trybot/samplesloader/gcssamplesloader
Package gcssamplesloader implements samplesloader.SamplesLoader for Google Cloud Storage.
Package gcssamplesloader implements samplesloader.SamplesLoader for Google Cloud Storage.
trybot/store
Package store stores the results from trybot runs.
Package store stores the results from trybot runs.
ts
Program to generate TypeScript definition files for Golang structs that are serialized to JSON for the web UI.
Program to generate TypeScript definition files for Golang structs that are serialized to JSON for the web UI.
ui/frame
Package frame takes frontend requests for dataframes (FrameRequest), and turns them into FrameResponses.
Package frame takes frontend requests for dataframes (FrameRequest), and turns them into FrameResponses.
Generates demo data to go along with the demo repo at https://github.com/skia-dev/perf-demo-repo.
Generates demo data to go along with the demo repo at https://github.com/skia-dev/perf-demo-repo.
See README.md
See README.md
See README.md
See README.md

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL