go-profiler-notes
parca
go-profiler-notes | parca | |
---|---|---|
14 | 18 | |
3,483 | 3,848 | |
0.4% | 1.9% | |
1.5 | 9.9 | |
about 2 months ago | 4 days ago | |
Jupyter Notebook | TypeScript | |
Creative Commons Attribution Share Alike 4.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
go-profiler-notes
- The Busy Developer's Guide to Go Profiling, Tracing and Observability
-
Dwarf-Based Stack Walking Using eBPF
Thanks!
As @brancz mentioned, Delve uses DWARF unwind information to produce backtraces (they are stored in the .debug_frame section for Go).
You are right, Go enabled frame pointers for all architectures as of 1.17 [0]. This is enabled to allow profilers to work well, without having to use to techniques such as the one we describe in our post.
When it gets funny is that there's `gopclntab`, a 3rd option in Go to unwind stacks, used by `panic` and I believe other parts of the runtime. If you are interested in more details, Felix Geisendörfer's repo contains way more details [1]
[0]: https://go.dev/doc/go1.17
[1]: https://github.com/DataDog/go-profiler-notes/blob/main/stack...
- Resources to Learn Profiling and Benchmarking
- go-profiler-notes/README.md at main · DataDog/go-profiler-notes
- Fantastic Symbols and Where to Find Them - Part 1
-
Share your must-know Go development tips
this is a good read about pprof https://github.com/DataDog/go-profiler-notes/blob/main/guide/README.md
- The Busy Developers's Guide to Go Profiling, Tracing and Observability
parca
- Seeing what a Go process does (like `set -x`)
- Julia 1.9 Highlights
-
Track Code Efficiency during Development
Continuous profiling tools such as parca may be worth looking into for your use case.
-
Hi everyone, How could you find the lines executed for a particular method call in any language (java, go..) using eBPF?
They were bought by Elastic, maybe they'll open source it. There's also https://github.com/parca-dev/parca
-
How do you monitor your Go apps?
an alternative option to pyroscope to do continuos profiling in production could be parca.dev check and here
- Go garbage collector doesn't release memory
-
How to observe an http web application in real time with pprof?
+1 to Parca.dev https://github.com/parca-dev/parca as continuos profiling tool in production
-
Continuous Profiling in Kubernetes Using Pyroscope
Parca collects, stores and makes profiles available to be queried over time. It is open source and can be deployed on production environments as Parca focuses on sampling profiling two main types of profiles: tracing and sampling.
-
Launch HN: ContainIQ (YC S21) – Kubernetes Native Monitoring with eBPF
Polar signals develops Parca [0] which is another eBPF observability tool, and Isovalent develops Cilium [1] which is built on eBPF as well. Genuinely curious if there are differences, or if eBPF only allows for specific observability functionality and each tool has it all.
[0]: https://github.com/parca-dev/parca
[1]: https://github.com/cilium/cilium
- Parca: Continuous profiling for analysis of CPU and memory usage over time
What are some alternatives?
fgprof - 🚀 fgprof is a sampling Go profiler that allows you to analyze On-CPU as well as Off-CPU (e.g. I/O) time together.
pyroscope - Continuous Profiling Platform. Debug performance issues down to a single line of code [Moved to: https://github.com/grafana/pyroscope]
parca-agent - eBPF based always-on profiler auto-discovering targets in Kubernetes and systemd, zero code changes or restarts needed!
pyroscope - Continuous Profiling Platform. Debug performance issues down to a single line of code
goimpl.nvim - Generate stub for interface on a type
pixie - Instant Kubernetes-Native Application Observability
gotests - Automatically generate Go test boilerplate from your source code.
pprof - pprof is a tool for visualization and analysis of profiling data
nvim
profefe - Continuous profiling for long-term postmortem analysis
collect - collect all pprof profiles with one command
grafana-operator - An operator for Grafana that installs and manages Grafana instances, Dashboards and Datasources through Kubernetes/OpenShift CRs