How to profile memory
To make the memory profiling easier, Kvrocks provides the command KPROFILE
to active/deactive and dump the memory profiling data. Note that it is only available while Jemalloc is enabled in the building phase.
Prerequisites
Before profiling, you need to run Kvrocks server with the following environment variables:
export MALLOC_CONF="prof:true,background_thread:true"
./kvrocks -c kvrocks.conf
or
MALLOC_CONF="prof:true,background_thread:true" ./kvrocks -c kvrocks.conf
Docker users don't need to set this environment variable, as the Dockerfile already sets it.
Use KPROFILE command
Once Kvrocks is running with the above environment variable set, you can use the KPROFILE
command to control the profiling:
# Enable memory profiling
$ redis-cli> KPROFILE MEMORY ENABLE
# Dump memory profiling data to a file in the specified directory,
# the profiling filename will be prefixed with `jeprof-`
$ redis-cli> KPROFILE MEMORY DUMP [dir]
# Disable memory profiling
$ redis-cli> KPROFILE MEMORY DISABLE
Then you can use the jeprof
tool to analyze the dumped profiling data. For more information about jeprof
, you can refer to the Jemalloc documentation.