I would like to take a google profile (performance profile) of a ceph OSD.
I'm using 'cephadm' to depoy my cluster, which results in a set of servers
which are too wrapped up in automation for me to be able to add the google
profiling hooks. I'll describe how to take a google profile of a regular
linux process, in the hope that someone can help me adapt this to the way
cephadm deploys a ceph OSD.
First, you install the google profiling library and analysis tool.
'sudo apt install google-perftools' would do the install on Ubuntu; there is
a matching package in EPEL for RHEL/Centos.
Then you run the OSD with some environment variables set
LD_PRELOAD=/usr/lib/libprofiler.so
CPUPROFILE=osd.googleprof
CPUPROFILESIGNAL=12
It's OK to set these variables for additional processes (e.g. all processes in
a container)
Then you get ready to run the client benchmarking application. Just before
starting the client, you send signal SIGUSR2 (signal 12) to the OSD process;
this turns profiling on.
After the benchmarking application completes, you send another SIGUSR2 to the
OSD; this stops profiling and writes the profile to file osd.googleprof .
After profiling, you run the analysis tool.
google-pprof --pdf OSD osd.googleprof >osd.pdf
where OSD is the appropriate program binary file. This writes a call graph as
a PDF to the given file.
Thanks for all help !
I'm using 'cephadm' to depoy my cluster, which results in a set of servers
which are too wrapped up in automation for me to be able to add the google
profiling hooks. I'll describe how to take a google profile of a regular
linux process, in the hope that someone can help me adapt this to the way
cephadm deploys a ceph OSD.
First, you install the google profiling library and analysis tool.
'sudo apt install google-perftools' would do the install on Ubuntu; there is
a matching package in EPEL for RHEL/Centos.
Then you run the OSD with some environment variables set
LD_PRELOAD=/usr/lib/libprofiler.so
CPUPROFILE=osd.googleprof
CPUPROFILESIGNAL=12
It's OK to set these variables for additional processes (e.g. all processes in
a container)
Then you get ready to run the client benchmarking application. Just before
starting the client, you send signal SIGUSR2 (signal 12) to the OSD process;
this turns profiling on.
After the benchmarking application completes, you send another SIGUSR2 to the
OSD; this stops profiling and writes the profile to file osd.googleprof .
After profiling, you run the analysis tool.
google-pprof --pdf OSD osd.googleprof >osd.pdf
where OSD is the appropriate program binary file. This writes a call graph as
a PDF to the given file.
Thanks for all help !
_______________________________________________ Dev mailing list -- dev@xxxxxxx To unsubscribe send an email to dev-leave@xxxxxxx