使用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%!!!性能

相关文章
相关标签/搜索