mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-01-03 11:52:54 +00:00
* feat!: move v1/prof to debug/prof * docs: update readme * docs: move prof docs to docs dir * chore: update message * feat!: remove v1/prof * docs: update mem prof docs
1.2 KiB
1.2 KiB
Profile memory usage of GreptimeDB
This crate provides an easy approach to dump memory profiling info.
Prerequisites
jemalloc
# for macOS
brew install jemalloc
# for Ubuntu
sudo apt install libjemalloc-dev
flamegraph
curl https://raw.githubusercontent.com/brendangregg/FlameGraph/master/flamegraph.pl > ./flamegraph.pl
Build GreptimeDB with mem-prof feature.
cargo build --features=mem-prof
Profiling
Start GreptimeDB instance with environment variables:
MALLOC_CONF=prof:true,lg_prof_interval:28 ./target/debug/greptime standalone start
Dump memory profiling data through HTTP API:
curl localhost:4000/debug/prof/mem > greptime.hprof
You can periodically dump profiling data and compare them to find the delta memory usage.
Analyze profiling data with flamegraph
To create flamegraph according to dumped profiling data:
sudo apt install -y libjemalloc-dev
jeprof <path_to_greptime_binary> <profile_data> --collapse | ./flamegraph.pl > mem-prof.svg
jeprof <path_to_greptime_binary> --base <baseline_prof> <profile_data> --collapse | ./flamegraph.pl > output.svg