使用tcmalloc替换系统的malloc

Posted fanlinglong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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是一个很好的线程内的内存分配器,能够提高内存分配的性能。正好今天试试能不能改善我的代码的性能。
安装的过程如下:
#1、到google下载代码:
cd /home/ahfu/temp
wget https://gperftools.googlecode.com/files/gperftools-2.1.tar.gz

#解压
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%!!!






















以上是关于使用tcmalloc替换系统的malloc的主要内容,如果未能解决你的问题,请参考以下文章

如何使用系统属性替换 Typesafe Config 文件中的占位符?

如何使用微软雅黑字体替换全部系统字体

使用tcmalloc替换系统的malloc

C语言编译系统对宏替换的处理是在啥时候进行的

gcc的替换,很有用

如何使用批处理文件中的变量查找和替换 %PATH% 系统变量中的字符串?