使用tcmalloc替換系統的malloc

https://blog.csdn.net/educast/article/details/79166553?utm_source=blogxgwz0服務器

 

今天對服務器進行壓測,模擬的請求量到4萬次/分的時候,進程的CPU佔用就已經達到400%了(也就是把四個核都佔到100%)。其實模擬的請求數據都是單一的,不會由於BUG的緣由致使CPU太高。懷疑是代碼裏的STL用得過多,加之ttserver和memcached大量的讀操做——大量的小內存分配可能帶來全局的鎖競爭,從而可能使得CPU太高。

以前據說過google的tcmalloc是一個很好的線程內的內存分配器,可以提升內存分配的性能。正好今天試試能不能改善個人代碼的性能。
安裝的過程以下:
#一、到google下載代碼:
cd /home/ahfu/temp
wget https://gperftools.googlecode.com/files/gperftools-2.1.tar.gzmemcached

#解壓
tar -zxvf google-perftools-1.4.tar.gz
#看看說明
cd google-perftools-1.4
./configure -h
#選擇簡單的安裝
mkdir -p /home/ahfu/temp/tcmalloc
./configure --disable-cpu-profiler --disable-heap-profiler --disable-heap-checker --disable-debugalloc --enable-minimal --disable-shared
make && make install
#在makefile裏面加入一行就行
LIB = "/home/ahfu/temp/tcmalloc/lib/libtcmalloc_minimal.a"
#  g++ .....   ${LIB}

再進行壓測!
大吃一驚!
請求量模擬到28萬次/分後,CPU佔用還不到20%!!!性能

相關文章
相關標籤/搜索