mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-05-24 17:00:37 +00:00
* wip: global replace Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * fix compile Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * fix warnings Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * remove unneeded tests of errors Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * fix ErrorExt trait implementator Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * fix warnings Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * fix format Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * fix pyo3 tests Signed-off-by: Ruihang Xia <waynestxia@gmail.com> --------- Signed-off-by: Ruihang Xia <waynestxia@gmail.com>
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/v1/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:
jeprof --svg <path_to_greptimedb_binary> --base=<baseline_prof> <profile_data> > output.svg