FR: Output Folded Stacks Format
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
- #669 @mhansen による — マージされずにクローズ
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 25/100
- issue の種類
- 機能追加
- 明瞭さ
- 説明が足りない
- 活発さ
- 停滞
- 技術スタック
- go
- 領域
- performance
調査の方向性
まず、pprof に既存の -callgrind と -dot の出力経路、およびグラフの重みに使用するプロファイル値をどのように選択しているかを調べます。提案されている出力を、Brendan Gregg の difffolded.pl と flamegraph.pl、および Felixge の pprofutils の folded 形式と比較します。完了には、形式とオプションの動作を決定する必要があります。これには、1 つの値を出力するのか複数の列を出力するのか、labels やその他のプロファイルデータをどのように扱うのかが含まれます。
索引モデルが issue の本文から書いたものです。
説明
I think if we built an exporter to Brendan Gregg's folded stacks format, we could:
- Enable people to do differential flamegraphs using difffolded.pl and flamegraph.pl, perhaps addressing the user need in #483
- Allow post-processing the profiles using text tools like grep & sed
- Hook into some more profile analysis tools: see profilerpedia, folded stacks is a very well-connected format.
I'm picturing an option like -callgrind and -dot, perhaps -folded.
The trouble might be that folded stacks format only accepts one output number per stack, but pprof can have multiple numbers per stack. So we'd probably have to choose the number to output with a flag, if it was ambiguous. But perhaps parts of pprof already handle this? e.g. the -dot output probably chooses an event to use as the weight of the graph size?
Prior art in this space: @felixge's pprofutils folded: https://github.com/felixge/pprofutils#folded. Felix has an extension to the folded stacks format to have numbers with multiple columns. I think that's a neat idea for representing pprof and allows roundtripping back to pprof format. It would be nice if this extension caught on, but I wonder if it might limit the interoperability with other folded stacks tools.
Another idea might be to output only one number column per-file (e.g. pprof -folded=cpu-cycles and pprof -folded=instructions), and then to roundtrip, we could output multiple files, convert both of them back to pprof, then concatenate the files with pprof -proto <profile1> <profile2>.
There are plenty of other challenges with roundtripping too (labels, filenames, mappings...) but perhaps just solving part of the problem would still be useful and enable more analyses. Anyway, I mostly wanted to open a discussion about this. Thoughts?
- 主要言語
- Go
- スター
- 9.3k
- フォーク
- 687
- 平均マージ
- 2日 2時間
- マージ済み PR(30日)
- 9
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
google/pprof のほかの issue
-
profile: FilterSamplesByName allocates a temporary Location slice per sample unnecessarily対応中かも @kyyril が 8 日前に担当しました。 オープン
難易度 1/5 1〜3時間 初心者へのやさしさ 35/100
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
google/pprof#1029 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 3/5 1〜2日 初心者へのやさしさ 74/100
google/pprof#1020 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
pprof cannot locate source code for the list command in common Go setups対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープン
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
google/pprof#1009 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
Label with zero int64 value and no unit get dropped during decoding対応中かも @ms-hujia が 139 日前に担当しました。 オープン
難易度 3/5 1〜2日 初心者へのやさしさ 55/100
google/pprof#1002 · コメント 6 件 ·
メンテナーはふだん 1 日以内に返信
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
メンテナーはふだん 1 日以内に返信
-
cmd/ebitenmobile: multi-language bindings run the complete generator twice対応中かも @kumagi が今日担当しました。 オープンos:macos performance
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
hajimehoshi/ebiten#4011 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
agent-butler-finding chore
難易度 1/5 1時間未満 初心者へのやさしさ 78/100
jordansmall/spindrift#6318 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
Eyevinn/moqlivemock#166 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
JakeChampion/lang#14091 ·
メンテナーはふだん 1 日以内に返信