Parca from Binary
You can download the latest binary release for your architecture from our releases page.
curl -sL https://github.com/parca-dev/parca/releases/download/v0.24.2/parca_0.24.2_`uname -s`_`uname -m`.tar.gz | tar xvfz - parca
We also produce Docker images that can be pulled:
docker pull ghcr.io/parca-dev/parca:v0.24.2
We provide an example configuration file that you can use to get Parca running, and the scrape configuration section should look familiar to anyone familiar with Prometheus.
object_storage:
  bucket:
    type: "FILESYSTEM"
    config:
      directory: "./tmp"
scrape_configs:
  - job_name: "default"
    scrape_interval: "2s"
    static_configs:
      - targets: ["127.0.0.1:7070"]
You can download from our repository:
curl -sL https://raw.githubusercontent.com/parca-dev/parca/v0.24.2/parca.yaml > parca.yaml
To start Parca, pass this config file with the config-path flag:
parca --config-path="parca.yaml"
You should be greeted with the splash and some log lines:
ooooooooo.
`888   `Y88.
 888   .d88'  .oooo.   oooo d8b  .ooooo.   .oooo.
 888ooo88P'  `P  )88b  `888""8P d88' `"Y8 `P  )88b
 888          .oP"888   888     888        .oP"888
 888         d8(  888   888     888   .o8 d8(  888
o888o        `Y888""8o d888b    `Y8bod8P' `Y888""8o
{"caller":"log.go:124","level":"info","msg":"loading bucket configuration","name":"parca","ts":"2021-09-16T01:13:18.874904009Z"}
{"caller":"log.go:124","level":"debug","msg":"Starting provider","name":"parca","provider":"static/0","subs":"[default]","ts":"2021-09-16T01:13:18.876115335Z"}
{"addr":":7070","caller":"server.go:84","level":"info","msg":"starting server","name":"parca","ts":"2021-09-16T01:13:18.876178645Z"}
{"caller":"log.go:124","level":"debug","msg":"Discoverer channel closed","name":"parca","provider":"static/0","ts":"2021-09-16T01:13:18.876192954Z"}
This will start the Parca server on port 7070 and configure it to retrieve profiles from itself every 1 second automatically.
Other flags can be found using the help flag.
parca --help
Usage: parca
Flags:
  -h, --help                                 Show context-sensitive help.
      --config-path="parca.yaml"             Path to config file.
      --mode="all"                           Scraper only runs a scraper that sends to a remote gRPC endpoint.
                                             All runs all components.
      --log-level="info"                     log level.
      --http-address=":7070"                 Address to bind HTTP server to.
      --port=""                              (DEPRECATED) Use http-address instead.
      --cors-allowed-origins=CORS-ALLOWED-ORIGINS,...
                                             Allowed CORS origins.
      --otlp-address=STRING                  OpenTelemetry collector address to send traces to.
      --version                              Show application version.
      --path-prefix=""                       Path prefix for the UI
      --mutex-profile-fraction=0             Fraction of mutex profile samples to collect.
      --block-profile-rate=0                 Sample rate for block profile.
      --enable-persistence                   Turn on persistent storage for the metastore and profile storage.
      --storage-debug-value-log              Log every value written to the database into a separate file.
                                             This is only for debugging purposes to produce data to replay
                                             situations in tests.
      --storage-granule-size=26265625        Granule size in bytes for storage.
      --storage-active-memory=536870912      Amount of memory to use for active storage. Defaults to 512MB.
      --storage-path="data"                  Path to storage directory.
      --storage-enable-wal                   Enables write ahead log for profile storage.
      --storage-row-group-size=8192          Number of rows in each row group during compaction and
                                             persistence. Setting to <= 0 results in a single row group per
                                             file.
      --symbolizer-demangle-mode="simple"    Mode to demangle C++ symbols. Default mode is simplified:
                                             no parameters, no templates, no return type
      --symbolizer-number-of-tries=3         Number of tries to attempt to symbolize an unsymbolized location
      --metastore="badger"                   Which metastore implementation to use
      --profile-share-server="api.pprof.me:443"
                                             gRPC address to send share profile requests to.
      --debug-infod-upstream-servers=https://debuginfod.elfutils.org,...
                                             Upstream debuginfod servers. Defaults to
                                             https://debuginfod.elfutils.org. It is an
                                             ordered list of servers to try. Learn more at
                                             https://sourceware.org/elfutils/Debuginfod.html
      --debug-infod-http-request-timeout=5m
                                             Timeout duration for HTTP request to upstream debuginfod server.
                                             Defaults to 5m
      --debuginfo-cache-dir="/tmp"           Path to directory where debuginfo is cached.
      --store-address=STRING                 gRPC address to send profiles and symbols to.
      --bearer-token=STRING                  Bearer token to authenticate with store.
      --bearer-token-file=STRING             File to read bearer token from to authenticate with store.
      --insecure                             Send gRPC requests via plaintext instead of TLS.
      --insecure-skip-verify                 Skip TLS certificate verification.
      --external-label=KEY=VALUE;...         Label(s) to attach to all profiles in scraper-only mode.
Once Parca is running, you can navigate to the web interface on the browser.

You should shortly see the Select profile... dropdown menu populate with the profiles that Parca is retrieving from itself.
Selecting one of these profile types and clicking the Search button will retrieve the profiles of that type for the time selection (default Last Hour)

This should result in a time series based on the profile that is interactable. Clicking anywhere on the line graph should then bring up an Flame Graph for the profile that you've selected.

You can then interact with the Flame Graph to better understand how Parca is behaving.