[Feature] introduce jemalloc into thirdparty (#6238)

This commit is contained in:
eyes_on_me 2022-07-20 15:46:55 +08:00 committed by GitHub
parent 971ac081bc
commit 7ccb2823c7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 48 additions and 3 deletions

View File

@ -213,8 +213,8 @@ set_target_properties(openssl PROPERTIES IMPORTED_LOCATION ${THIRDPARTY_DIR}/lib
add_library(leveldb STATIC IMPORTED)
set_target_properties(leveldb PROPERTIES IMPORTED_LOCATION ${THIRDPARTY_DIR}/lib/libleveldb.a)
add_library(jemalloc STATIC IMPORTED)
set_target_properties(jemalloc PROPERTIES IMPORTED_LOCATION ${THIRDPARTY_DIR}/lib64/libjemalloc.a)
add_library(jemalloc_for_arrow STATIC IMPORTED)
set_target_properties(jemalloc_for_arrow PROPERTIES IMPORTED_LOCATION ${THIRDPARTY_DIR}/lib64/libjemalloc.a)
add_library(brotlicommon STATIC IMPORTED)
set_target_properties(brotlicommon PROPERTIES IMPORTED_LOCATION ${THIRDPARTY_DIR}/lib64/libbrotlicommon.a)
@ -567,7 +567,8 @@ set(STARROCKS_DEPENDENCIES
leveldb
bitshuffle
roaring
jemalloc
# arrow compiles jemalloc with a specific prefix, we should keep it
jemalloc_for_arrow
brotlicommon
brotlidec
brotlienc

View File

@ -884,6 +884,21 @@ build_opentelemetry() {
${BUILD_SYSTEM} install
}
# jemalloc
build_jemalloc() {
OLD_CFLAGS=$CFLAGS
check_if_source_exist $JEMALLOC_SOURCE
unset CFLAGS
export CFLAGS="-O3 -fno-omit-frame-pointer -fPIC -g"
cd $TP_SOURCE_DIR/$JEMALLOC_SOURCE
./configure --prefix=${TP_INSTALL_DIR} --with-jemalloc-prefix=je --enable-prof --disable-cxx --disable-libdl --disable-shared
make -j$PARALLEL
make install
mv $TP_INSTALL_DIR/lib/libjemalloc.a $TP_INSTALL_DIR/lib/libjemalloc_for_starrocks.a
export CFLAGS=$OLD_CFLAGS
}
export CXXFLAGS="-O3 -fno-omit-frame-pointer -Wno-class-memaccess -fPIC -g -I${TP_INCLUDE_DIR}"
export CPPFLAGS=$CXXFLAGS
# https://stackoverflow.com/questions/42597685/storage-size-of-timespec-isnt-known
@ -927,6 +942,7 @@ build_aliyun_oss_jars
build_aws_cpp_sdk
build_vpack
build_opentelemetry
build_jemalloc
if [[ "${MACHINE_TYPE}" != "aarch64" ]]; then
build_breakpad

View File

@ -174,6 +174,7 @@ UNZIP_CMD="unzip"
SUFFIX_TGZ="\.(tar\.gz|tgz)$"
SUFFIX_XZ="\.tar\.xz$"
SUFFIX_ZIP="\.zip$"
SUFFIX_BZ2="\.bz2$"
# temporary directory for unpacking
# package is unpacked in tmp_dir and then renamed.
mkdir -p $TP_SOURCE_DIR/tmp_dir
@ -206,6 +207,13 @@ do
echo "Failed to unzip ${!NAME}"
exit 1
fi
elif [[ "${!NAME}" =~ $SUFFIX_BZ2 ]]; then
echo "$TP_SOURCE_DIR/${!NAME}"
echo "$TP_SOURCE_DIR/${!SOURCE}"
if ! $TAR_CMD jxvf "$TP_SOURCE_DIR/${!NAME}" -C $TP_SOURCE_DIR/tmp_dir; then
echo "Failed to untar ${!NAME}"
exit 1
fi
else
echo "nothing has been done with ${!NAME}"
continue
@ -375,5 +383,14 @@ else
echo "$AWS_SDK_CPP_SOURCE not patched"
fi
# patch jemalloc_hook
cd $TP_SOURCE_DIR/$JEMALLOC_SOURCE
if [ ! -f $PATCHED_MARK ] && [ $JEMALLOC_SOURCE = "jemalloc-5.2.1" ]; then
patch -p0 < $TP_PATCH_DIR/jemalloc_hook.patch
touch $PATCHED_MARK
fi
cd -
echo "Finished patching $JEMALLOC_SOURCE"
cd -

11
thirdparty/patches/jemalloc_hook.patch vendored Normal file
View File

@ -0,0 +1,11 @@
--- include/jemalloc/jemalloc.sh 2022-05-16 18:45:40.072099757 +0800
+++ include/jemalloc/jemalloc.sh 2022-05-16 18:45:44.994620722 +0800
@@ -12,7 +12,7 @@ extern "C" {
EOF
for hdr in jemalloc_defs.h jemalloc_rename.h jemalloc_macros.h \
- jemalloc_protos.h jemalloc_typedefs.h jemalloc_mangle.h ; do
+ jemalloc_protos.h jemalloc_typedefs.h ; do
cat "${objroot}include/jemalloc/${hdr}" \
| grep -v 'Generated from .* by configure\.' \
| sed -e 's/ $//g'