未验证 提交 b045200c 编写于 作者: X XuanYang-cn 提交者: GitHub

Optimize thirdparty libunwind and gperftools download & compile processes (#3305)

* runable gperftools
Signed-off-by: Nyangxuan <xuan.yang@zilliz.com>

* add imported global to targets gperftools
Signed-off-by: Nyangxuan <xuan.yang@zilliz.com>

* optimized runable
Signed-off-by: Nyangxuan <xuan.yang@zilliz.com>

* thirdparty download file path optimize
Signed-off-by: Nyangxuan <xuan.yang@zilliz.com>

* optimize format
Signed-off-by: Nyangxuan <xuan.yang@zilliz.com>

* rm old profilers building
Signed-off-by: Nyangxuan <xuan.yang@zilliz.com>

* change target gperftools to tcmalloc_and_profiler.a
Signed-off-by: Nyangxuan <xuan.yang@zilliz.com>
Co-authored-by: Nyangxuan <xuan.yang@zilliz.com>
上级 cb74d0a3
...@@ -66,8 +66,6 @@ set( FETCHCONTENT_BASE_DIR ${MILVUS_BINARY_DIR}/3rdparty_download ) ...@@ -66,8 +66,6 @@ set( FETCHCONTENT_BASE_DIR ${MILVUS_BINARY_DIR}/3rdparty_download )
set(FETCHCONTENT_QUIET OFF) set(FETCHCONTENT_QUIET OFF)
include( ThirdPartyPackages ) include( ThirdPartyPackages )
# **************************** Compiler arguments **************************** # **************************** Compiler arguments ****************************
if ( MILVUS_GPU_VERSION ) if ( MILVUS_GPU_VERSION )
......
...@@ -14,8 +14,6 @@ set(MILVUS_THIRDPARTY_DEPENDENCIES ...@@ -14,8 +14,6 @@ set(MILVUS_THIRDPARTY_DEPENDENCIES
MySQLPP MySQLPP
Prometheus Prometheus
SQLite SQLite
libunwind
gperftools
fiu fiu
AWS AWS
oatpp) oatpp)
...@@ -36,10 +34,6 @@ macro(build_dependency DEPENDENCY_NAME) ...@@ -36,10 +34,6 @@ macro(build_dependency DEPENDENCY_NAME)
build_prometheus() build_prometheus()
elseif ("${DEPENDENCY_NAME}" STREQUAL "SQLite") elseif ("${DEPENDENCY_NAME}" STREQUAL "SQLite")
build_sqlite() build_sqlite()
elseif ("${DEPENDENCY_NAME}" STREQUAL "libunwind")
build_libunwind()
elseif ("${DEPENDENCY_NAME}" STREQUAL "gperftools")
build_gperftools()
elseif ("${DEPENDENCY_NAME}" STREQUAL "fiu") elseif ("${DEPENDENCY_NAME}" STREQUAL "fiu")
build_fiu() build_fiu()
elseif ("${DEPENDENCY_NAME}" STREQUAL "oatpp") elseif ("${DEPENDENCY_NAME}" STREQUAL "oatpp")
...@@ -236,20 +230,6 @@ else () ...@@ -236,20 +230,6 @@ else ()
"https://www.sqlite.org/2019/sqlite-autoconf-${SQLITE_VERSION}.tar.gz") "https://www.sqlite.org/2019/sqlite-autoconf-${SQLITE_VERSION}.tar.gz")
endif () endif ()
if (DEFINED ENV{MILVUS_LIBUNWIND_URL})
set(LIBUNWIND_SOURCE_URL "$ENV{MILVUS_LIBUNWIND_URL}")
else ()
set(LIBUNWIND_SOURCE_URL
"https://github.com/libunwind/libunwind/releases/download/v${LIBUNWIND_VERSION}/libunwind-${LIBUNWIND_VERSION}.tar.gz")
endif ()
if (DEFINED ENV{MILVUS_GPERFTOOLS_URL})
set(GPERFTOOLS_SOURCE_URL "$ENV{MILVUS_GPERFTOOLS_URL}")
else ()
set(GPERFTOOLS_SOURCE_URL
"https://github.com/gperftools/gperftools/releases/download/gperftools-${GPERFTOOLS_VERSION}/gperftools-${GPERFTOOLS_VERSION}.tar.gz")
endif ()
if (DEFINED ENV{MILVUS_FIU_URL}) if (DEFINED ENV{MILVUS_FIU_URL})
set(FIU_SOURCE_URL "$ENV{MILVUS_FIU_URL}") set(FIU_SOURCE_URL "$ENV{MILVUS_FIU_URL}")
else () else ()
...@@ -462,98 +442,6 @@ if (MILVUS_WITH_SQLITE) ...@@ -462,98 +442,6 @@ if (MILVUS_WITH_SQLITE)
link_directories(SYSTEM ${SQLITE_PREFIX}/lib/) link_directories(SYSTEM ${SQLITE_PREFIX}/lib/)
endif () endif ()
# ----------------------------------------------------------------------
# libunwind
macro(build_libunwind)
message(STATUS "Building libunwind-${LIBUNWIND_VERSION} from source")
set(LIBUNWIND_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/libunwind_ep-prefix/src/libunwind_ep/install")
set(LIBUNWIND_INCLUDE_DIR "${LIBUNWIND_PREFIX}/include")
set(LIBUNWIND_SHARED_LIB "${LIBUNWIND_PREFIX}/lib/libunwind${CMAKE_SHARED_LIBRARY_SUFFIX}")
set(LIBUNWIND_CONFIGURE_ARGS "--prefix=${LIBUNWIND_PREFIX}")
ExternalProject_Add(libunwind_ep
URL
${LIBUNWIND_SOURCE_URL}
${EP_LOG_OPTIONS}
CONFIGURE_COMMAND
"./configure"
${LIBUNWIND_CONFIGURE_ARGS}
BUILD_COMMAND
${MAKE} ${MAKE_BUILD_ARGS}
BUILD_IN_SOURCE
1
INSTALL_COMMAND
${MAKE} install
BUILD_BYPRODUCTS
${LIBUNWIND_SHARED_LIB})
file(MAKE_DIRECTORY "${LIBUNWIND_INCLUDE_DIR}")
add_library(libunwind SHARED IMPORTED)
set_target_properties(libunwind
PROPERTIES IMPORTED_LOCATION "${LIBUNWIND_SHARED_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${LIBUNWIND_INCLUDE_DIR}")
add_dependencies(libunwind libunwind_ep)
endmacro()
if (MILVUS_WITH_LIBUNWIND)
resolve_dependency(libunwind)
get_target_property(LIBUNWIND_INCLUDE_DIR libunwind INTERFACE_INCLUDE_DIRECTORIES)
include_directories(SYSTEM ${LIBUNWIND_INCLUDE_DIR})
endif ()
# ----------------------------------------------------------------------
# gperftools
macro(build_gperftools)
message(STATUS "Building gperftools-${GPERFTOOLS_VERSION} from source")
set(GPERFTOOLS_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/gperftools_ep-prefix/src/gperftools_ep")
set(GPERFTOOLS_INCLUDE_DIR "${GPERFTOOLS_PREFIX}/include")
set(GPERFTOOLS_STATIC_LIB "${GPERFTOOLS_PREFIX}/lib/libprofiler${CMAKE_STATIC_LIBRARY_SUFFIX}")
set(GPERFTOOLS_CONFIGURE_ARGS "--prefix=${GPERFTOOLS_PREFIX}")
ExternalProject_Add(gperftools_ep
URL
${GPERFTOOLS_SOURCE_URL}
${EP_LOG_OPTIONS}
CONFIGURE_COMMAND
"./configure"
${GPERFTOOLS_CONFIGURE_ARGS}
BUILD_COMMAND
${MAKE} ${MAKE_BUILD_ARGS}
BUILD_IN_SOURCE
1
INSTALL_COMMAND
${MAKE} install
BUILD_BYPRODUCTS
${GPERFTOOLS_STATIC_LIB})
ExternalProject_Add_StepDependencies(gperftools_ep build libunwind_ep)
file(MAKE_DIRECTORY "${GPERFTOOLS_INCLUDE_DIR}")
add_library(gperftools STATIC IMPORTED)
set_target_properties(gperftools
PROPERTIES IMPORTED_LOCATION "${GPERFTOOLS_STATIC_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${GPERFTOOLS_INCLUDE_DIR}"
INTERFACE_LINK_LIBRARIES libunwind)
add_dependencies(gperftools gperftools_ep)
add_dependencies(gperftools libunwind_ep)
endmacro()
if (MILVUS_WITH_GPERFTOOLS)
resolve_dependency(gperftools)
get_target_property(GPERFTOOLS_INCLUDE_DIR gperftools INTERFACE_INCLUDE_DIRECTORIES)
include_directories(SYSTEM ${GPERFTOOLS_INCLUDE_DIR})
link_directories(SYSTEM ${GPERFTOOLS_PREFIX}/lib)
endif ()
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
# fiu # fiu
macro(build_fiu) macro(build_fiu)
......
...@@ -68,6 +68,7 @@ set(link_lib ...@@ -68,6 +68,7 @@ set(link_lib
utils utils
) )
if (MILVUS_WITH_PROMETHEUS) if (MILVUS_WITH_PROMETHEUS)
set(link_lib set(link_lib
${link_lib} ${link_lib}
......
...@@ -109,16 +109,9 @@ if ( MILVUS_GPU_VERSION ) ...@@ -109,16 +109,9 @@ if ( MILVUS_GPU_VERSION )
target_sources( milvus_engine PUBLIC ${WRAPPER_GPU_FILES} ) target_sources( milvus_engine PUBLIC ${WRAPPER_GPU_FILES} )
endif () endif ()
# cannot be enabled together with ENABLE_CPU_PROFILING
if ( ENABLE_MEM_PROFILING )
list( APPEND THIRD_PARTY_LIBS tcmalloc )
endif ()
if ( ENABLE_CPU_PROFILING ) if ( ENABLE_CPU_PROFILING )
list( APPEND THIRD_PARTY_LIBS list( APPEND THIRD_PARTY_LIBS
PUBLIC gperftools PUBLIC gperftools )
libunwind
)
endif () endif ()
if ( MILVUS_WITH_PROMETHEUS ) if ( MILVUS_WITH_PROMETHEUS )
......
...@@ -51,3 +51,8 @@ endif() ...@@ -51,3 +51,8 @@ endif()
if ( MILVUS_WITH_OPENTRACING ) if ( MILVUS_WITH_OPENTRACING )
add_subdirectory( opentracing ) add_subdirectory( opentracing )
endif() endif()
# ****************************** Thirdparty perftools ***************************************
if ( ENABLE_CPU_PROFILING )
add_subdirectory( profilers )
endif ()
...@@ -23,6 +23,7 @@ FetchContent_Declare( ...@@ -23,6 +23,7 @@ FetchContent_Declare(
grpc grpc
URL ${GRPC_SOURCE_URL} URL ${GRPC_SOURCE_URL}
URL_MD5 "478215c151a144c2d8625b49ff1b70aa" URL_MD5 "478215c151a144c2d8625b49ff1b70aa"
DOWNLOAD_DIR ${MILVUS_BINARY_DIR}/3rdparty_download/download
SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/grpc-src SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/grpc-src
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/grpc-build ) BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/grpc-build )
......
...@@ -26,6 +26,7 @@ FetchContent_Declare( ...@@ -26,6 +26,7 @@ FetchContent_Declare(
googletest googletest
URL ${GTEST_SOURCE_URL} URL ${GTEST_SOURCE_URL}
URL_MD5 "f9137c5bc18b7d74027936f0f1bfa5c8" URL_MD5 "f9137c5bc18b7d74027936f0f1bfa5c8"
DOWNLOAD_DIR ${MILVUS_BINARY_DIR}/3rdparty_download/download
SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/googletest-src SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/googletest-src
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/googletest-build BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/googletest-build
......
...@@ -24,6 +24,7 @@ FetchContent_Declare( ...@@ -24,6 +24,7 @@ FetchContent_Declare(
opentracing opentracing
URL ${OPENTRACING_SOURCE_URL} URL ${OPENTRACING_SOURCE_URL}
URL_MD5 "e598ba4b81ae8e1ceed8cd8bbf86f2fd" URL_MD5 "e598ba4b81ae8e1ceed8cd8bbf86f2fd"
DOWNLOAD_DIR ${MILVUS_BINARY_DIR}/3rdparty_download/download
SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/opentracing-src SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/opentracing-src
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/opentracing-build BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/opentracing-build
) )
......
#-------------------------------------------------------------------------------
# Copyright (C) 2019-2020 Zilliz. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed under the License
# is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
# or implied. See the License for the specific language governing permissions and limitations under the License.
#-------------------------------------------------------------------------------
if ( DEFINED ENV{MILVUS_LIBUNWIND_URL} )
set( LIBUNWIND_SOURCE_URL "$ENV{MILVUS_LIBUNWIND_URL}" )
else ()
set( LIBUNWIND_SOURCE_URL
"https://github.com/libunwind/libunwind/releases/download/v${LIBUNWIND_VERSION}/libunwind-${LIBUNWIND_VERSION}.tar.gz" )
endif ()
if ( DEFINED ENV{MILVUS_GPERFTOOLS_URL} )
set( GPERFTOOLS_SOURCE_URL "$ENV{MILVUS_GPERFTOOLS_URL}" )
else ()
set( GPERFTOOLS_SOURCE_URL
"https://github.com/gperftools/gperftools/releases/download/gperftools-${GPERFTOOLS_VERSION}/gperftools-${GPERFTOOLS_VERSION}.tar.gz" )
endif ()
# ----------------------------------------------------------------------
# libunwind
macro( build_libunwind )
message( STATUS "Building libunwind-${LIBUNWIND_VERSION} from source" )
set( LIBUNWIND_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/libunwind)
ExternalProject_Add(
libunwind_ep
PREFIX ${MILVUS_BINARY_DIR}/3rdparty_download/libunwind-subbuild
DOWNLOAD_DIR ${MILVUS_BINARY_DIR}/3rdparty_download/download
INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/libunwind
URL ${LIBUNWIND_SOURCE_URL}
URL_MD5 a04f69d66d8e16f8bf3ab72a69112cd6
CONFIGURE_COMMAND <SOURCE_DIR>/configure
"--prefix=<INSTALL_DIR>"
"--quiet"
"--disable-tests"
"cc=${CCACHE_FOUND} {CMAKE_C_COMPILER}"
"cxx=${CCACHE_FOUND} {CMAKE_CXX_COMPILER}"
BUILD_COMMAND ${MAKE} ${MAKE_BUILD_ARGS}
INSTALL_COMMAND ${MAKE} install
${EP_LOG_OPTIONS} )
ExternalProject_Get_Property( libunwind_ep INSTALL_DIR )
add_library( libunwind SHARED IMPORTED )
set_target_properties(
libunwind PROPERTIES
IMPORTED_GLOBAL TRUE
IMPORTED_LOCATION "${INSTALL_DIR}/lib/libunwind.so"
INTERFACE_INCLUDE_DIRECTORIES "${INSTALL_DIR}/include" )
add_dependencies( libunwind libunwind_ep )
endmacro()
# ----------------------------------------------------------------------
# gperftools
macro( build_gperftools )
message( STATUS "Building gperftools-${GPERFTOOLS_VERSION} from source" )
ExternalProject_Add(
gperftools_ep
DEPENDS libunwind_ep
PREFIX ${CMAKE_BINARY_DIR}/3rdparty_download/gperftools-subbuild
DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/3rdparty_download/download
INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/gperftools
URL ${GPERFTOOLS_SOURCE_URL}
URL_MD5 c6a852a817e9160c79bdb2d3101b4601
CONFIGURE_COMMAND <SOURCE_DIR>/configure
"--prefix=<INSTALL_DIR>"
"--quiet"
"cc=${CCACHE_FOUND} {CMAKE_C_COMPILER}"
"cxx=${CCACHE_FOUND} {CMAKE_CXX_COMPILER}"
BUILD_COMMAND ${MAKE} ${MAKE_BUILD_ARGS}
INSTALL_COMMAND ${MAKE} install
${EP_LOG_OPTIONS} )
ExternalProject_Get_Property( gperftools_ep INSTALL_DIR )
# libprofiler.a
add_library( gperftools STATIC IMPORTED )
set_target_properties( gperftools
PROPERTIES
IMPORTED_GLOBAL TRUE
IMPORTED_LOCATION "${INSTALL_DIR}/lib/libtcmalloc_and_profiler.a"
INTERFACE_INCLUDE_DIRECTORIES "${INSTALL_DIR}/include"
INTERFACE_LINK_LIBRARIES libunwind
)
add_dependencies( gperftools gperftools_ep )
endmacro()
build_libunwind()
build_gperftools()
...@@ -23,6 +23,7 @@ FetchContent_Declare( ...@@ -23,6 +23,7 @@ FetchContent_Declare(
yaml-cpp yaml-cpp
URL ${YAMLCPP_SOURCE_URL} URL ${YAMLCPP_SOURCE_URL}
URL_MD5 "b45bf1089a382e81f6b661062c10d0c2" URL_MD5 "b45bf1089a382e81f6b661062c10d0c2"
DOWNLOAD_DIR ${MILVUS_BINARY_DIR}/3rdparty_download/download
SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/yaml-src SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/yaml-src
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/yaml-build BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/yaml-build
) )
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册