4467065c35
Make it clear that these are pool IDs, referring to the same pool(s) as parent/child_pool_name fields. Signed-off-by: Ilya Dryomov <idryomov@gmail.com> |
||
---|---|---|
.. | ||
.gitignore | ||
CMakeLists.txt | ||
README.md | ||
bluestore.c | ||
bluestore.tp | ||
cyg_profile.c | ||
cyg_profile.tp | ||
cyg_profile_functions.c | ||
eventtrace.c | ||
eventtrace.tp | ||
librados.c | ||
librados.tp | ||
librbd.c | ||
librbd.tp | ||
mgroprequest.c | ||
mgroprequest.tp | ||
objectstore.c | ||
objectstore.tp | ||
oprequest.c | ||
oprequest.tp | ||
osd.c | ||
osd.tp | ||
pg.c | ||
pg.tp | ||
rgw_op.c | ||
rgw_op.tp | ||
rgw_rados.c | ||
rgw_rados.tp | ||
tracing-common.h |
README.md
Installation
The LTTng libraries that ship with Ubuntu 12.04 have been very buggy, and the
generated header files using lttng-gen-tp
have needed to be fixed just to
compile in the Ceph tree. The packages available in Ubuntu 14.04 seem to work
alright, and for older versions please install LTTng from the LTTng PPA.
https://launchpad.net/~lttng/+archive/ppa
Then install as normal
apt-get install lttng-tools liblttng-ust-dev
Add/Update Provider
Create tracepoint definition file
Add tracepoint definitions for the provider into a .tp
file. Documentation
on defining a tracepoint can be found in man lttng-ust
. By convention files
are named according to the logical sub-system they correspond to (e.g.
mutex.tp
, pg.tp
). And add a C source file to be compiled into the tracepoint
provider shared object, in which TRACEPOINT_DEFINE
should be defined. See
LTTng document for details.
Place the .tp
and the .c
files into the src/tracing
directory
and modify the CMake file src/tracing/CMakeLists.txt
accordingly.
Function Instrumentation
Ceph supports instrumentation using GCC's -finstrument-functions
flag.
Supported CMake flags are:
-DWITH_OSD_INSTRUMENT_FUNCTIONS=ON
: instrument OSD code
Note that this instrumentation adds an extra function call on each function entry and exit of Ceph code. This option is currently only supported with GCC. Using it with Clang has no effect.
The only function tracing implementation at the moment is done using LTTng UST.
In order to use it, Ceph needs to be configured with LTTng using -DWITH_LTTNG=ON
.
TraceCompass can be used to generate flame
charts/graphs and other metrics.
It is also possible to use libbabeltrace
to write custom analysis. The entry and exit tracepoints are called
lttng_ust_cyg_profile:func_enter
and lttng_ust_cyg_profile:func_exit
respectively. The payload variable addr
holds the address of the function
called and the payload variable call_site
holds the address where it is called.
nm
can be used to resolve function addresses (addr
to function name).