Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

observability: integrate CPU & memory profiling with Grafana Pyroscope #13026

Open
BugenZhao opened this issue Oct 24, 2023 · 4 comments
Open
Assignees
Labels
component/dev Dev related issues, such as rise dev, ci. no-issue-activity type/enhancement Improvements to existing implementation.

Comments

@BugenZhao
Copy link
Member

Proposed by @arkbriar.

Grafana Pyroscope is an open source software project for aggregating continuous profiling data.
Grafana Pyroscope is fully integrated with Grafana allowing you to correlate with other observability signals, like metrics, logs, and traces.

Its Rust client has built-in integration with pprof-rs. We may investigate if it's possible to integrate with jeprof as well.

@BugenZhao BugenZhao added type/enhancement Improvements to existing implementation. component/dev Dev related issues, such as rise dev, ci. labels Oct 24, 2023
@github-actions github-actions bot added this to the release-1.4 milestone Oct 24, 2023
@arkbriar
Copy link
Contributor

arkbriar commented Oct 25, 2023

I'm not sure but I think it might also be possible to integrate the jemalloc profiling 🤔

@BugenZhao BugenZhao modified the milestones: release-1.4, release-1.5 Nov 8, 2023
@fuyufjh
Copy link
Member

fuyufjh commented Nov 28, 2023

In addition, how about integrating await tree as a backend? It might be more helpful than CPU profiling especially for IO-intensive cases.

https://github.com/grafana/pyroscope-rs/blob/main/pyroscope_backends/pyroscope_pprofrs/src/lib.rs#L158

The core part is the report() function, which looks easy for us to implement one for await tree

@BugenZhao BugenZhao self-assigned this Nov 28, 2023
@BugenZhao
Copy link
Member Author

BugenZhao commented Nov 28, 2023

After some investigation, I'm afraid await-tree is not that compatible with Pyroscope:

  • The backends of Pyroscope should be sample-based. However, await-tree is not designed to be frequently captured as it'll acquire locks.
  • await-tree yields trees, instead of stacks. Aggregating the results may not be feasible.
  • await-tree does not output in a structured format now.

@BugenZhao BugenZhao modified the milestones: release-1.5, release-1.6 Dec 6, 2023
@BugenZhao BugenZhao removed this from the release-1.6 milestone Jan 9, 2024
Copy link
Contributor

This issue has been open for 60 days with no activity. Could you please update the status? Feel free to continue discussion or close as not planned.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component/dev Dev related issues, such as rise dev, ci. no-issue-activity type/enhancement Improvements to existing implementation.
Projects
None yet
Development

No branches or pull requests

3 participants