|
apt-get update |
|
apt-get install google-perftools -y |
|
apt-get install bc -y |
|
chmod 777 /lib/x86_64-linux-gnu/libc.so.6 |
|
|
|
prepare_tcmalloc() { |
|
if [[ "${OSTYPE}" == "linux"* ]] && [[ -z "${NO_TCMALLOC}" ]] && [[ -z "${LD_PRELOAD}" ]]; then |
|
|
|
printf "go to this\n" |
|
LIBC_LIB="$(PATH=/usr/sbin:$PATH ldconfig -p | grep -P "libc.so.6" | head -n 1)" |
|
LIBC_INFO=$(echo ${LIBC_LIB} | awk '{print $NF}') |
|
LIBC_VER=$(echo $(${LIBC_INFO} | awk 'NR==1 {print $NF}') | grep -oP '\d+\.\d+') |
|
echo "glibc version is $LIBC_VER" |
|
libc_vernum=$(expr $LIBC_VER) |
|
|
|
libc_v234=2.34 |
|
|
|
TCMALLOC_LIBS=("libtcmalloc(_minimal|)\.so\.\d" "libtcmalloc\.so\.\d") |
|
|
|
for lib in "${TCMALLOC_LIBS[@]}" |
|
do |
|
|
|
TCMALLOC="$(PATH=/usr/sbin:$PATH ldconfig -p | grep -P $lib | head -n 1)" |
|
TC_INFO=(${TCMALLOC//=>/}) |
|
if [[ ! -z "${TC_INFO}" ]]; then |
|
echo "Check TCMalloc: ${TC_INFO}" |
|
|
|
if [ $(echo "$libc_vernum < $libc_v234" | bc) -eq 1 ]; then |
|
|
|
if ldd ${TC_INFO[2]} | grep -q 'libpthread'; then |
|
echo "$TC_INFO is linked with libpthread,execute LD_PRELOAD=${TC_INFO[2]}" |
|
|
|
export LD_PRELOAD="${TC_INFO[2]}" |
|
break |
|
else |
|
echo "$TC_INFO is not linked with libpthread will trigger undefined symbol: pthread_Key_create error" |
|
fi |
|
else |
|
|
|
|
|
echo "$TC_INFO is linked with libc.so,execute LD_PRELOAD=${TC_INFO[2]}" |
|
|
|
export LD_PRELOAD="${TC_INFO[2]}" |
|
break |
|
fi |
|
fi |
|
done |
|
if [[ -z "${LD_PRELOAD}" ]]; then |
|
printf "\e[1m\e[31mCannot locate TCMalloc. Do you have tcmalloc or gperftools installed on your system? (improves CPU memory usage)\e[0m\n" |
|
fi |
|
fi |
|
} |
|
|
|
prepare_tcmalloc |
|
rm memoryMalloc.sh |
|
|