FR: Output Folded Stacks Format

Đang mở
#658 3 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

  • #669 của @mhansen — đã đóng, không merge

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
25/100
Loại issue
Tính năng
Độ rõ ràng
Cần làm rõ
Mức độ hoạt động
Đình trệ
Công nghệ
go
Lĩnh vực
performance

Hướng nghiên cứu

Bắt đầu bằng cách kiểm tra các đường dẫn output hiện có của pprof cho -callgrind và -dot, cũng như cách chúng chọn một giá trị profile để làm trọng số cho đồ thị. So sánh output được đề xuất với difffolded.pl và flamegraph.pl của Brendan Gregg, và với định dạng folded của pprofutils của Felixge. Để hoàn thành, cần quyết định định dạng và hành vi của tùy chọn, bao gồm việc xuất một giá trị hay nhiều cột, cũng như cách xử lý labels và dữ liệu profile khác.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Priority: p3 type: feat

I think if we built an exporter to Brendan Gregg's folded stacks format, we could:

  1. Enable people to do differential flamegraphs using difffolded.pl and flamegraph.pl, perhaps addressing the user need in #483
  2. Allow post-processing the profiles using text tools like grep & sed
  3. 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?

Ngôn ngữ chính
Go
Star
9.3k
Fork
687
Merge trung bình
2 ngày 2 giờ
Pull request đã merge (30 ngày)
9

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của google/pprof

Tất cả issue của google/pprof

Issue tương tự

Thêm issue về Go

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.