From: Ali Maredia Date: Thu, 31 Dec 2015 03:01:52 +0000 (-0500) Subject: cmake: LTTng functionality added X-Git-Tag: v10.0.3~134^2~16 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1aa7bc2ec413f26529e68bcda42d51258311ca1e;p=ceph.git cmake: LTTng functionality added Set LTTNG option to ON by default, added Findlttng.cmake, added CMakeLists.txt in src/tracing that generates .h files using lttng-gen-tp, added WITH_LTTNG to config-h.in.cmake. Signed-off-by: Ali Maredia --- diff --git a/CMakeLists.txt b/CMakeLists.txt index dd74fc7ef2bd..e37e03cba5f5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -246,6 +246,13 @@ set(HAVE_LIBROCKSDB 1) find_package(ZLIB REQUIRED) find_package(BZip2 REQUIRED) +#option for LTTng +option(WITH_LTTNG "LTTng tracing is enabled" ON) +if(${WITH_LTTNG}) + find_package(lttng-ust) + set(WITH_LTTNG ${LTTNG_FOUND}) +endif(${WITH_LTTNG}) + # Now create a useable config.h configure_file( ${PROJECT_SOURCE_DIR}/src/include/config-h.in.cmake diff --git a/cmake/modules/Findlttng-ust.cmake b/cmake/modules/Findlttng-ust.cmake new file mode 100644 index 000000000000..c04a474379c9 --- /dev/null +++ b/cmake/modules/Findlttng-ust.cmake @@ -0,0 +1,70 @@ +# - Find LTTng +# Find the Linux Trace Toolkit - next generation with associated includes path. +# See http://lttng.org/ +# +# This module accepts the following optional variables: +# LTTNG_PATH_HINT = A hint on LTTNG install path. +# +# This module defines the following variables: +# LTTNG_FOUND = Was LTTng found or not? +# LTTNG_EXECUTABLE = The path to lttng command +# LTTNG_LIBRARIES = The list of libraries to link to when using LTTng +# LTTNG_INCLUDE_DIR = The path to LTTng include directory +# +# On can set LTTNG_PATH_HINT before using find_package(LTTng) and the +# module with use the PATH as a hint to find LTTng. +# +# The hint can be given on the command line too: +# cmake -DLTTNG_PATH_HINT=/DATA/ERIC/LTTng /path/to/source + +if(LTTNG_PATH_HINT) + message(STATUS "FindLTTng: using PATH HINT: ${LTTNG_PATH_HINT}") +else() + set(LTTNG_PATH_HINT) +endif() + +#One can add his/her own builtin PATH. +#FILE(TO_CMAKE_PATH "/DATA/ERIC/LTTng" MYPATH) +#list(APPEND LTTNG_PATH_HINT ${MYPATH}) + +find_path(LTTNG_INCLUDE_DIR + NAMES lttng/tracepoint.h + PATHS ${LTTNG_PATH_HINT} + PATH_SUFFIXES include + DOC "The LTTng include headers") + +find_path(LTTNG_LIBRARY_DIR + NAMES liblttng-ust.so + PATHS ${LTTNG_PATH_HINT} + PATH_SUFFIXES lib lib64 + DOC "The LTTng libraries") + +find_library(LTTNG_UST_LIBRARY lttng-ust PATHS ${LTTNG_LIBRARY_DIR}) +find_library(URCU_LIBRARY urcu-bp PATHS ${LTTNG_LIBRARY_DIR}) +find_library(UUID_LIBRARY uuid) + +set(LTTNG_LIBRARIES ${LTTNG_UST_LIBRARY} ${URCU_LIBRARY} ${UUID_LIBRARY}) + +message(STATUS "Looking for lttng executable...") +set(LTTNG_NAMES "lttng;lttng-ctl") +# FIND_PROGRAM twice using NO_DEFAULT_PATH on first shot +find_program(LTTNG_EXECUTABLE + NAMES ${LTTNG_NAMES} + PATHS ${LTTNG_PATH_HINT}/bin + NO_DEFAULT_PATH + DOC "The LTTNG command line tool") +find_program(LEX_PROGRAM + NAMES ${LTTNG_NAMES} + PATHS ${LTTNG_PATH_HINT}/bin + DOC "The LTTNG command line tool") + +# handle the QUIETLY and REQUIRED arguments and set PRELUDE_FOUND to TRUE if +# all listed variables are TRUE +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(LTTNG + REQUIRED_VARS LTTNG_INCLUDE_DIR LTTNG_LIBRARY_DIR) +# VERSION FPHSA options not handled by CMake version < 2.8.2) +# VERSION_VAR) +mark_as_advanced(LTTNG_INCLUDE_DIR) +mark_as_advanced(LTTNG_LIBRARY_DIR) + diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a8ff8b80de96..6541036099f2 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -355,7 +355,11 @@ endif(${HAVE_GPERFTOOLS}) add_library(common_utf8 STATIC common/utf8.c) -target_link_libraries( common json_spirit common_utf8 erasure_code rt uuid ${CRYPTO_LIBS} ${Boost_LIBRARIES} ${BLKID_LIBRARIES}) +target_link_libraries(common json_spirit common_utf8 erasure_code rt uuid ${CRYPTO_LIBS} ${Boost_LIBRARIES} ${BLKID_LIBRARIES}) + +if(${WITH_LTTNG}) + add_subdirectory(tracing) +endif(${WITH_LTTNG}) set(libglobal_srcs global/global_init.cc @@ -368,6 +372,9 @@ add_library(global STATIC ${libglobal_srcs} $) target_link_libraries(global common ${CMAKE_THREAD_LIBS_INIT} ${CRYPTO_LIBS} ${EXTRALIBS}) +if(${WITH_LTTNG}) + target_link_libraries(global lttng-ust dl) +endif(${WITH_LTTNG}) if(${ENABLE_SHARED}) set_target_properties(global PROPERTIES OUTPUT_NAME ceph-global VERSION "1.0.0" SOVERSION "1") @@ -401,6 +408,9 @@ add_dependencies(librados osdc) target_link_libraries(librados PRIVATE osdc osd os global common cls_lock_client ${BLKID_LIBRARIES} ${CRYPTO_LIBS} ${EXTRALIBS} ${ALLOC_LIBS}) +if(${WITH_LTTNG}) + target_link_libraries(librados PUBLIC librados_tp) +endif(${WITH_LTTNG}) if(${ENABLE_SHARED}) set_target_properties(librados PROPERTIES OUTPUT_NAME rados VERSION 2.0.0 SOVERSION 2) @@ -633,6 +643,9 @@ add_library(os STATIC ${libos_srcs} $) if(${HAVE_LIBAIO}) target_link_libraries(os aio) endif(${HAVE_LIBAIO}) +if(${WITH_LTTNG}) + target_link_libraries(os libos_tp) +endif(${WITH_LTTNG}) target_link_libraries(os kv leveldb snappy rocksdb) set(cls_references_files objclass/class_api.cc) @@ -671,6 +684,9 @@ add_library(osd_mon_objs OBJECT ${osd_mon_files}) add_library(osd STATIC ${osd_srcs} $ $) target_link_libraries(osd dl leveldb) +if(${WITH_LTTNG}) + target_link_libraries(osd libosd_tp) +endif(${WITH_LTTNG}) set(ceph_osd_srcs ceph_osd.cc @@ -951,6 +967,9 @@ if(${WITH_RBD}) target_link_libraries(librbd PRIVATE librados common journal cls_lock_client cls_rbd_client cls_journal_client ${CMAKE_DL_LIBS}) + if(${WITH_LTTNG}) + target_link_libraries(librbd PUBLIC librbd_tp) + endif(${WITH_LTTNG}) if(${ENABLE_SHARED}) set_target_properties(librbd PROPERTIES VERSION "1.0.0" SOVERSION "1" OUTPUT_NAME rbd) diff --git a/src/common/TracepointProvider.h b/src/common/TracepointProvider.h index e54a037f90ec..447e2dec07ce 100644 --- a/src/common/TracepointProvider.h +++ b/src/common/TracepointProvider.h @@ -56,7 +56,7 @@ public: template static void initialize(CephContext *cct) { -#if WITH_LTTNG +#ifdef WITH_LTTNG TypedSingleton *singleton; cct->lookup_or_create_singleton_object(singleton, traits.library); #endif diff --git a/src/include/config-h.in.cmake b/src/include/config-h.in.cmake index 7e5efc9dadb4..af68a4036891 100644 --- a/src/include/config-h.in.cmake +++ b/src/include/config-h.in.cmake @@ -241,6 +241,9 @@ /* Defined if XIO */ #cmakedefine HAVE_XIO +/* Defined if LTTNG */ +#cmakedefine WITH_LTTNG 1 + /* Defined if you have librocksdb enabled */ #cmakedefine HAVE_LIBROCKSDB diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index c72ef991fd23..97c89544af7b 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -63,7 +63,7 @@ #include "include/rados/rados_types.hpp" #ifdef WITH_LTTNG -#include "tracing/osd.h" // ?? +#include "tracing/osd.h" #else #define tracepoint(...) #endif diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt index bcf1bd6fc3a0..c872d5204db2 100644 --- a/src/test/CMakeLists.txt +++ b/src/test/CMakeLists.txt @@ -1636,6 +1636,9 @@ add_executable(unittest_librbd EXCLUDE_FROM_ALL add_dependencies(check unittest_librbd) set_target_properties(unittest_librbd PROPERTIES COMPILE_FLAGS ${UNITTEST_CXX_FLAGS}) +if(${WITH_LTTNG}) + target_link_libraries(unittest_librbd librbd_tp) +endif(${WITH_LTTNG}) target_link_libraries(unittest_librbd librbd librados diff --git a/src/tracing/CMakeLists.txt b/src/tracing/CMakeLists.txt new file mode 100644 index 000000000000..cf996ceb672d --- /dev/null +++ b/src/tracing/CMakeLists.txt @@ -0,0 +1,38 @@ +add_custom_target(lttng_gen_tp + ALL + COMMAND + lttng-gen-tp tracing/librados.tp -o tracing/librados.h && + lttng-gen-tp tracing/librbd.tp -o tracing/librbd.h && + lttng-gen-tp tracing/objectstore.tp -o tracing/objectstore.h && + lttng-gen-tp tracing/oprequest.tp -o tracing/oprequest.h && + lttng-gen-tp tracing/osd.tp -o tracing/osd.h && + lttng-gen-tp tracing/pg.tp -o tracing/pg.h + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src + COMMENT "lttng-gen-tp generated .h files") + +add_library(libosd_tp STATIC + oprequest.c + osd.c + pg.c) +target_link_libraries(libosd_tp lttng-ust dl) +target_include_directories(libosd_tp PUBLIC ${CMAKE_SOURCE_DIR}/src/tracing) +add_dependencies(libosd_tp lttng_gen_tp) +set_target_properties(libosd_tp PROPERTIES OUTPUT_NAME osd_tp VERSION 1.0.0 SOVERSION 1) + +add_library(librados_tp STATIC librados.c) +target_link_libraries(librados_tp lttng-ust dl) +target_include_directories(librados_tp PUBLIC ${CMAKE_SOURCE_DIR}/src/tracing) +add_dependencies(librados_tp lttng_gen_tp) +set_target_properties(librados_tp PROPERTIES OUTPUT_NAME rados_tp VERSION 2.0.0 SOVERSION 2) + +add_library(librbd_tp STATIC librbd.c) +target_link_libraries(librbd_tp lttng-ust dl) +target_include_directories(librbd_tp PUBLIC ${CMAKE_SOURCE_DIR}/src/tracing) +add_dependencies(librbd_tp lttng_gen_tp) +set_target_properties(librbd_tp PROPERTIES OUTPUT_NAME rbd_tp VERSION 1.0.0 SOVERSION 1) + +add_library(libos_tp STATIC objectstore.c) +target_link_libraries(libos_tp lttng-ust dl) +target_include_directories(libos_tp PUBLIC ${CMAKE_SOURCE_DIR}/src/tracing) +add_dependencies(libos_tp lttng_gen_tp) +set_target_properties(libos_tp PROPERTIES OUTPUT_NAME os_tp VERSION 1.0.0 SOVERSION 1)