CPU、メモリ使用量を時間の経過とともに行番号まで分析するための継続的なプロファイリング。インフラストラクチャのコストを節約し、パフォーマンスを向上させ、信頼性を高めます。
eBPF プロファイラー: eBPF を使用する単一のプロファイラーで、非常に低いオーバーヘッドでインフラストラクチャ全体にわたって Kubernetes または systemd からターゲットを自動的に検出します。 C、C++、Rust、Go などをサポートしています。
オープン スタンダード: eBPF ベースのプロファイラーを使用した pprof 形式のプロファイルの生成と、pprof 形式のプロファイルの取り込みの両方により、幅広い言語の採用と既存のツールとの相互運用性が可能になります。
最適化されたストレージとクエリ: 生データを保持しながらプロファイリング データを効率的に保存し、ラベルベースの検索を通じてデータのスライスとダイシングを可能にします。プロファイリング データ インフラストラクチャ全体を集約し、単一のプロファイルを時間内に表示したり、任意の次元で比較したりできます。
フィードバックがある場合は、このプロジェクトの GitHub ディスカッションでディスカッションを開いてください。ぜひご意見をお聞かせください。
最新の詳細なインストール ガイドとドキュメントについては、Parca の Web サイトをチェックしてください。
パルカ.dev
Go、Node、Pnpm がインストールされている必要があります。
プロジェクトのクローンを作成する
git clone https://github.com/parca-dev/parca.git
プロジェクトディレクトリに移動します
cd parca
UI を構築し、Go バイナリをコンパイルする
make build
バイナリはbin/parca
にコンパイルされました。
./bin/parca
現在、Parca はローカルで実行されており、その Web UI は http://localhost:7070/ で利用できます。
デフォルトでは、Parca は独自の pprof エンドポイントをスクレイピングしており、時間の経過とともにプロファイルが表示されることがわかります。スクレイプ構成は、リポジトリのルートにあるparca.yaml
で変更できます。
フラグ:
Usage: parca [flags]
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.
--http-address=":7070" Address to bind HTTP server to.
--http-read-timeout=5s Timeout duration for HTTP server to read
request body.
--http-write-timeout=1m Timeout duration for HTTP server to write
response body.
--port="" (DEPRECATED) Use http-address instead.
--log-level="info" Log level.
--log-format="logfmt" Configure if structured logging as JSON or as
logfmt
--otlp-address=STRING The endpoint to send OTLP traces to.
--otlp-exporter="grpc" The OTLP exporter to use.
--cors-allowed-origins=CORS-ALLOWED-ORIGINS,...
Allowed CORS origins.
--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-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-snapshot-trigger-size=134217728
Number of bytes to trigger a snapshot. Defaults
to 1/4 of active memory. This is only used if
enable-wal is set.
--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.
--storage-index-on-disk Whether to store the index on disk instead
of in memory. Useful to reduce the memory
footprint of the store.
--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
unsybolized location
--debuginfo-cache-dir="/tmp"
Path to directory where debuginfo is cached.
--debuginfo-upload-max-size=1000000000
Maximum size of debuginfo upload in bytes.
--debuginfo-upload-max-duration=15m
Maximum duration of debuginfo upload.
--debuginfo-uploads-signed-url
Whether to use signed URLs for debuginfo
uploads.
--debuginfod-upstream-servers=debuginfod.elfutils.org,...
Upstream debuginfod servers. Defaults to
debuginfod.elfutils.org. It is an ordered
list of servers to try. Learn more at
https://sourceware.org/elfutils/Debuginfod.html
--debuginfod-http-request-timeout=5m
Timeout duration for HTTP request to upstream
debuginfod server. Defaults to 5m
--profile-share-server="api.pprof.me:443"
gRPC address to send share profile requests to.
--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.
Parca はもともと Polar Signals によって開発されました。発表のブログ投稿をお読みください: https://www.polarsignals.com/blog/posts/2021/10/08/introducing-parca-we-got-funded/
まずは貢献ガイドをご覧ください。 Parca をコンパイルし、Kubernetes のコンテナとして Tilt で実行し、プル リクエストを送信する方法について説明します。
これらの素晴らしい人々に感謝します (絵文字キー):
フレデリック・ブランチック ? | トール ? | マティアス・ロイブル ? | ケマル・アッコユン | スメラ・プリヤダルシーニ |
ジェシカ・リンズ | ホルガー・フライター | セルギウシュ・ウルバニアク ? | パヴェウ クルパ ? | ベン・イェ ? |
フェリックス ? | クリスチャン・バーグマン | ヨミ・エルワンデ | マノイ・ヴィヴェク | モニカ・ヴォイチェホフスカ |
マヌエル・リューガー ? | アビナシュ ウパディヤヤ KR | あしみね一光 | マキシム・ブルネット ? | ロヒット |
ウジワル ゴヤル | ハビエル・ホンドゥヴィラ・コト | マルセル・マブレトクロフ | カウティリヤ・トリパティ | ジョン・シーガー |
フィリップ・ゴフ | ボラン・セレフ | ウェンロン | キュイフィルター | アルフォンソ・スビオット・マルケス |
トムヘリア | ステファン・ヴァンビューレン | カルロス・タデウ・パナート・ジュニア ? | ダニエル(シジュン)・チェン | アレックス・ベスト |
シュバム・パリワラ | ファビアン・ライナルツ | カーシック・ラジャ | かなり4仕事 | バート |
モハマドS | ニキレシュ・スサーラ | フランコ・サンチェス | アンドレア・スカルピーノ | マクシム・ナボキフ |
このプロジェクトは、全員参加者の仕様に従っています。あらゆる種類の貢献を歓迎します!
Meticulous を使用して、UI に不要な変更がないか自動的にテストします。