-
Notifications
You must be signed in to change notification settings - Fork 3
Home
Joshua Koo edited this page Oct 22, 2024
·
18 revisions
Welcome to the profile-bee wiki!
Here's some interesting links I've found on the web that may be useful for this project
For interactive flamegraph interaction
Useful example of inspecting remote processes (used in py-spy iirc)
Other open source continuous profilers (seems to be mostly Go based)
Rust profiling
Some blog posts
- https://inspektor.cloud/blog/how-profiler-works/
- https://pyroscope.io/blog/ebpf-profiling-pros-cons/
- https://www.markhansen.co.nz/profiler-uis/ (a collection of different flamegraph UIs, nothing too groundbreaking here - was hoping to find some ascii flamegraphs intead)
- https://blog.px.dev/ebpf-function-tracing/
For rust memory profiling, this is a place to look at
- https://github.com/nnethercote/dhat-rs/blob/master/src/lib.rs (I wonder if it'd be possible to do the same using bpf probes)
- https://eunomia.dev/en/tutorials/16-memleak/#memleak-kernel-space-ebpf-program-implementation
- https://github.com/iovisor/bcc/blob/master/tools/memleak.py
- https://www.reddit.com/r/rust/comments/ojzc3z/implementation_of_an_ebpf_memory_profiler_has/ | https://medium.com/tezedge/halving-the-tezedge-nodes-memory-usage-with-an-ebpf-based-memory-profiler-2bfd32f94f69
- https://www.brendangregg.com/FlameGraphs/memoryflamegraphs.html
Usage of flamegraphs
- https://www.brendangregg.com/Slides/LISA13_Flame_Graphs.pdf (touches CPU, memory, IO, off cpu etc)
Fp (elf, dwarf) vs Orc https://blogs.oracle.com/linux/post/unwinding-stack-frame-pointers-and-orc https://github.com/bpftrace/bpftrace/issues/1006
My kitchen sink of ideas
- terminal (curses/tui) based flamegraphs
- interactive call graph
- streaming flamegraph / timeline flamegraph
- integration with aws codeguru profiler https://github.com/awslabs/aws-sdk-rust/blob/0e6f17c335debcf8908b615399678479e9ff62e8/sdk/codeguruprofiler/README.md?plain=1 https://crates.io/crates/aws-sdk-codeguruprofiler/0.30.0
Other approaches to profiling
- https://developer.mantidproject.org/ProfilingWithValgrind.html
- https://gernotklingler.com/blog/gprof-valgrind-gperftools-evaluation-tools-application-level-cpu-profiling-linux/
- https://www.gabriel.urdhr.fr/2014/05/23/flamegraph/#using-flamegraph-with-the-poor-mans-profiler-based-on-gdb
- https://github.com/markhpc/uwpmp https://github.com/libunwind/libunwind/blob/master/src/elfxx.c#L271-L274
- https://nnethercote.github.io/perf-book/profiling.html
- https://www.polarsignals.com/blog/posts/2022/11/29/profiling-without-frame-pointers | https://www.polarsignals.com/blog/posts/2022/11/29/dwarf-based-stack-walking-using-ebpf
- https://github.com/parca-dev/parca-agent
- https://psy-lob-saw.blogspot.com/2016/02/why-most-sampling-java-profilers-are.html
- https://github.com/async-profiler/async-profiler
- https://github.com/grafana/agent/
- https://github.com/Granulate/gprofiler?tab=readme-ov-file
- https://github.com/open-telemetry/opentelemetry-ebpf-profiler
no frame pointers
- https://www.brendangregg.com/blog/2024-03-17/the-return-of-the-frame-pointers.html
- https://github.com/bpftrace/bpftrace/issues/1744
- https://github.com/bpftrace/bpftrace/issues/1006#issuecomment-770448497
Continuous profiling services
- pyroscope
- https://grafana.com/oss/pyroscope/
- https://opentelemetry.io/blog/2024/profiling/
- https://www.elastic.co/observability/universal-profiling
- https://docs.datadoghq.com/getting_started/profiler/ | https://docs.datadoghq.com/profiler/
Profile viewers